
Hãy để chúng tôi thảo luận về sự khác biệt giữa 3NF và BCNF với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.
Biểu đồ so sánh
Cơ sở để so sánh | 3NF | BCNF |
---|---|---|
Khái niệm | Không có thuộc tính không chính nào phải phụ thuộc quá mức vào khóa Ứng viên. | Đối với bất kỳ sự phụ thuộc tầm thường nào trong mối quan hệ R nói X-> Y, X phải là một siêu khóa của mối quan hệ R. |
Phụ thuộc | 3NF có thể thu được mà không phải hy sinh tất cả các phụ thuộc. | Phụ thuộc có thể không được bảo tồn trong BCNF. |
Phân hủy | Phân hủy không mất mát có thể đạt được trong 3NF. | Sự phân hủy không mất mát khó đạt được trong BCNF. |
Định nghĩa của 3NF
Một bảng hoặc một mối quan hệ được coi là ở Dạng thông thường thứ ba chỉ khi bảng đó đã ở trong 2NF và không có thuộc tính không chính nào phụ thuộc quá mức vào khóa ứng cử viên của một mối quan hệ.
Vì vậy, trước khi tôi giải quyết quá trình bình thường hóa bảng trong 3NF, hãy cho phép tôi thảo luận về khóa ứng viên. Khóa ứng viên là siêu khóa tối thiểu, tức là một siêu khóa với các thuộc tính tối thiểu có thể xác định tất cả các thuộc tính của mối quan hệ. Vì vậy, trong quá trình bình thường hóa bảng của bạn, trước tiên, bạn nhận ra khóa ứng viên của một mối quan hệ nhất định. Các thuộc tính là một phần của khóa ứng cử viên là các thuộc tính nguyên tố và các thuộc tính không phải là một phần của khóa ứng cử viên là các thuộc tính không chính .
Bây giờ nếu chúng ta có mối quan hệ R (A, B, C, D, E, F) và chúng ta có các phụ thuộc hàm sau cho mối quan hệ R.

Bảng nằm trong 2NF vì không có thuộc tính không chính nào phụ thuộc một phần vào khóa ứng cử viên
Nhưng, một phụ thuộc bắc cầu được quan sát giữa các phụ thuộc chức năng được cung cấp, vì thuộc tính F không phụ thuộc trực tiếp vào khóa ứng cử viên AB . Thay vào đó, thuộc tính F phụ thuộc quá mức vào khóa ứng viên AB thông qua thuộc tính D. Cho đến thuộc tính D có một số giá trị chúng ta có thể đạt tới giá trị thuộc tính của F, từ khóa ứng viên AB. Trong trường hợp giá trị của thuộc tính D là NULL, chúng ta không bao giờ có thể tìm / tìm giá trị của F với sự trợ giúp của khóa ứng viên AB. Đây là lý do tại sao 3NF yêu cầu loại bỏ sự phụ thuộc quá độ khỏi các mối quan hệ.
Vì vậy, để loại bỏ sự phụ thuộc quá độ này, chúng ta cần chia mối quan hệ R. Trong khi phân chia một mối quan hệ luôn đặt khóa ứng viên và tất cả các thuộc tính phụ thuộc vào khóa ứng viên đó trong mối quan hệ đầu tiên. Trong mối quan hệ được chia tiếp theo, chúng ta sẽ đặt thuộc tính gây ra sự phụ thuộc quá độ và cả các thuộc tính phụ thuộc vào nó trong mối quan hệ thứ hai.

Định nghĩa về BCNF
BCNF được coi là mạnh hơn 3NF. Mối quan hệ R ở trong BCNF phải ở 3NF . Và bất cứ nơi nào một phụ thuộc chức năng không tầm thường A -> B giữ trong mối quan hệ R, thì A phải là một siêu khóa của mối quan hệ R. Như chúng ta biết, Super key là một khóa có một thuộc tính hoặc tập hợp các thuộc tính xác định, toàn bộ các thuộc tính của một mối quan hệ.
Bây giờ, chúng ta hãy chuyển sang một ví dụ để hiểu BCNF theo cách tốt hơn. Chúng ta hãy giả sử rằng chúng ta có mối quan hệ R (A, B, C, D, F), có các phụ thuộc chức năng.

Nhưng một phụ thuộc chức năng, tức là D -> F đang vi phạm định nghĩa của BCNF, theo đó, nếu D -> F tồn tại thì D phải là siêu khóa không phải là trường hợp ở đây. Vì vậy, chúng tôi sẽ phân chia mối quan hệ R.

Sự khác biệt chính giữa 3NF và BCNF
- 3NF tuyên bố rằng không có thuộc tính không chính nào phải phụ thuộc quá mức vào khóa ứng cử viên của mối quan hệ. Mặt khác, BCNF tuyên bố rằng nếu một phụ thuộc chức năng tầm thường X -> Y tồn tại cho một mối quan hệ; thì X phải là một siêu khóa.
- 3NF có thể thu được mà không phải hy sinh sự phụ thuộc của mối quan hệ. Tuy nhiên, sự phụ thuộc có thể không được bảo tồn trong khi thu được BCNF.
- 3NF có thể đạt được mà không mất bất kỳ thông tin nào từ bảng cũ trong khi lấy BCNF, chúng tôi có thể mất một số thông tin từ bảng cũ.
Phần kết luận:
BCNF hạn chế hơn nhiều so với 3NF, giúp bình thường hóa bảng nhiều hơn. Mối quan hệ trong 3NF có dư thừa tối thiểu còn lại được BCNF loại bỏ thêm.