Computer >> Máy Tính >  >> Lập trình >> SQL

Boyce-Codd Dạng bình thường (BCNF)


BCNF là phần mở rộng của Dạng chuẩn thứ ba (3NF) và mạnh hơn 3NF một chút.

Một quan hệ R nằm trong BCNF, nếu P -> Q là một phụ thuộc hàm nhỏ và P là một siêu khóa cho R.

Nếu một mối quan hệ nằm trong BCNF, điều đó có nghĩa là phần dư thừa dựa trên sự phụ thuộc vào hàm đã bị loại bỏ, nhưng một số phần dư thừa vẫn còn đó.

Hãy để chúng tôi xem một ví dụ -

Mặt đất
Begin_Time
End_Time
Gói
G01
07:00
09:00
Vàng
G01
10:00
12:00
Vàng
G01
10:30
11:00
Đồng
G02
10:15
11:15
Bạc
G02
08:00
09:00
Bạc


Quan hệ trên là 1NF, 2NF, 3NF, nhưng không phải trong BCNF. Đây là lý do -

Sự phụ thuộc vào chức năng {Gói-> Mặt đất}

Nó có thuộc tính quyết định Gói mà Ground phụ thuộc vào, không phải là Khóa ứng cử viên cũng không phải là tập hợp lớn của khóa ứng viên.

Gói
Mặt đất
Vàng
G01
Bạc
G02
Đồng
G01


Mặt đất
Begin_Time
End_Time
G01
07:00
09:00
G01
10:00
12:00
G01
10:30
11:00
G02
10:15
11:15
G02
08:00
09:00


Bây giờ các bảng trên ở trong BCNF.

Khóa ứng viên cho bảng là Gói và Mặt đất

Khóa ứng viên cho bảng là {Ground, Begin_Time} {Ground, End_Time}

Sự bất thường đã được loại bỏ vì chúng tôi đã sử dụng Gói làm khóa trong quan hệ.