第二、三范式与BC范式的区别

匿名 (未验证) 提交于 2019-12-02 23:43:01

在正式开始之前,先来明确以下几个概念:

1、码:能唯一确定一条记录的一个/多个属性。码包括主码和候选码。任意一个候选码也能作为主键。

2、主属性:构成主码候选码的属性都叫主属性!千万不要误认为候选码的属性不是主属性!

3、非主属性:除了主属性以外的属性都为非主属性。

4、传递依赖:如果存在A → B → C的决定关系,则C传递函数依赖于A。

第二范式:

第二范式的目的是去除非主属性的部分依赖,用大白话来说就是非主属性只能由来确定。比如说,在一个表中有A、B、C、D四列,(A,B)作为主码且没有其他候选码。如果存在A决定B的话(以后写为AB),那么B这个非主属性就不是由(A,B)主码来确定的了。总的来说,第二范式的目的就是让表只描述一种信息(学生信息、考试科目信息等)。

第三范式:

第三范式的目的是去除非主属性的传递依赖。比如说,在一个表中有A、B、C三列,A作为主码且没有其他候选码

总的来说第二、三范式规范的主要目标是非主属性。也就是说,第二、三范式消除的是非主属性对码的部分函数和传递依赖。那么有没有消除主属性对码的传递和函数依赖的范式呢?那就是BC范式。

BC范式:

假设存在以下关系模式 (仓库名,管理员,物品名,数量)

已知函数依赖集:仓库名 → 管理员,管理员 → 仓库名,(仓库名,物品名)→ 数量

码:(管理员,物品名),(仓库名,物品名)

主属性:仓库名、管理员、物品名

非主属性:数量

在(管理员,物品名)这个码中,存在管理员→仓库名这个部分函数依赖。所以仓库名这个主属性((仓库名,物品名)的码的主属性)部分依赖于(管理员,物品名)这个码,因此不属于BC范式。



文章来源: https://blog.csdn.net/doncoder/article/details/92171159
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!