Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

Dạng Chuẩn Boyce-Codd (BCNF)


Giới thiệu về BCNF

BCNF (Boyce-Codd Normal Form) là dạng chuẩn mở rộng từ Dạng chuẩn thứ ba (3NF) và chặt chẽ hơn 3NF.

Một quan hệ R được gọi là ở dạng BCNF nếu mọi phụ thuộc hàm trivia P → Q đều có P là siêu khóa (superkey) của R.

Nếu một quan hệ ở dạng BCNF, nghĩa là sự dư thừa dựa trên phụ thuộc hàm đã được loại bỏ, tuy nhiên vẫn có thể tồn tại một số dạng dư thừa khác.

Ví dụ minh họa

Bảng <SportsClub> (Câu lạc bộ Thể thao)

Sân (Ground) Giờ bắt đầu (Begin_Time) Giờ kết thúc (End_Time) Gói (Package)
G01 07:00 09:00 Gold
G01 10:00 12:00 Gold
G01 10:30 11:00 Bronze
G02 10:15 11:15 Silver
G02 08:00 09:00 Silver

Quan hệ trên ở 1NF, 2NF, 3NF nhưng không ở BCNF. Lý do:

Phụ thuộc hàm {Package → Ground}

Thuộc tính quyết định (determinant) Package mà Ground phụ thuộc vào nó không phải là khóa ứng viên (Candidate Key) cũng không phải là siêu tập của khóa ứng viên.

Phân rã để đạt BCNF

Chia thành hai bảng:

Bảng <Package>

Package Ground
Gold G01
Silver G02
Bronze G01

Bảng <TomorrowBookings> (Đặt sân ngày mai)

Ground 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ờ hai bảng trên đều ở dạng BCNF.

  • Khóa ứng viên của bảng <Package>: Package và Ground
  • Khóa ứng viên của bảng <TomorrowBookings>: {Ground, Begin_Time} và {Ground, End_Time}

Dị thường đã được loại bỏ vì chúng ta sử dụng Package làm khóa trong quan hệ <Package>.