3NF so với BCNF
Chuẩn hóa là một quá trình được thực hiện để giảm thiểu các dư thừa có trong dữ liệu trong cơ sở dữ liệu quan hệ. Quá trình này sẽ chủ yếu phân chia các bảng lớn thành các bảng nhỏ hơn với số lượng dự phòng ít hơn. Các bảng nhỏ hơn sẽ liên quan với nhau thông qua các mối quan hệ được xác định rõ. Trong cơ sở dữ liệu được chuẩn hóa tốt, mọi thay đổi hoặc sửa đổi dữ liệu sẽ chỉ yêu cầu sửa đổi một bảng duy nhất. Mẫu bình thường thứ ba (3NF) được giới thiệu vào năm 1971 bởi Edgar F. Codd, người cũng là người phát minh ra mô hình quan hệ và khái niệm chuẩn hóa. Mẫu đơn Boyce-Codd (BCNF) được giới thiệu vào năm 1974 bởi Codd và Raymond F. Boyce.
3NF là gì?
3NF là dạng bình thường thứ ba được sử dụng trong chuẩn hóa cơ sở dữ liệu quan hệ. Theo định nghĩa của Codd, một bảng được cho là ở 3NF, nếu và chỉ khi, bảng đó ở dạng bình thường thứ hai (2NF) và mọi thuộc tính trong bảng không thuộc về khóa ứng viên nên phụ thuộc trực tiếp vào mỗi khóa ứng cử viên của bảng đó. Năm 1982, Carlo Zaniolo đã đưa ra một định nghĩa được thể hiện khác nhau cho 3NF. Các bảng tuân thủ 3NF thường không chứa các bất thường xảy ra khi chèn, xóa hoặc cập nhật các bản ghi trong bảng.
BCNF là gì?
BCNF (còn được gọi là 3.5NF) là một dạng bình thường khác được sử dụng trong chuẩn hóa cơ sở dữ liệu quan hệ. Nó được giới thiệu để nắm bắt một số dị thường không được giải quyết bởi 3NF. Một bảng được cho là trong BCNF, nếu và chỉ khi, đối với mỗi phụ thuộc của mẫu A → B không tầm thường, A là một siêu khóa. Phân tách một bảng không ở dạng bình thường BCNF không đảm bảo việc sản xuất các bảng ở dạng BCNF (trong khi vẫn bảo tồn các phụ thuộc có trong bảng gốc).
Sự khác biệt giữa 3NF và BCNF là gì?
Cả 3NF và BCNF đều là các dạng bình thường được sử dụng trong cơ sở dữ liệu quan hệ để giảm thiểu dư thừa trong các bảng. Trong một bảng ở dạng bình thường BCNF, với mọi phụ thuộc chức năng không tầm thường của dạng A → B, A là một siêu khóa trong khi đó, một bảng tuân thủ 3NF phải ở trong 2NF và mọi số không phải là số nguyên tố thuộc tính nên phụ thuộc trực tiếp vào mọi khóa ứng cử viên của bảng đó. BCNF được coi là một hình thức bình thường mạnh hơn 3NF và nó được phát triển để nắm bắt một số dị thường không thể bắt được bởi 3NF. Có được một bảng tuân thủ biểu mẫu BCNF sẽ yêu cầu phân tách một bảng trong 3NF. Sự phân tách này sẽ dẫn đến các hoạt động tham gia bổ sung (hoặc các sản phẩm của Cartesian) khi thực hiện các truy vấn. Điều này sẽ tăng thời gian tính toán. Mặt khác, các bảng tuân thủ BCNF sẽ có ít dự phòng hơn các bảng chỉ tuân thủ 3NF. Hơn nữa, hầu hết thời gian, có thể có được một bảng tuân thủ 3NF mà không cản trở việc bảo tồn phụ thuộc và tham gia không mất mát. Nhưng điều này không phải lúc nào cũng có thể với BCNF.