TU 2.5.1 Tách các lƣợc đồ module thời gian về dạng TBCNF: UT

Một phần của tài liệu Cơ sở dữ liệu thời gian (Trang 80 - 86)

chuyển đổi những lƣợc đồ module thời gian không phải ở dạng TBCNF về dạng TBCNF. Tƣơng tự dạng chuẩn BCNF truyền thống, phần tiếp theo đây sẽ trình bày một thuật toán cho phép tách các lƣợc đồ thời gian về dạng TBCNF.

Trong thuật toán này, ta sử dụng hai toán tử để tạo ra một kiểu thời gian mới từ một kiểu đã cho. Toán tử thứ nhất là gộp nhập (collapsing); cho trƣớc một kiểu thời gian  và một số nguyên dƣơng i, toán tử này cho ta một kiểu BcB bằng cách tổ hợp thời khắc ii+1 của  thành một thời khắc và giữ lại mọi thời khắc khác của . Một cách hình thức, BcB là một kiểu thời gian đƣợc định nghĩa nhƣ sau: Với mọi

       ) ( ) 1 , ( ) ( ) ( j i i j j c     với 1ji-1 với j = i với j > i

Toán tử thứ 2 đƣợc gọi là cắt tỉa (pruning); cho trƣớc một kiểu thời gian  và một số nguyên dƣơng i, toán tử này cho ta một kiểu BdB bằng cách loại bỏ thời khắc i

của kiểu  và giữ lại mọi thời khắc khắc của . Một cách hình thức, BdB là một kiểu thời gian đƣợc định nghĩa nhƣ sau: Với mọi j  1 thì:

     ) 1 ( ) ( ) ( j j j d    với 1ji-1 với j i

Hình 4 mô tả thuật toán tách TBCNF. Chúng ta phải chú ý là nếu một lƣợc đồ (RBiB, BiB) mà không ở dạng TBCNF đối với Ri F, thì khi đó tồn tại một TFD thuộc Ri F mà một trong hai điều kiện của định nghĩa về TBCNF bị vi phạm. Do

đó phép tách đòi hỏi tại bƣớc 2 bao giờ cũng thực hiện đƣợc. Thật vậy, vì (RBiB, BiB) không ở dạng TBCNF đối với Ri F do đó tồn tại X →BBA thuộc Ri F sao cho một trong hai điều kiện của TBCNF bị vi phạm.

Theo Mệnh đề 3, tồn tại υB1B,....,υBnB mà υ ≼BCB {υB1B,....,υBnB} và X →υBjB A là thuộc

i

R

F với 1 ≤ jn. Nếu X không phải là một siêu khoá của (RBiB, µBiB) (nghĩa là, điều kiện thứ nhất của TBCNF bị vi phạm), khi đó rõ ràng là mỗi X →υBjB A vi phạm điều kiện thứ nhất của TBCNF. Bây giờ giả sử rằng nếu tồn tại các số nguyên kB1B và kB2B với kB1B ≠ kB2B, và kµBiB(kB1B, k2)  υ(k) (nghĩa là điều kiện thứ 2 của TBCNF bị vi phạm). Vì υ ≼BCB {υB1B,....,υBnB} , nên tồn tại j và k‟ mà υ(k)  υBjB(k‟) . Do đó µBiB(kB1B, kB2B) 

υ(k) υBj(B k‟); nghĩa là X →υBjB A vi phạm điều khiện thứ hai của TBCNF.

Ta kết luận rằng nếu (RBiB, υBiB) là không ở dạng TBCNF đối với Ri (F), ta luôn có

THUẬT TOÁN TÁCH LƢỢC ĐỒ VỀ DẠNG CHUẨN TBCNF [6] INPUT:

Một lƣợc đồ module thời gian (R, ), với một tập F các TFDs OUTPUT:

Một phép tách không mất thông tin  của (R, ) mà mỗi lƣợc đồ thuộc  đều ở dạng TBCNF. METHOD: Ta tính toán dãy P (0) P,P (1) P....của phép tách (R, µ): Bƣớc 1: Gán P (0) P = {(R, µ)} Bƣớc 2: Giả sử P (j) P là tập cuối cùng mà ta tính đƣợc. Nếu ít nhất một lƣợc đồ thuộc P (j)

P không ở dạng TBCNF ta sẽ tính toán tiếp P

(j+1)

P nhƣ sau: Chọn một lƣợc đồ (RBiB, µBiB) trong P

(j)

P mà nó không phải ở dạng TBCNF và một TFD X →BBA thuộc Ri F mà nó vi phạm điều kiện TBCNF đối với lƣợc đồ này. Gán: P (j+1) P = (P (j) P \ {(RBiB, µBiB)}) ⋃ {(RBiB, υB1B), (RBiB - A, υB2B), (X A, υB3B)}, trong đó:

* υB1B, υB2B và υB3B là những kiểu thời gian mới đƣợc định nghĩa nhƣ sau:

o υB1B có đƣợc từ µBiB bằng cách áp dụng đệ quy toán tử cắt tỉa (pruning) để loại bỏ mọi thời khắc không rỗng của µBiB mà đƣợc phủ bởi một thời khắc nào đó của υ. Nếu υB1B cho kết quả là một kiểu thời gian rỗng, khi đó lƣợc đồ tƣơng ứng (RBiB, υB1B) là không đƣợc thêm vào P

(j+1)

P.

o υB2 Blà phần bù của υB1B, nghĩa là những thời khắc của nó là mọi thời khắc của µBiB mà chúng đƣợc phủ bởi một thời khắc nào đó của υ.

o υB3B có đƣợc từ υB2B bằng cách áp dụng đệ quy toán tử gộp nhập

(collapsing) để tổ hợp mỗi cặp của các thời khắc của υB2B mà chúng đƣợc phủ bởi một thời khắc nào đó của υ. Nghĩa là: mỗi thời khắc không rỗng của υB3B là một tổ hợp của một hay nhiều thời khắc của υB2B. Hơn nữa, không có hai thời khắc nào của υ3 đƣợc phủ bởi chỉ một thời khắc của υ. Bƣớc 2 đƣợc lặp lại cho đến khi mỗi lƣợc đồ trong P

(j)

P đều ở dạng TBCNF. Thuật toán trả về kết quả là P

(j)

P.

Định lý 5: Thuật toán trong Hình 2.5 luôn kết thúc và cho một phép tách TBCNF không mất thông tin của một lược đồ thời gian đầu vào đối với một tập đầu vào các

TFDs. [6]

Trong nhiều trƣờng hợp, Bƣớc 2 của thuật toán trên có dạng đơn giản hơn nhiều. Ví dụ, nếu µBiB là ngay và υ là thang, thì P

(j+1)

P trong Bƣớc 2 sẽ là một tập có đƣợc bởi sự thay thế (R, ngay) bằng (R\{A}, ngay) và (XA, thang). Thông thƣờng tại Bƣớc 2, nếu µBiB ≼υ và hai kiểu µBiB và υ phủ cùng những chu kỳ thời gian (thƣờng là nếu ⋃Bj≥1 BµBiB(j) = ⋃Bj≥1 Bυ(j)), thì khi đó P (j+1) P là một tập có đƣợc bởi sự thay thế (R, µBiB) trong P (j) Pbằng (R\{A}, µBiB ) và (XA, υ); nghĩa là: P (j+1) P = (P (j) P \ {(RBiB, µBiB)}) ⋃ {(RBiB - A, µBiB), (X A, υ)},

Đó là vì trong trƣờng hợp này υB1B = µBBottomB, υB2B = µBiB và υB3B = υ, và (R, υB1B) = (R,

µBBottomB) là đƣợc loại bỏ khỏi phép tách. Rõ ràng là nếu µBiB là kiểu giay(gio, ngay,

thang, tƣơng ứng) và υ là kiểu gio (ngay, thang, nam, tƣơng ứng), thì sự đơn giản hoá ở trên có thể đƣợc áp dụng.

Một chú ý quan trọng trong thuật toán tách TBCNF là nếu µ là một kiểu thời gian của lƣợc đồ module thời gian đầu vào, mọi dữ liệu là thuộc một thời khắc của

µ, và tất cả các TFDs là ở dạng cùng kiểu thời gian µ, thì khi đó thuật toán ở Hình 2.5 đƣa về thuật toán tách BCNF truyền thống (không có yếu tố thời gian).

Ví dụ 7: Trong ví dụ này chúng ta minh hoạ ứng dụng của thuật toán tách TBCNF trên lƣợc đồ module thời gian (KHOA_HOC, ngay). Ta sẽ bắt đầu với bốn ràng buộc thuộc KHOA_HOC. Chúng có thể đƣợc biểu diễn một cách tự nhiên nhƣ các TFDs sau :

(1) #KHOA_HOC µB

Top B #CHUNG_CHI

(2) #KHOA_HOC ngay #SO_HOC_VIEN

(3) #KHOA_HOC tuan GIANG_VIEN

Hai ràng buộc thời gian không thể biểu diễn đƣợc nhƣ các FDs đƣợc nắm bắt bởi các TFDs (3) và (4). Cũng phải chú ý rằng FD ngay,#KHOA_HOC 

GIANG_VIEN, LUONG_GV đƣợc nắm bắt bởi TFDs (3) và (4). Cho F biểu diễn tập các TFDs (1)...(4). Thêm vào các TFDs thuộc F, bao đóng hữu hạn của F chứa #KHOA_HOCBglb(thang, tuan) BLUONG_GV có đƣợc bằng cách áp dụng tiên đề bắc cầu mở rộng. Vì thông thƣờng thì một tháng sẽ không bắt đầu (hoặc kết thúc) vào chính xác ngày bắt đầu (hoặc kết thúc) của một tuần, glb của chúng sẽ không phải là tuan, mà là một kiểu mới. Chúng ta sẽ không thể nhận ra những loại phụ thuộc đó nếu ta bỏ qua các kiểu thời gian trong phép tách hoặc nếu ta xử lý các kiểu thời gian nhƣ những thuộc tính.

Đầu ra của thuật toán tách TBCNF mà ta đang xét là một tập các module thời gian có thể nhƣ sau:

(#KHOA_HOC,#CHUNG_CHI, µBTopB), (GIANG_VIEN,LUONG_GV, thang), (#KHOA_HOC,GIANG_VIEN, tuan), và (#KHOA_HOC,#SO_HOC_VIEN, ngay)

Đó có thể là phép tách trực giác và mong muốn nhất đối với ví dụ này. Một thứ tự khác của các TFDs thuộc bao đóng hữu hạn của F đƣợc sử dụng trong phép tách có thể đƣa ra một tập các lƣợc đồ khác, có thể bao gồm kiểu mới glb(thang, tuan). Tuy nhiên, bất kỳ thƣ tự ứng dụng nào cũng sẽ cho kết quả là một phép tách TBCNF không mất thông tin.

Bây giờ ta sẽ áp dụng lần lƣợt theo từng của bƣớc thuật toán trên để tách quan hệ KHOA_HOC.

UBƣớc 1:U Gán P

(0)

P

= {(R, ngay)} trong đó

R = #KHOA_HOC, #CHUNG_CHI, GIANG_VIEN, LUONG_GV,#SO_HOC_VIEN.

UBƣớc 2:U

(R, ngay) không phải ở dạng TBCNF vì TFD #KHOA_HOCµBTopB

#CHUNG_CHI là thuộc RF và vi phạm điều kiện TBCNF cho lƣợc đồ này. Để tính P

(1)

P

trƣớc hết ta phải xác định ba kiểu υB1B, υB2B và υB3B. Chú ý là trong trƣờng hợp này µBiB= ngay và υ = µBTopB. Vì ngay ≼µBTopB và cả hai kiểu là phủ toàn bộ thời gian tuyệt đối, ta biết rằng υ1= µBottomB, υ2 = ngay và υ3 =µTop. Do đó ta có:

P

(1)

P

= {(R \ {CHUNG_CHI}, ngay), ( #KHOA_HOC,CHUNG_CHI, µBTopB)}

Lần lặp 2.

Phụ thuộc hàm GIANG_VIEN thang LUONG_GV là thuộc R'F trong đó R‟ = R \ {CHUNG_CHI} và vi phạm các điều kiện TBCNF cho lƣợc đồ (R \ {#CHUNG_CHI}, ngay). Lúc này µBiB= ngay và υ = thang. Thậm chí trong trƣờng hợp này υB1B, υB2B, υB3B là có thể dễ dàng tìm đƣợc do ngay ≼ thang và cả hai kiểu phủ lên toàn bộ thời gian tuyệt đối. Do đó:

P

(2)

P

= {(#KHOA_HOC, CHUNG_CHI, µBTopB), (GIANG_VIEN,LUONG_GV, thang),

(#KHOA_HOC,GIANG_VIEN,#SO_HOC_VIEN,ngay)}.

Lần lặp 3.

Phụ thuộc hàm thời gian #KHOA_HOC tuan GIANG_VIEN là thuộc '

R

F trong đó R‟ = R \ {CHUNG_CHI,LUONG_GV} và vi phạm các điều kiện TBCNF cho lƣợc đồ thứ ba của P

(2)

P. Lúc này µBiB= ngay và υ = tuan. Ngay cả trong trƣờng hợp này υB1B, υB2B, υB3Blà có thể dễ dàng tìm đƣợc do ngay≼ tuan và cả hai kiểu phủ lên toàn bộ thời tuyệt đối. Do đó:

P

(3)

P

= {(#KHOA_HOC, CHUNG_CHI, µBTopB), (GIANG_VIEN,LUONG_GV, thang), (#KHOA_HOC,GIANG_VIEN, tuan), (#KHOA_HOC,#SO_HOC_VIEN,ngay)}.

Thuật toán đếnđây dừng lại, vì mỗi lược đồ của P

(3)

2.6. BẢO TOÀN PHỤ THUỘC:

Một phần của tài liệu Cơ sở dữ liệu thời gian (Trang 80 - 86)

Tải bản đầy đủ (PDF)

(120 trang)