Trong cỏch tiếp cận này, một mụ hỡnh dữ liệu đa chiều đƣợc xõy dựng trờn một tập cỏc chiều. Gọi D = D1, D2,..,Dx là tập cỏc chiều; M = M1, M2,..,My là tập cỏc độ đo; C = C1, C2,..,Cz là tập cỏc khối dữ liệu. Mỗi chiều tồn tại một tập cỏc mức, một chiều là một mắt lƣới của cỏc mức, mối quan hệ phõn mức giữa cỏc chiều thành phần đƣợc chia ra thành cỏc miền phõn mức trờn chiều, một miền phõn cấp chiều là một tập cỏc chiều thành phần, đƣợc tổ chức trong cỏc mức phõn cấp, tƣơng ứng với cỏc mức khỏc nhau, điều này cho phộp xem xột một giản đồ chiều nhƣ một tập cỏc mức cục bộ cú thứ tự. Mỗi đƣờng dẫn trong lƣới của một phõn cấp chiều bắt đầu từ mức giới hạn cao nhất dọc theo lƣợc đồ chiều đến thấp nhất (bắt đầu ở mức gốc và kết thỳc ở mức lỏ) gọi là đƣờng dẫn chiều, núi cỏch khỏc đƣờng dẫn chiều là danh sỏch tuyến tớnh cỏc mức đƣợc sắp xếp. Kết quả là cỏc chiều với bất ký độ phức tạp nào trong cấu trỳc cú thể đƣợc mụ tả trong mụ hỡnh này.
Vùng N-ớc All T.Phố Địa lý Quí Năm All Tháng Tuần Ngày Thời gian Nhóm SP Sản phẩm All Mặt hàng Sản phẩm Hỡnh 8. Cỏc chiều và phõn cấp chiều
all 2003 Q1.2003 1.2003 2.2003 3.2003 T1.2003 T5.2003 T9.2003 1.1.2003 6.1.2003 1.2.2003 3.2.2003 3.3.2003
Hỡnh 9. Một thể hiện của chiều thời gian
1.1 Cỏc khỏi niệm về chiều
Ta cú cỏc định nghĩa sau về chiều trong CSDL đa chiều [13,12]:
Định nghĩa 1: Miền phõn cấp chiều
Miền phõn cấp của một chiều D là một tập khỏc rỗng, ký hiệu là dom(D) và dom(D)= all dm1,.., dmn, trong đú mỗi phần tử chiều dmi là mục dữ liệu bờn trong một chiều.
Cú thể sử dụng đồ thị thể hiện mối quan hệ miền phõn cấp kớ kiệu GM = (V,E), trong đú:
- V = dom(D): tập cỏc đỉnh thể hiện phõn cấp cỏc chiều.
- E dom(D) x dom(D), với (dmi,dmj) E: dmi dmj là cỏc cạnh thể hiện quan hệ cú thứ tự theo phõn cấp.
- Hai toỏn tử +,-: dmi dom(D) ta cú:
o - (dmi) = dmj dom(D): dmj M dmi
o + (dmi) = dmk dom(D): dmi M dmk
- Phần tử gốc (all): (! all dom(D))(dm dom(D): dm M all) - Phần tử lỏ: (dmi dom(D))(dmj dom(D), i j: dmi M dmj) Vớ dụ hỡnh vẽ thể hiện một cõy của chiều thời gian, ta cú:
- dom(Thời gian) = all, 2003, Q1.2002,.., 3.3.2003 - all M 2003, 2003 M Q1.2003, ..., 3.2003 M 3.3.2003
- - (2003) = all; +(2003) = Q1.2003, T1.2003, T5.2003, T9.2003
Giả sử Levels(D) = All (l1,..,lh) với h N , là tập cỏc mức của chiều D, Trong đú:
- Tập con {dom(l1),..,dom(lh)} là bộ phận của dom(D) - Mức gốc (All): !All Levels(D): dom(All) = all
- Mức lỏ: {li Levels(D) | dmj dom(li): dmj là phần tử lỏ}
Vớ dụ chiều thời gian cú Levels(Thời gian) = {All,Năm,Quớ,Thỏng,Tuần,Ngày} và: - dom(All)= {all} - dom(Năm)={2003} - dom(Quớ)= {Q1.2003} - dom(Thỏng)= {1.2003, 2.2003, 3.2003} - dom(Tuần)={T1.2003, T5.2002, T9.2003} - dom(Ngày)= {1.1.2003, 6.1.2003, 1.2.2003, 3.2.2003, 3.3.2003}
Định nghĩa 3: Lược đồ chiều
Lƣợc đồ của một chiều D, ký hiệu là Dschema(D) = Levels(D), L là tập cỏc mức bộ phận cú thứ tự (cỏc mức đƣợc sắp xếp)
- Levels(D) là tập cỏc mức chiều
- L là mối quan hệ cú thứ tự toàn bộ cỏc mức và thoả món điều kiện: li L lj nếu (dmt dom(li)) và (dmu dom(lj)): dmt L dmu
Vớ dụ: Dschema(Địa lý)={All L Nƣớc, Nƣớc L Vựng, Vựng L Thành phố}
Định nghĩa 4: Đường dẫn chiều
Đƣờng dẫn trong một lƣợc đồ chiều là danh sỏch tuyến tớnh cỏc mức đƣợc sắp xếp. Đƣợc định nghĩa nhƣ sau:
li, lj Levels(D) ta cú: path(li, lj) =
Định nghĩa 5: Phõn cấp chiều
Phõn cấp chiều đƣợc định nghĩa bởi đƣờng dẫn chiều path(All,llỏ) trong lƣợc đồ của chiều D, bắt đầu ở mức gốc và kết thỳc ở mức lỏ. Giả sử H(D) = {h1,.., hm}, với
li L lj nếu li L lj
li L lt,.., lu L lj nếu lt,.., lu Levels(D): li L lt,.., lu L lj
m N là tập cỏc phõn cấp của chiều D. Trƣờng hợp m = 1 thỡ chiều cú cấu trỳc phõn cấp đơn, cỏc trƣờng hợp khỏc gọi là chiều cú cấu trỳc đa phõn cấp.
Định nghĩa 6: Cỏc toỏn tử chiều
Cú hai toỏn tử chiều, giả sử đặt tờn cho hai toỏn tử đú là ancestor và descendant, hai toỏn tử này để đƣa ra cỏc khả năng dẫn hƣớng dọc theo một cấu trỳc chiều, đƣợc định nghĩa một cỏch đệ quy nhƣ sau:
li, la, ld Levels(D) và dm dom(li) dom(D): ancestor (dm, la,D) = Trong đú dm- = ancestor (dm, lp, D): lp L li decendant (dm, ld,D) = Trong đú dm+ = decendant (dm, lp, D): lp L l Vớ dụ theo hỡnh vẽ trờn ta cú:
- ancestor (Q1.2003, Năm, Thời gian) = 2003
- decendant (Q1.2003, Thỏng, Thời gian) = 1.2003, 2.2003, 3.2003
1.2 Độ đo
Độ đo (measure) là đối tƣợng phõn tớch chớnh trong mụ hỡnh CSDL đa chiều [12,13].
Định nghĩa 1: Lược đồ độ đo
Một lƣợc đồ độ đo M là một bộ đụi của cỏc bảng Sự kiện và phộp toỏn đƣợc ỏp dụng cho bảng sự kiện. Ký hiệu lƣợc đồ độ đo Mschema(M)=<Fname,O> trong đú:
- Fname là tờn của bảng sự kiện tƣơng ứng
- O {Sum, Count, Max, Min} {None, Composite} là phộp toỏn đƣợc ỏp dụng cho một bảng sự kiện riờng biệt, trong đú: Composite là một toỏn tử (vớ dụ tớnh trung bỡnh) mà độ đo khụng thể đƣợc sử dụng để tự động nhận đƣợc Khụng xỏc định – nếu path(la, li) = dm- dom(la): dm- -(dm) - nếu la L li ancestor (dm-, la, D) - trong trƣờng hợp khỏc Khụng xỏc định – nếu path li, ld) = dm+ dom(ld): dm+ +(dm) - nếu li L ld decendant (dm+, ld, D) - trong trƣờng hợp khỏc.
từ cỏc tổng hợp ở mức cao hơn. Cũn độ đo None là cỏc độ đo khụng đƣợc tớnh toỏn gộp. Trong trƣờng hợp đú độ đo là sự kiện.
Định nghĩa 2: Miền của độ đo
Giả sử cho V là một miền giỏ trị của độ đo (V cú thể là tập số N hoặc Z, hoặc R). Miền của độ đo M là một tập con của V ta ký hiệu là dom(M) V.
1.3 Khối dữ liệu
Một khối đa chiều là đƣợc xõy dựng trờn một tập cỏc chiều và một tập cỏc độ đo. Khối đa chiều bao gồm một tập cỏc ụ. Mỗi ụ là giao của giữa tập cỏc chiều thành phần và cỏc giỏ trị của độ đo. Hơn nữa cỏc ụ đƣợc nhúm lại thành cỏc nhúm, mỗi nhúm thể hiện ỏnh xạ từ cỏc miền x-bộ của cỏc mức độ đo (biến độc lập) tới cỏc miền y-số của cỏc độ đo (biến phụ thuộc). Vớ dụ khối dữ liệu đa chiều nhƣ sau:
Thời gian 10 15 20 12 50 1 2 3 4 5 S ả n p h ẩ m Địa lý Hà nội Hải phòng TP.HCM Quạt TIvi Đầu Video Radio Băng
Hỡnh 10. Khối bỏn hàng gồm cỏc chiều: Địa lý, Sản phẩm, Thời gian và bảng sự kiện Bỏn hàng
Cho tập cỏc chiều D = D1, D2,..,Dx; x N và một tập cỏc độ đo: M = M1, M2,..,My; yN. Ta cú [12,13]:
Định nghĩa 1: Lược đồ khối
Một lƣợc đồ khối là một bộ CSchema(C) = Cname, Dschemas, MSchemas : - Cname: là tờn của khối
- Dschemas là cỏc lƣợc đồ của x chiều, đƣợc ký hiệu bởi: Dschemas=Dschema(D1), .., Dschema(Dx)
- Mschemas là cỏc lƣợc đồ của y độ đo, đƣợc ký hiệu bởi Mschemas =
Mschema(M1), .., Mschema(My)
Định nghĩa 2: Miền của khối
Cho một hàm f: dom(D1)* ..* Dom(Dx)* dom(M1)*..*dom(My) -> {True, False} Miền của khối đƣợc ký hiệu là dom(C) = {c1,..,ck}, kN đƣợc xỏc định nhƣ sau: dom(C) = {c = (dms,fms) | dmsdom(D1)*..*dom(Dx), fms dom(M1)*..* dom(My): f(dms,fms) = True}
1.4 Cỏc phộp toỏn trong mụ hỡnh đa chiều
Cỏc phộp toỏn trong khối đa chiều bao gồm cỏc phộp toỏn: phộp toỏn nhúm, phộp toỏn cuộn lờn, phộp toỏn khoan sõu [12,13].
Giả sử một khối C đƣợc tạo thành bởi x (xN) chiều D1,..,Dx, và y (yN) độ đo M1,..,My
Định nghĩa 1: (Phộp nhúm)
Nhúm là một bộ ba G = Gname, Gschemas(G), dom(G). Trong đú: - Gname: Là tờn của nhúm
- Gschema = Glevels(G), GMschema(G):
o Glevels(G) = lD1, lD2,.., lDx Levels(D1).. Levels(Dx) là một x - bộ cỏc mức của x - chiều D1,..,Dx với x N.
o GMschemas(G) = Mschema(M1),.., Mschema(My) là một y - bộ lƣợc đồ độ đo của y - độ đo M1,.., My với y N.
- dom(G) = c = dms, fms dom(C) | dms dom(lD1 *..* dom(lDx), fms
dom(M1) *..* dom(My)
Giả sử hi là một số của cỏc mức của mỗi chiều Di (1 i x). Tập hợp cỏc nhúm trờn một khối C là Groupbys(C) = G1,..,Gp, p = hi
Định nghĩa 2: (Cỏc toỏn tử khối)
Cú ba toỏn tử khối dẫn hƣớng cơ bản là: Phộp nhẩy (Jumping), phộp cuộn lờn (RollingUp), khoan sõu xuống (DrillingDown) trong một khối dữ liệu C, tƣơng ứng với một chiều Di đƣợc định nghĩa nhƣ sau: Cho một nhúm Gc, đƣợc kết hợp với một mức lc của một chiều Di, và ba mức khỏc là lj, lr, ld Levels(Di).
- Toỏn tử nhẩy: jumping(Gc, lj, Di) = Gj = Glevels(Gj), GMschema(Gj). Trong đú:
o GMschema(Gj) = GMschema(Gc) và Glevels(Gj)
o Glevels(Gj)(i) = lj, Glevels(Gj)(k) = Glevels(Gc)(k), k <> i - Toỏn tử cuộn lờn: dm dom(lc), Gr = jumping(Gc, lr, Di):
rollingUp(Gc, dm, lr, Di) = Grsub = Gschema(Grsub), dom(Grsub)
Trong đú:
o Gschema(Grsub) = Gschema(Gr)
o dom(Grsub) = cr dom(Gr) | c dom(Gc): c.dms(i) = dm, cr.dms(i) = ancestor (dm, lr, Di), cr.dms(j) = c.dms(j), j <> i
- Toỏn tử khoan sõu: dm dom(lc), Gd = jumping(Gc, ld, Di): drillingdown(Gc, dm, ld, Di) = Gdsub = Gschema(Gdsub), dom(Gdsub)
Trong đú:
o Gschema(Gdsub) = Gschema(Gd)
o dom(Gdsub) = cd dom(Gd) | c dom(Gc): c.dms(i) = dm, cd.dms(i) = desendant (dm, lr, Di), cd.dms(j) = c.dms(j), j <> i