数据库范式1NF 2NF 3NF BCNF 4NF 5NF

       范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。在进入范式的讲解前,需要先了解5个概念:“函数依赖”、“完全函数依赖”、“传递函数依赖”“码”、“非主属性”


函数依赖:
      可以这么理解(但并不是特别严格的定义):若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y。也就是说,在数据表中,不存在任意两条记录,它们在X属性(或属性组)上的值相同,而在Y属性上的值不同。这也就是“函数依赖”名字的由来,类似于函数关系 y = f(x),在x的值确定的情况下,y的值一定是确定的。

完全函数依赖:
      在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ' → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记作 X f→ Y。反之为部分函数依赖。

传递函数依赖:
      假如 Z 函数依赖于 Y,且 Y 函数依赖于 X ,(在『Y不包含于X,且 X 不函数依赖于 Y』这个前提下),那么就称 Z 传递函数依赖于 X ,记作 X T→ Z。

码:
      设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为码。在实际中通常可以理解为:假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。一张表中可以有超过一个码。(实际应用中为了方便,通常选择其中的一个码作为主码

非主属性:
       包含在任何一个码中的属性称为主属性,反之则为非主属性。

1NF:

       所谓第一范式,是指表中的每一个属性都是不可再分的,也就是不能一列再分成两列。这是关系数据库的基础。换个理解方式就是能够插入关系型数据库就是符合1NF

2NF:
       消除了非主属性对于码的部分函数依赖。
       判断一个表是否符合2NF,按如下步骤
       第一步:找出数据表中所有的
       第二步:根据第一步所得到的码,找出所有的主属性
       第三步:数据表中,除去所有的主属性,剩下的就都是非主属性了。
       第四步:查看是否存在非主属性对码的部分函数依赖
对于存在的问题,需要思考如何模式分解,最简单的办法,就是将部分函数依赖的部分抽取出来形成新的表。

3NF
       消除了非主属性对于码的传递函数依赖。
      符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。

BCNF
      存在着主属性对于码的部分函数依赖与传递函数依赖。

4NF
       消除非平凡且非函数依赖的多值依赖。

5NF
       消除不是由候选码所蕴含的连接依赖。
http://blog.sina.com.cn/s/blog_a637e97e0101321t.html
https://www.zhihu.com/question/24696366

反范式

http://blog.csdn.net/qq_33290787/article/details/51956532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值