个性化阅读
专注于IT技术分析

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_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中, 因为两个功能依赖项的左侧部分都是关键。

赞(0)
未经允许不得转载:srcmini » DBMS Boyce Codd范式(BCNF)

评论 抢沙发

评论前必须登录!