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

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

yếu tố thời gian), ta phải trả giá bằng việc không bảo toàn một vài phụ thuộc [Ullman 1988]. Vì dạng chuẩn BCNF (không có yếu tố thời gian) là một trƣờng hợp đặc biệt của TBCNF, nên không có gì ngạc nhiên khi phép tách về dạng chuẩn TBCNF có thể không bảo toàn mọi TFDs. Điều ngạc nhiên là cho dù nếu một lƣợc đồ module chỉ có hai thuộc tính, sự dƣ thừa có thể không phải là hoàn toàn đƣợc loại bỏ mà không mất TFDs (vì nếu một lƣợc đồ quan hệ không mang yếu tố thời gian mà chỉ có hai thuộc tính thì lƣợc đồ đó luôn ở dạng BCNF và do đó sẽ không có dƣ thừa). Ví dụ, xét lƣợc đồ thời gian (AB, ngay) với TFDs A →BtuanB B

A →BthangBB. Rõ ràng là (AB, ngay) không phải ở dạng chuẩn TBCNF. Bằng cách áp dụng thuật toán tách về dạng TBCNF ở trên, {( A, ngay), ( AB, thang)} có thể là một phép tách không mất thông tin. Tuy nhiên TFD A →BtuanB B không thế đúng trong cả hai lƣợc đồ đó. Thực tế, nhƣ giải thích ở phần sau, không có cách nào thoả đƣợc cả hai TFDs mà không có bất kỳ sự dƣ thừa dữ liệu nào.

Để nắm bắt đƣợc bằng trực giác thông thƣờng về “buộc thoả TFDs”, nhƣ trong lý thuyết thiết kế quan hệ truyền thống, ta phải định nghĩa khái niệm về bảo toàn phụ thuộc.

Định nghĩa (Bảo toàn phụ thuộc): [6]

Cho trƣớc một lƣợc đồ module (R, ), một tập F các TFDs, ta nói rằng một phép tách  = {(RB1B, B1B),...., (RBkB, BkB)} là bảo toàn các phụ thuộc trong F nếu với mỗi module M trên (R, ), Up(TRi (M), µBiB) thỏa mãn Ri (F) với mỗi i = 1,...,k kéo theo M thỏa mãn F.

Trƣớc hết, chúng ta đề cập đến một trƣờng hợp đơn giản, trong đó mỗi TFD có cùng vế trái và vế phải (nhƣng theo kiểu thời gian khác nhau). Ví dụ đã nêu trong

phần đầu của mục này là đúng nhƣ trƣờng hợp đó. Ta sẽ chỉ ra các phụ thuộc hàm thời gian đó đƣợc bảo toàn nhƣ thế nào.

Cho trƣớc một kiểu thời gian  và một tập các TFDs F = {X→B1BY,...,X→BnBY}, cho hàm Raise (,F) là hàm trả về một kiểu mới  bằng cách:

- Khởi tạo =.

- Gộp nhập – (Collapsing) đệ quy mỗi cặp của những thời khắc liền kề iB1B và iB2B sao cho cả hai điều kiện sau đều thỏa mãn:

o XY (i1,i2)(F) và

o với mọi iB3B, XY(i1,i3)(F)(i2,i3)(F) kéo theo XY (i1,i2,i3)(F)

Hàm Raise sinh ra một kiểu thời gian là thô nhất (coarsest) của mọi kiểu thời gian  mà mỗi thời khắc của  là một thời khắc của  hoặc là một hợp thành của tập các thời khắc của  đƣợc phủ bởi cùng TFD thuộc F, và sao cho {(R, )} vẫn bảo toàn đƣợc mọi TFDs thuộc F.

Ví dụ, cho trƣớc một kiểu module thời gian ngay và F={A →BtuanB B;

A →BthangB B} Hình 2.6 mô tả kiểu thời gian Raise(ngay, F). Trong hình vẽ, mỗi khoảng của một kiểu thời gian tƣơng ứng với mội thời khắc của kiểu đó. Bây giờ ta sẽ chứng tỏ hàm Raise này thực sự có những tính chất đòi hỏi.

Mệnh đề 5: Cho (R, ) là một module thời gian và F={X→B1BY,...,X→BnBY} là tập các TFDs, với XY R. Khi đó với mỗi M = (R, , ), Up(M, Raise(,F)) thỏa mãn

F khi và chỉ khi M thỏa mãn F. [6]

Sự bảo toàn của TFDs là mâu thuẫn với việc loại bỏ sự dƣ thừa dữ liệu. Quay trở lại ví dụ của chúng ta ở phần đầu mục này, cho  = Raise(ngay, F), trong đó F = {A→BtuanB B, A→BthangB B} . Cho dB1B là ngày 31-3-1994 và dB2B là ngày 01-04-1994. Bây giờ giả sử rằng bộ t = ( a, b) là thuộc cả (dB1B) và (dB2B) . Đó là một dƣ thừa, tuy nhiên dB1B và dB2 Bthuộc cùng một tuần nhƣng lại khác tháng. Do vậy theo Hình 2.6, dB1B và dB2 Blà không đƣợc tổ hợp trong việc tính λ. Do đó hai bộ này vẫn còn tách rời trong module mới Up(M, λ). Nếu dB1B và dB2 Bthuộc một thời khắc của λ, thì phép tách {(A, ngay), (AB, λ)} của (AB, λ) sẽ không bảo toàn các phụ thuộc.

2.7. DẠNG CHUẨN BA CÓ YẾU TỐ THỜI GIAN

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

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

(120 trang)