📅  最后修改于: 2020-12-12 03:05:03             🧑  作者: Mango
示例:假设有一家公司的员工在多个部门工作。
员工表:
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中,因为两个功能依赖项的左侧部分都是关键。