首页 > 编程知识 正文

一范式二范式三范式bc范式,bc范式通俗解释

时间:2023-05-06 14:11:48 阅读:194386 作者:1526

第一范式:只要满足所有字段不可再分,即不存在 “一个字段中有不同的数据类型” 这种情况,例如手机号这个字段不能既有手机号又有姓名年龄这些。

第二范式:在第一范式的前提下,每个非主属性都完全函数依赖于主键(主键可以有多个字段)。
首先什么是主属性和非主属性?
主属性就是候选键中的每一个属性,候选键可能是多个属性。不包含在候选键的属性叫非主属性。
候选键可以有多组,例如候选键为AB或者AC或者AD,属性ABCD都包含在候选键中,那么ABCD都是主属性。
什么是完全函数依赖和部分函数依赖?
举个例子,X–>Y , X’ 是X的真子集,若满足X’–>Y,那么Y 部分函数依赖于X,这就是部分函数依赖
X–>Y , X’ 是X的真子集,若对所有的X’!–>Y , 那么Y完全函数依赖于X,这就是完全函数依赖。
例如:(学号和身份证)–>姓名,身份证–>姓名,姓名部分函数依赖于(学号和身份证)
(身高和体重)–>肥胖指数,身高不能决定肥胖指数,体重也不能决定肥胖指数,只有(身高和体重)才能决定肥胖指数,所以,肥胖指数完全函数依赖于(身高和体重)
当主键只有一个属性的时候,是要有主键就是第二范式!当主键包含多个属性的时候,必须满足每个非主属性都完全函数依赖于主键,也就说主键的真子集都不能决定非主属性!只有主键才能决定所有非主属性。

举例子:
不符合第二范式:
商品id和商品名称作为主键,商品id和商品名称可以决定注意事项,其真子集商品名称也可以决定注意事项,这就存在部分函数依赖了

符合第二范式:
现在,只有商品id和商品名称共同才可以决定价格,其真子集商品id或者商品名称都无法决定价格,这符合完全函数依赖,所以符合第二范式

第三范式:在第二范式的基础上,任何的非主属性不依赖于其他非主属性 (在第二范式基础上消除传递函数依赖),就是第三范式。
举个例子,一张员工表有几个字段(员工id,员工姓名,联系方式,部门id,部门名称,部门详细信息),因为这张表中,员工id是主键,部门id也是主键,因为 “部门详细信息” —> “部门名称” —> “部门id” 这就形成了传递函数依赖于主键了,所以必须要建立一个部门表,除部门id意外的字段都应该在部门表里边,这才符合第三范式。

BC范式:满足BC范式的关系将消除任何属性(主属性和非主属性)对关系键的部分函数依赖和传递函数依赖。
在第三范式下,举个例子
如果不存在 (AB)–>C , B–>C 类似这样的情况,也就是说部分函数依赖。也不存在 A–>B , B–>C 这种情况,也就是传递函数依赖,不管这些ABC属性是主属性还是非主属性,反正就是不存在 “部分函数依赖和传递函数依赖” ,这就是BC范式

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