বয়েস-কোড স্বাভাবিক ফর্ম (BCNF) কী?
বিসিএনএফ (BCNF) হলো থার্ড নর্মাল ফর্ম (3NF) এর একটি 확장한 এবং এটি 3NF এর চেয়ে কিছুটা শক্তিশালী।
একটি রিলেশন R BCNF-এ থাকবে, যদি P → Q একটি তुच্ছ ফাংশনাল নির্ভরতা হয় এবং P হলো 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}
নির্ধারক গুণগত Package, যার ওপর Ground নির্ভর করে, এটি نہ একটি কैंडিডেট কী এবং نہ কैंडিডেট কীর সুপারসেট।
BCNF-এ রূপান্তর
<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}
<Package> রিলেশনে Package কে কী হিসেবে ব্যবহার করার কারণে ব> অনোমালি দূর হয়েছে।