📜  DBMS BCNF

📅  最后修改于: 2020-12-12 03:05:03             🧑  作者: Mango

博伊斯·科德范式(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_COUNTRY
EMP_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_COUNTRY
EMP_DEPT   →   {DEPT_TYPE, EMP_DEPT_NO}

候选键:

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

现在,这是在BCNF中,因为两个功能依赖项的左侧部分都是关键。