4. Mơ hình cơ sở dữ liệu đa chiều (Modeling Multidimensional Databases)
4.2. Mơ hình dữ liệu đề xuất
4.2.1. Mơ hình
Bây giờ chúng ta thảo ra mơ hình cơ sở dữ liệu đa chiều như trong đề án với các phép tốn cĩ chức năng hiện tại cung cấp bởi các sản phẩm cơ sở dữ liệu đa chiều và thêm vào đĩ các chức năng mong muốn đề cập ở trên. Thiết kế của chúng ta được thực hiện bởi những cách nghiên cứu dưới đây:
Nghiên cứu các chiều và các dữ kiện theo đối xứng.
Nâng cao tính linh hoạt (đa phân cấp, khối tập hợp đặc biệt)
Hạn chế số lượng phép tốn
Hướng theo khối quan hệ nếu cĩ thể. Chuyển các phép tốn sang truy
vấn SQL
Trong mơ hình logic của chúng ta, dữ liệu được tổ chức trong một hoặc nhiều khối đa chiều. Một khối cĩ các thành phần sau:
k chiều, và với mỗi chiều cĩ tên Di, một phạm vi xác định domi từ các giá trị cĩ được.
Các thành phần định nghĩa như là một ánh xạ E(C) từ tập domi x ...
domk đến n-tuple, 0 hoặc 1. Vì vậy, E(C)(d1 . . . dk) qui vào thành phần này tại “vị trí” d1,…dk của khối C.
Vì thế, mơ hình khơng yêu cầu chiều phải được sắp xếp, miền xác định gián đoạn.
Bộ phận của siêu dữ liệu là một n-tuple của các định danh (names) mà
mỗi một định danh miêu tả một thành phần của thành phần n-tuple của khối.
Chú ý rằng, nếu khối này khơng cĩ các thành phần n-tuple thì sự mơ tả là tuple rỗng.
Các thành phần của khối cĩ thể là 0 hoặc 1 hoăc một n-tuple <X1,…Xn>. Nếu thành phần này tương ứngvới E(C)(d1,…,dk) là 0 thì giá trị nối các chiều đĩ là khơng tồn tại trong cơ sở dữ liệu này. Là 1 cho biết sự tồn tại của kết hợp riêng biệt đĩ. Cuối cùng, một n-tuple cho biết rằng thơng tin thêm vào là cĩ giá trị cho liên kết các chiều này. Nếu một số thành phần của khối là 1 thì khơng cĩ thành phần nào cĩ thể là một n-tuple và ngược lại. Chúng ta chỉ mơ tả các giá trị theo một chiều của khối mà tối thiểu một thành phần của khối khác 0. Nếu tất cả các thành phần của khối là
0 thì khối là rỗng. Thêm vào đĩ, nếu miền domi của chiều Di khơng cĩ giá trị thì khối cũng bị xem như rỗng.
Trong mơ hình của chúng ta khơng cĩ sự phân biệt giữa dữ kiện và chiều. Vì vậy, trong ví dụ 4.1.1, bán hàng là một chiều khác (khơng giống như trong hệ trống cơ sở dữ liệu đa chiều mà xem bán hàng là một “dữ kiện” hoặc “thành phần”). Lưu ý rằng đây là một mơ hình logic và khơng ép buộc cơ chế lưu trữ. Vì vậy, một khối trong mơ hình dữ liệu của chúng ta cĩ thể cĩ nhiều chiều logic hơn số chiều dùng để lưu trữ vật lí khối trong hệ thống lưu trữ đa chiều.
4.2.2. Các phép tốn
Bây giờ chúng ta bàn đến phép tốn đa chiều. Chúng ta minh họa các phép tốn sử dụng một tập hợp 2 chiều của khối đã trình bày trong ví dụ 4.1.1. Chúng ta khơng
quan tâm đến chiều Supplier và chỉ hiển thị chiều product, date và sales trong Hình 4.2. Lưu ý rằng trong mơ hình này, sales khơng phải là một dữ kiện nhưng chiều khác, mặc dù chỉ là logic.
Hình 4.2.Khối logic trong đĩsaleslà một chiều.
Để tính tốn trên khối logic, chiều bán hàng (sales) cĩ thể phải được bao phủ trong khối như thế giá trị bán coi như đã được xác định bởi chiều product và chiều
date. Chúng ta mơ tả điều đĩ thực hiện thế nào. Bây giờ chúng ta sẽ sử dụng khối với giá trị bán hàng (sales) như là thành phần đơn của các thành phần của khối. Theo đĩ, giá trị <15> với “date = mar 4” và “product=p1” trong hình 4.3 mơ tả rằng thành phần trong khối logic Hình 4.2 tương ứng với “date = mar 4” và “product=p1” và “sales=15” là “1”. Chúng ta trình bày dạng siêu dữ liệu như là một sự chú giải trong khối.Vì vậy, <sales> trong hình 4.3 mơ tả rằng mỗi thành phần trong khối là một giá trị bán.
Date Mar 4 Feb 3 Feb 2 Jan 1 25 20 15 10 Sales p1 p2 p3 p4 Product
Hình 4.3 Phép mở rộng trên chiều Product
Chúng ta định nghĩa các phép tốn sử dụng một khối C với k chiều. Chúng ta qui các chiều là D1,….Dk. Chúng ta sử dụng Di cũng xem như là miền của chiều Di trong tình huống cần dùng rõ ràng; mặt khác, chúng ta xem miền của chiều Di là domi(C).
Chúng ta sử dụng các kí tự thường như: a, b, c để chỉ các hằng số.
Các giá trị của chiều trong mơ hình dữ liệu của chúng ta về mặt chức năng xác định các thành phần của khối. Như một kết quả ứng dụng của phép tốn, nhiều hơn giá trị một thành phần cĩ thể vạch ra thành phần tương tự (tức là liên kết tương tự của các giá tri của các thuộc tính chiều) của khối trả lời. Các giá trị của các thành phần này được hợp lại thành một giá trị để duy trì phụ thuộc chức năng bằng cách định rõ cái mà chúng ta gọi là thành phần chức năng liên kết, kí hiệu là felem.
Đơi khi chúng ta cũng hợp nhất giá trị theo chiều. Chúng ta gọi các chức năng sử dụng cho mục đích này là các chức năng hợp nhất chiều, kí hiệu là fmerge.
a. Phép tốn mở rộng (Push)
Phép tốn mở rộng (xem hình 4.3) được sử dụng để chuyển các chiều sang các
thành phần mà cĩ thể sử dụng khéo léo chức năng felem. Phép tốn này là cần thiết để cho phép chuyển các chiều và các dữ kiện được xem như đều.
• Vào: C, Di
• Ra: C với mỗi thành phần non-0 mở rộng bởi một thành phần thêm vào, giá
trị của chiều Di cho thành phần đĩ. Nếu một thành phần khơng phải là một n- tuple nhưng là “1” thì nĩ chuyển thành một 1-tuple mà bao gồm giá trị tương ứng của chiều.
• Tính tốn: push(C, Di)=Ca.
E(Ca)(d1,…,dk) = g ⊕ di trong đĩ g = E(C)(d1,…,dk). Tốn tử ⊕ được xác định là bằng 0 nếu g = 0, bằng <di> nếu g = 1 và trong các trường hợp cịn lại nĩ nối 2 tuple (g và <di> ).
Phép tốn Pull là chuyển đổi của phép push. Pull tạo lập một chiều mới cho việc xác lập bộ phận của các thành phần (elements). Phép tốn này hữu dụng để chuyển một thành phần thành một chiều vì vậy thành phần này cĩ thể sử dụng cho việc kết hợp và nối . Phép tốn này cũng cần thiết cho việc xử lý tính đối xứng của các chiều và các sự kiện.
Hình 4.4 Chuyển số đầu của mỗi thành phần thành chiều sales
• Vào: C, chiều mới tên D, số nguyên i.
• Ra: Ca với chiều thêm vào D mà tính được bằng cách lấy ra phần tử thứ i của mỗi phần tử của ma trận.
Điều kiện: tất cả các phần tử non-0 của C là n-tuples bởi vì mỗi phần tử non- 0 cần ít nhất 1 thành phần để cĩ thể tạo lập một chiều mới.
• Tính tốn: Pull(C, D, i) = Ca, , l ≤ i ≤ n D kể từ chiều thứ k+1 của khối
Domk+1(Ca)(d1,…,dk, ei) = <e1,…,ei-1,ei+1,…en> nếu E(C)(d1,…,dk) = <e1,…,ei, …,en>, ngược lại E(Ca)(d1,…,dk,ei) = 0.
Lưu ý: Nếu n =1 thì phần tử của Ca là ‘1’ hoặc ‘0’.
c. Phép tốn xĩa chiều (Destroy)
Thơng thường chiều của một khối nào đĩ cần giảm. Phép tốn này xĩa chiều D
mà trong đĩ miền của nĩ cĩ giá trị đơn. Sự xuất hiện của giá trị đơn đưa đến k-1
chiều cịn lại, cĩ một khối k-1 chiều duy nhất. Vì vậy, nếu chiều bị loại ra thì kết quả k-1 khoảng trống chiều bị chiếm bởi một khối duy nhất
• Vào: C, chiều cĩ tên Di
• Ra: Ca khơng cĩ chiều Di
Điều kiện: Di chỉ cĩ một giá trị v
• Tính tốn: Destroy(C, Di) = Ca
Ca cĩ k-1 chiều D1 . . . Di-1, Di+1, . . . , Dk,
E(Ca)(d1 . . . di-1,di+1, . . . , dk) = E(C)(d1, . . . ., dk).
Một chiều đa giá trị khơng thể xĩa ngay lập tức bởi vì sau đĩ các phần tử hơn nữa chức năng đã được xác định rõ bởi các giá trị của chiều. Một chiều đa giá trị được xĩa bởi lần đầu tiên thi hành một phép tốn kết hợp (miêu tả sau) và sau đĩ thi hành phép tốn trên. Chý ý, nếu k =1 chúng ta lấy zero dimensional cube hoặc một đại lượng vơ hướng giống như kết quả của phép tốn xĩa.
d. Phép tốn giới hạn (Restriction).
Phép tốn giới hạn thực hiện trên một chiều của khối và loại bỏ các giá trị khối
của chiều mà khơng thỏa mãn điều kiện đã phát biểu. Hình 4.5 minh họa một ứng
dụng của giới hạn (restriction). Lưu ý rằng phép tốn này thực hiện chia ra từng khối nhỏ của khối trong hệ thống thuật ngữ cơ sở dữ liệu đa chiều.
Hình 4.5 Phép tốn giới hạn
• Vào: Khối C và P định nghĩa dựa vào Di
• Ra: khối mới Ca tính được bằng cách loại bỏ từ C những giá trị của chiều Di
mà khơng thỏa mãn khẳng định P. Chúng ta cĩ nhiều khái niệm của xác nhận
vậy, P cĩ thể cũng khơng lớn hơn 5 giá trị mà được ước tính trên các giá trị đơn tiếp theo hoặc từ một tập giá trị như là “5 giá trị cao nhất” được ước tính trên miền xác định Di và xuất ra tập các giá trị. nếu khơng cĩ phần tử nào của chiều Di thỏa mãn P thì Ca là một khối rỗng.
• Tính tốn: Restriction(C, Di, P) = Ca
domj(Ca) = domj(C) nếu 1 ≤ j ≤ k & j ≠ i , ngược lại domj(Ca) = P(domj(C)). E(Ca)(d1,…,dk) = E(C)(d1,…,dk)
e. Phép tốn nối (join)
Phép nối được sử dụng để liên kết thơng tin của 2 khối. Kết quả nối một khối C m-chiều với khối C1 n-chiều trên kchiều gọi là phép nối chiều (joining dimensions)
là khối Ca với m+n-k chiều. Mỗi chiều nối Di của Ckết hợp chính xác với một chiều
Dxi của C1; cĩ được kết quả chiều Di của Ca như sau:
Mỗi chiều nối, hai hàm ánh xạ được sử dụng cho việc ánh xạ tương ứng chiều nối của C và C1 vào trong chiều kết quả của Ca. Các phần tử của khối kết quả Ca
tính được bằng cách liên kết tất cả các chiều của C và C1 theo hàm felem để chỉ ra các thành phần tương tự của Ca .
Hình 4.6 minh họa khối C nối với khối C1 theo chiều D1 (hàm ánh xạ đồng nhất). Chiều D1 của khối kết quả chỉ cĩ 2 giá trị. Hàm felem chia giá trị phần tử của khối C bởi giá trị phần tử của khối C1. Nếu phần tử nào đĩ là 0 thì phần tử kết quả cũng là 0. Các giá trị của chiều kết quả mà chỉ cĩ các thành phần 0 tương ứng với chúng bị loại ra khỏi Ca (giống giá trị 0 và 3 của chiều D1). Việc loại ra này là một kết quả của thể hiện trong khối, chỉ với các giá trị theo chiều mà cĩ ít nhất là một phần tử non–0.
Hình 4.6 Khối C nối với khối C1 theo chiều D1
• Vào: C với các chiều D1,…Dm và C1 với các chiều Dm-k+1…Dn. Với Dm-k+1, …,Dmlà những chiều nối (khơng mất tính tổng quát). kánh xạ hàm fm-k+1,…fm
xác định trên các chiều Dm-k+1,…Dm của C và k ánh xạ hàm f’m-k+1,…,f’m xác định trên các chiều Dm-k+1,…Dm của C1. Ánh xạ fi áp dụng cho giá trị v∈
domi(C) cho ra các giá trị cho chiều Di trong khối Ca. Tương tự, f’i áp dụng cho giá trị v’ ∈ domi(C) cho ra các giá trị theo chiều Di trong khối Ca. Cũng cần một hàm felem để liên kết các thành phần của C và C1 để đưa ra các thành phần của Ca.
• Ra: Ca với n chiều, D1,…Dn. Nhiều phần tử trong C và C1 cĩ thể đặt ánh xạ đến như một phần tử như trong Ca. Tất cả các thành phần của C và C1 cũng đặt ánh xạ đến như một điểm trong Ca được liên kết bởi hàm felem để đưa ra các thành phần của Ca. Nếu một vài giá trị v của chiều Di, các thành phần
E(Ca)(x1…xi, v , xi+1,…,xn) là 0 cho tất cả các giá trị của các chiều khác , v
khơng được tính đến trong chiều Di của Ca.
• Tính tốn: Join(C, C1, [fm-k+1,…,fm,f’m-k+1,…,f’m], felem) = Ca
domi(Ca) = domi(C) nếu 1 ≤ i ≤ m - k domi(Ca) = domi(C1) nếu m+1 ≤ i ≤ n
domi(Ca) = {da | da ∈ fi(d), d ∈ domi(C) OR da ∈ f’i(d’), d’∈ domi(C1)} E(Ca) (d1, . . . , da m - k , . . . da m , . . . , dn) = f elem({t1}, {t2}) Trong đĩ t1 = E(C)(d1,…dm-k,…,dm), t2 = E(C1)(d’m-k,…d’m,dm+1,…,dn) và dia ∈ fi(di) OR dia∈f’i(d’i) với m-k<=i<=m
Chúng ta xác định một số khái niệm ở trên của phép nối nĩ bao gồm các trường hợp đặc biệt quan trọng. Chủ yếu là các phép tĩan: Tích Đề các sản phẩm (cartesian product), nối tự nhiên (natural join), hợp (union), trộn (kết hợp-
merge) và liên kết (associate). Trong trường hợp tích Đề các sản phẩm, hai khối khơng cĩ chiều nối chung. Trong trường hợp nối tự nhiên hàm ánh xạ dùng để đồng nhất và chức năng felem là “0” bất cứ khi nào cĩ một trong những phần là ‘0’. Các trường hợp nhỏ phép hợp và trộn (kết hợp) sẽ được thảo luận sau .
Kết hợp (Associate) đặc biệt hữu dụng với trường hợp nhỏ trong ứng dụng
OLAP cho việc tính tốn như là “Hiển thị nhanh lượng bán hàng mỗi tháng như tỉ
lệ phần trăm bán hàng hằng quí”. Kết hợp là bất đối xứng và yêu cầu mỗi chiều của
C1 được nối với một số chiều của C.
Hình 4.7 Kết hợp hai khối
Hình 4.7 minh họa liên kết khối C1 với khối C mà chiều tháng (month) của C1
và chiều ngày (date) của C được nối bằng cách ánh xạ chúng vào chiều ngày (date) của Ca. Tương tự category và product được nối bằng cách ánh xạ chúng vào chiều
product của Ca. Với chiều tháng (month), mỗi tháng được ánh xạ tới tất cả các ngày trong tháng đĩ. Với chiều category, gía trị cat1 được ánh xạ vào product p1 và p2,
cat2 được ánh xạ vào product p3 và p4. Với chiều date và product ánh xạ đồng nhất được sử dụng. Hàm felem chia giá trị phần tử của khối C cho giá trị phần tử của khối
C1. Nếu phần tử nào đĩ bằng 0 thì phần tử kết quả cũng bằng 0. Lưu ý, giá trị mar4
được rút ra từ Ca bởi vì tất cả các phần tử tương ứng nĩ bằng 0.
Phép kết hợp là một phép tốn tập hợp. Nĩ được minh họa ở Hình 4.8. Hình minh họa cách phân cấp trong cơ sở dữ liệu đa chiều được thực hiện bởi phép tốn kết hợp.
Bằng trực quan, hàm kết hợp chiều được sử dụng để ánh xạ nhiều tên product
vào trong một hoặc nhiều categories và hàm khác được dùng để ánh xạ riêng dates
vào tháng tương ứng. Vì vậy nhiều thành phần trong một chiều được kết hợp với chiều product với miền nhỏ hơn nếu cĩ thể. Kết quả của sự kết hợp mỗi chiều này là nhiều thành phần trong khối đầu tiên ánh xạ đến các thành phần tương tự trong khối mới. Một thành phần liên kết hàm được dùng để chỉ rõ làm thế nào để nhiều thành phần này được tập hợp lại. Trong ví dụ ở hình 4.8, hàm tập hợp felem là Sum.
Hình 4.8 Kết hợp chiều Date và chiều Product sử dụng hàm felem= sum
Thơng thường, hàm kết hợp chiều cĩ thể là một hoặc nhiều ánh xạ nĩ một thành phần ở mức thấp hơn vào các thành phần ở mức cao hơn của các phân cấp. Chẳng hạn, ánh xạ 1→ n cĩ thể dùng để kết hợp một product theo n categories cho việc điều khiển phân cấp đa chiều.
• Vào: C, hàm felem để kết hợp các thành phần với m cặp (chiều, hàm). Khơng mất tính tổng quát, giả sử m cặp là [D1, f1],…, [Dm, fm].
• Ra: Khối Ca of same dimentionality as C. Chiều Di được kết hợp như là mỗi hàm fi. Một thành phần tương ứng với các thành phần kết hợp được tập hợp lại như là mỗi felem.
• Tính tốn: Merge(C,{[D1,f1],…,[Dm, fm]}, felem) = Ca.
domi(Ca) = {fi(e) | e∈domi(C)} nếu 1 ≤i ≤ m
E(Ca) (d1, . . . , dk) = felem ({ t | t = E(C) d’1 , . . . , d’k)
Trong đĩ: fi(d’i) = di nếu 1 ≤ i ≤ m ngược lại d’i = di }).
Trường hợp đặc biệt của phép tốn kết hợp là khi tất cả các hàm kết hợp là đồng nhất với nhau. Trong trường hợp đĩ, phép tốn kết hợp cĩ thể sử dụng một hàm
felem áp dụng cho mỗi thành phần của khối.
Nhận xét
Phép tốn kết hợp khơng phải là bộ phận trong tập các phép tốn cơ bản. Nĩ cĩ thể được tính nhanh như một trường hợp đặc biệt của tự nối của một khối sử dụng phép biến đổi fmerge trên các chiều đang được kết hợp và các hàm biến đổi đồng nhất