BCNF เป็นการขยายจากรูปแบบปกติที่ 3 (3NF) และมีความเข้มงวดกว่า 3NF นิดหน่อย
ความสัมพันธ์ R จะอยู่ใน BCNF ถ้า P → Q เป็นการอ้างอิงฟังก์ชันที่ไม่ซับซ้อน (trivial functional dependency) และ P เป็นคีย์ซูเปอร์ (superkey) สำหรับ R
ถ้าความสัมพันธ์อยู่ใน BCNF หมายความว่าความซ้ำซ้อนที่อิงจากการอ้างอิงฟังก์ชันถูกลบออกแล้ว แต่ยังคงมีความซ้ำซ้อนบางส่วนอยู่
ลองดูตัวอย่างด้านล่างนี้ -
<SportsClub>
| สนาม | เวลาเริ่ม | เวลาสิ้นสุด | แพ็กเกจ |
| 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 |
ความสัมพันธ์ข้างต้นอยู่ใน 1NF, 2NF, 3NF แต่ ไม่อยู่ใน BCNF เหตุผลคือ -
การอ้างอิงฟังก์ชัน {Package → Ground}
แอตทริบิวต์ที่เป็นตัวกำหนด (determinant) คือ Package ซึ่ง Ground ขึ้นอยู่กับมัน ไม่ใช่คีย์หลัก (Candidate Key) และไม่ใช่ซูเปอร์เซตของคีย์หลัก
<Package>
| แพ็กเกจ | สนาม |
| Gold | G01 |
| Silver | G02 |
| Bronze | G01 |
<TomorrowBookings>
| สนาม | เวลาเริ่ม | เวลาสิ้นสุด |
| 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 แล้ว
คีย์หลักของตาราง <Package> คือ Package และ Ground
คีย์หลักของตาราง <TomorrowBookings> คือ {Ground, Begin_Time} และ {Ground, End_Time}
ความผิดปกติ (anomaly) ถูกกำจัดเพราะเราใช้ Package เป็นคีย์ในความสัมพันธ์ <Package>