7

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}

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 -> BA 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 KeysHOẶ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, EA. Đâ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?

+1

Đúng, bạn đã làm mọi thứ đúng. – laurids

+0

bạn có thể muốn kiểm tra điều này: http://class2go.stanford.edu/db/Winter2013 – laurids

Trả lời

1

Trước tiên, bạn cần tìm hiểu về các siêu điều khiển, các khóa ứng viên và các thuộc tính chính.

Tuy nhiên, nguyên tắc này sẽ giúp:

Một bảng 3NF mà không có nhiều phím ứng cử viên chồng chéo là đảm bảo được ở BCNF.

Nói cách khác, nếu phím ứng cử viên trong một mối quan hệ 3NF là

  • tất cả các nguyên tử, hoặc
  • phi nguyên tử nhưng không chồng chéo,

nó là đảm bảo rằng mối quan hệ là trong BCNF.

Mối quan hệ đơn giản nhất mà vi phạm BCNF nhưng đáp ứng 3NF có phụ thuộc hàm sau:

A,B -> C C -> B

Trong trường hợp này, các phím có thể chọn là (A,B)(A,C).
Nó đáp ứng 3NF vì

  • bên phải phía của tất cả các phụ thuộc hàm là một thuộc tính chính .

Nó vi phạm BCNF vì

  • C -> B, nhưng trái tay-side không phải là một superkey.
2

BCNF:

X-> Y trong đó Y có thể Thủ hoặc phi thủ
Ở đây, X phải là một siêu trọng

3NF:

X-> Y trong đó Y là phi thủ
sau đó,
X phải là một siêu trọng
khác
X không cần được siêu trọng

Hy vọng điều này sẽ giúp

+2

Đây không phải là rõ ràng hoặc chính xác. Nhìn vào một số định nghĩa sách giáo khoa, hoặc thậm chí wikipedia. – philipxy

+0

Các định nghĩa là mơ hồ. Ví dụ, đối với BCNF, bạn có thể chỉ ra rằng X phải là một khóa siêu. Định nghĩa của 3NF là chính xác, nhưng đây là cách mô tả phức tạp nhất! – AHA

Các vấn đề liên quan