DBMS Boyce Codd范式(BCNF)

  • BCNF是3NF的高级版本。它比3NF严格。
  • 如果每个功能依赖项X→Y, 则表在BCNF中, X是表的超级键。
  • 对于BCNF, 该表应为3NF, 对于每个FD, LHS是超级键。
示例:假设有一家公司的员工在多个部门工作。
员工表:
EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 India Designing D394 283
264 India Testing D394 300
364 UK Stores D283 232
364 UK Developing D283 549
上表中, 功能依赖性如下:
EMP_ID→EMP_COUNTRYEMP_DEPT→{DEPT_TYPE, EMP_DEPT_NO}

候选密钥:{EMP-ID, EMP-DEPT}
该表不在BCNF中, 因为单独的EMP_DEPT和EMP_ID都不是键。
要将给定表转换为BCNF, 我们将其分解为三个表:
EMP_COUNTRY表:
EMP_ID EMP_COUNTRY
264 India
264 India
EMP_DEPT表:
EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Designing D394 283
Testing D394 300
Stores D283 232
Developing D283 549
EMP_DEPT_MAPPING表:
EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549
功能依赖性:
EMP_ID→EMP_COUNTRYEMP_DEPT→{DEPT_TYPE, EMP_DEPT_NO}

候选键:
对于第一张表:EMP_ID对于第二张表:EMP_DEPT对于第三张表:{EMP_ID, EMP_DEPT}
【DBMS Boyce Codd范式(BCNF)】现在, 这是在BCNF中, 因为两个功能依赖项的左侧部分都是关键。

    推荐阅读