Boyce Codd 范式 (BCNF)

2024年12月3日 | 1 分钟阅读
  • BCNF 是 3NF 的高级版本。它比 3NF 更严格。
  • 如果对于每个函数依赖 X → Y,X 是表的主键,则该表处于 BCNF 中。
  • 要达到 BCNF,表应处于 3NF 中,并且对于每个函数依赖,左侧都是主键。

示例: 假设有一家公司,员工在多个部门工作。

EMPLOYEE 表

EMP_IDEMP_COUNTRYEMP_DEPTDEPT_TYPEEMP_DEPT_NO
264印度设计D394283
264印度测试D394300
364英国存储D283232
364英国开发中D283549

在上表中,函数依赖关系如下

候选键:{EMP-ID, EMP-DEPT}

该表不符合 BCNF,因为 EMP_DEPT 和 EMP_ID 单独都不是键。

为了将给定的表转换为 BCNF,我们将其分解为三个表

EMP_COUNTRY 表

EMP_IDEMP_COUNTRY
264印度
264印度

EMP_DEPT 表

EMP_DEPTDEPT_TYPEEMP_DEPT_NO
设计D394283
测试D394300
存储D283232
开发中D283549

EMP_DEPT_MAPPING 表

EMP_IDEMP_DEPT
D394283
D394300
D283232
D283549

函数依赖

候选键

对于第一个表: EMP_ID
对于第二个表: EMP_DEPT
对于第三个表: {EMP_ID, EMP_DEPT}

现在,这符合 BCNF,因为两个函数依赖关系的左侧部分都是键。


下一个主题DBMS 4NF