首页 > 编程知识 正文

三大范式和bc范式,bc范式和第四范式

时间:2023-05-05 19:18:29 阅读:194919 作者:2512

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

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

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

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

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

 

第二范式:

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

 

第三范式:

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

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

 

BC范式:

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

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

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

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

非主属性:数量

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



 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。