Boyce–Codd Normal Form (BCNF)
BCNF是对第三范式(3NF)的扩展,比3NF略强。
如果关系R在BCNF中,那么P -> Q是一个平凡的函数依赖,并且P是关系R的超键。
如果一个关系在BCNF中,那么就意味着已经消除了基于函数依赖的冗余,但仍然存在一些冗余。
让我们看一个例子 −
**
Ground | **Begin_Time ** | End_Time | 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 |
上述关系在1NF、2NF和3NF中,但不在BCNF中。原因如下−
函数依赖 **{Package- >Ground} **
具有决定属性Package的关系Ground是非候选键且不是候选键的超集。
**
Package | Ground |
---|---|
Gold | G01 |
Silver | G02 |
Bronze | G01 |
**
**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 |
现在上述表已经在BCNF范式中。
**
由于在
阅读更多:MySQL 教程