数据库设计三大范式剖析

所谓范式,就是关系型数据库关系模式规范化的标准,从规范化的宽松到严格,分别为不同的范式,通常使用的有第一范式、第二范式、第三范式及BC范式等。范式是建立在函数依赖的基础上的。那么我们要了解三大范式的话就先来看看函数依赖

函数依赖

定义:设有关系模式R(U)XY是属性集U的子集,函数依赖是形为X→Y的一个命题,对任意R中两个元组ts,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么FD X→Y在关系模式R(U)中成立。X→Y读作‘X函数决定Y’,或‘Y函数依赖于X’。说的俗点就是:如果一个表中某一个字段Y的值是由另外一个字段或一组字段X的值来确定的,就称为Y函数依赖于X。函数依赖应该是通过理解数据项和企业的规则来决定的,根据表的内容得出的函数依赖可能是不正确的。

第一范式(1NF Normal Formate)

        定义:如果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模式。

        第一范式的目标是确保每列的原子性,每列都是不可再分的最小数据单元(也称之为最小数据单元)

例如:

客人信息表(姓名、年龄、客人编号.....)

第二范式(2NF)


        定义:如果关系模式R是第一范式,且每个非主属性完全函数依赖于候选键,那么就称R是第二范式。        简单的说,第二范式要满足以下的条件:首先要满足第一范式,其次每个非主属性要完全函数依赖与候选键,或者是主键。第二范式其目标是确保表中的每列都和主键相关。

例如:

客房表(房间号、客房描述、床位数......)

客房状态表(客房状态、客房状态名称.....)

第三范式(3NF)


         定义:如果关系模式R是2NF,且关系模式R(U,F)中的所有非属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式了。

         简单的说,第三范式要满足以下的条件:首先要满足第二范式,其次非主属性之间不存在函数依赖,也就是说要确保每列都和主键列直接相关。由于满足了第二范式,表示每个非主属性的函数都依赖于主键,如果非主属性之间存在了函数依赖,就会存在传递依赖,这样就不满足第三范式了

举个例子:

          客人(客人姓名,身份证号,房间号,......) 

              客房(房间号,客房描述,客房类型编号....)

          客房类型(客房类型编号,客房类型名称,床位数,价格...)

 

BC范式(BCNF)BC范式是第三范式的增强版,不过也有人说是直接从第一范式发展过来的,即每个属性,包括主属性或非主属性,都完全依赖于候选键,并且不存在传递依赖情况

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值