Tôi đã đọc nhiều nguồn khác nhau về cách phân biệt các mối quan hệ trong 3NF/BCNF. Và tôi đã cho đến nay đây là sự hiểu biết của tôi ...Tìm một mối quan hệ trong 3NF nhưng không có trong BCNF
tôi sẽ sử dụng mối quan hệ này là một ví dụ ...
R = {A, B, C, D, E}
và
F = {A -> B, B C - > E, E D -> A}
.
Trước tiên, chúng ta phải tìm các khóa của mối quan hệ. I used this video to help me do that. Và tôi đã
Keys = {ACD, BCD, CDE}
Bây giờ để đảm bảo R
là trong BCNF, chúng ta phải đảm bảo rằng ở phía bên tay trái của mỗi phụ thuộc chức năng trong F
là một trong những Keys
. Chúng tôi ngay lập tức biết đây không phải là trường hợp, bởi vì FD đầu tiên là A -> B
và A
không phải là một trong những chìa khóa. Vì vậy, nó không có trong BCNF.
Bây giờ để đảm bảo R
là trong 3NF, chúng ta phải đảm bảo rằng ở phía bên tay trái của mỗi phụ thuộc chức năng trong F
là một trong những Keys
HOẶC phía bên tay phải của mỗi phụ thuộc chức năng trong F
là một tập con của một trong số Keys
. Nếu bạn nhìn vào phía bên phải của mọi FD, chúng là B
, E
và A
. Đây là mỗi tập hợp con của một số Key
, do đó, điều này có nghĩa là nó nằm trong 3NF.
Vì vậy, đây là một trong những hiếm trường hợp (theo wiki), nơi một mối quan hệ là ở 3NF
nhưng không trong BCNF
. Phương pháp này có đúng không? Nó có đáng tin cậy không? Tôi có thiếu gì không?
Đúng, bạn đã làm mọi thứ đúng. – laurids
bạn có thể muốn kiểm tra điều này: http://class2go.stanford.edu/db/Winter2013 – laurids