Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

Boyce–Codd แบบฟอร์มปกติ (BCNF)


BCNF เป็นส่วนขยายของ Third Normal Form (3NF) และแข็งแกร่งกว่า 3NF เล็กน้อย

ความสัมพันธ์ R อยู่ใน BCNF ถ้า P -> Q เป็นการพึ่งพาฟังก์ชันเล็กน้อย และ P เป็น superkey สำหรับ R

หากความสัมพันธ์อยู่ใน BCNF แสดงว่ามีการลบความซ้ำซ้อนตามการพึ่งพาฟังก์ชันออก แต่ความซ้ำซ้อนบางส่วนยังคงอยู่

มาดูตัวอย่างกัน −

พื้น
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
สีเงิน


ความสัมพันธ์ข้างต้นอยู่ใน 1NF, 2NF, 3NF แต่ไม่ใช่ใน BCNF นี่คือเหตุผล −

การพึ่งพาการทำงาน {แพ็คเกจ->กราวด์}

มีแพ็คเกจแอตทริบิวต์ดีเทอร์มิแนนต์ซึ่ง Ground ขึ้นอยู่กับไม่ใช่ Candidate Key หรือ superset ของคีย์ตัวเลือก

<แพ็คเกจ>

แพ็คเกจ
พื้น
ทอง
G01
สีเงิน
G02
บรอนซ์
G01


<พรุ่งนี้จอง

กราวด์
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


ตอนนี้ตารางด้านบนอยู่ใน BCNF

รหัสผู้สมัครสำหรับ ตารางเป็นแพ็คเกจและพื้น

รหัสผู้สมัครสำหรับ ตารางคือ {Ground, Begin_Time} และ {กราวด์ เวลาสิ้นสุด}

ความผิดปกติหมดไปเพราะเราใช้ Package เป็นคีย์ใน ความสัมพันธ์