131
Rõ ràng đó là một thủ tục không hiệu quả và không thực tiễn.
Việc các phụ thuộc chính xác được chỉ ra ở trong F xuất hiện trong các quan hệ
riêng rẽ của phép tách D là không cần thiết. Chỉ cần hợp của các phụ thuộc thỏa mãn
trên các quan hệ riêng rẽ trong D là tương đương với F là đủ. Bây giờ chúng ta định
nghĩa các khái niệm này như sau.
Cho trước một tập hợp các phụ thuộc F trên R,
phép chiếu của F trên R
i
, ký hiệu
là
𝜋
𝑅𝑖
(𝐹) trong đó R
i
là một tập con của R, là một tập hợp các phụ thuộc hàm X → Y
trong F
+
sao cho các thuộc tính trong X U Y đều được chứa trong R
i
. Như vậy, phép
chiếu của F trên mỗi lược đồ quan hệ R
i
trong phép tách D là tập hợp các phụ thuộc
hàm trong F
+
, bao đóng của F, sao cho các thuộc tính ở vế trái và vế phải của chúng đều
ở trong R
i
. Ta nói rằng phép tách D = {R
1
, R
2
,…, R
m
} của R bảo toàn phụ thuộc đối với
F nếu hợp của các phép chiếu của F trên mỗi R
i
trong D là tương đương với F. Điều đó
có nghĩa là:
(
𝜋
𝑅1
(𝐹) U 𝜋
𝑅2
(𝐹) … 𝜋
𝑅𝑚
(𝐹))
+
= F
+
Nếu một phép tách là không bảo toàn phụ thuộc, một vài phụ thuộc sẽ bị mất trong
phép tách. Để kiểm tra xem một phụ thuộc hàm X → B, trong đó X là tập thuộc tính
thuộc về R
i
, B là một thuộc tính thuộc R
i
có thỏa mãn trong Ri hay không ta làm như
sau: Trước hết tính X
+
, sau đó với mỗi thuộc tính
B sao cho
- B là một thuộc tính của R
i
- B là ở
trong X
+
- B không ở
trong X
Khi đó phụ thuộc hàm X → B thỏa mãn trong Ri.
Một ví dụ về phép tách không bảo toàn phụ thuộc như sau:
Xét lược đồ quan hệ: R = { A,B,C,D} với các phụ thuộc hàm:
A → BCD; BC → DA; D → B
Lược đồ này có hai khóa dự tuyển là A và BC. Nó được tách thành:
R1 = {D,B}, lược đồ này chứa phụ thuộc hàm D → B,
132
R2 = {A,C,D}, lược đồ này chứa phụ thuộc hàm A → CD
Rõ ràng sau khi tách, phụ thuộc hàm BC → DA bị mất.
Chia sẻ với bạn bè của bạn: