ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库总结(1)——INF、2NF、3NF、BCNF

2019-02-23 13:48:33  阅读:860  来源: 互联网

标签:3NF BCNF 范式 仓库 2NF 管理员 物品 主键 属性


一、几个重要的概念

  • 超键

    • 在关系中能唯一标识元组的属性或者属性集称为超键
  • 候选键

    • 不含有多余属性的超键。即在候选键中再删除属性就不是键了。
  • 部分依赖

    • 设X,Y 是关系R 的两个属性集合,存在X -> Y,若X’ 是X 的真子集,存在 X’ -> Y,则称Y 部分函数依赖于X
  • 完全依赖

    • 设X,Y 是关系R 的两个属性集合,存在X -> Y,若X’ 是X 的真子集,不存在 X’ -> Y,则称Y 完全函数依赖于X
  • 传递函数依赖

    • 设X、Y、Z 是关系R 中互不相同的属性集合,存在 X->Y, Y->Z ,则称Z传递函数依赖于X

二、1NF

  • 第一范式的数据表一定是二维数据表
  • 第一范式是指数据库的每一列都是不可分割的基本数据项,强调列的原子性。

三、2NF

第二范式首先要满足第一范式,在此基础上,还要满足一下两条

  • 表必须有主键
  • 没有包含在主键中的列必须完全依赖于主键,而不能部分依赖于主键

举个栗子:如果数据库中有联合主键,但是有的列只依赖于联合主键中的一个或者部分属性,这个时候该表就不满足第二范式

四、3BF

第三范式首先要满足第二范式,在此基础上,还要满足下条

  • 每个非主属性都不传递依赖与该范式的候选键
    • 【解释】不能存在:非主键列A 依赖于非主键列B,非主键列B依赖于主键的情况

现在来总结一下:
第二范式和第三范式都是对非主属性的约束,第二范式约束的是 完全函数依赖,第三范式约束的是 传递函数依赖

五、BC范式

5.1 首先我们举个栗子:

若公司有若干个仓库:每个仓库只能有一个管理员,一个管理员只能在一个仓库工作;一个仓库可以存放多个物品,一个物品可以放在不同的仓库。每种物品在每个仓库中都有对应的数量。那么关系表 **仓库(仓库名,管理员,物品名,物品数量)**属于哪一个范式。

分析:

  • 已知的函数依赖:
    • 仓库名-> 管理员;
    • 管理员 -> 仓库名;
    • (仓库名,物品名)-> 物品数量;
    • (管理员,物品名)-> 物品数量;

从上面的函数依赖可以看出来

不存在非主属性对主属性的部分和传递函数依赖。所以属于第三范式

5.2 栗子中存在的问题

  • 【问题一】先新增加一个仓库,但是尚未存放任何物品,是否可以为该仓库指派管理员?

    • 不可以,因为物品名也是主属性,根据实体完整性的要求,主属性不能为空。
  • 【问题二】某仓库被清空之后,需要删除所有与这个仓库相关的物品存放记录,会带来什么问题?

    • 仓库本身与管理员的信息也会被随之删除。
  • 【问题三】如果某仓库更换了管理员,会带来什么问题?

    • 这个仓库有几条物品存放记录,就要修改多少次管理员的信息

从上面的栗子上我们可以看到,虽然满足了 第三范式,但是仍然存在插入异常、修改异常和删除异常问题。

造成这个问题的原因是:

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

上面的四个范式写的还是比较简单的,之后可能会有进一步的栗子做为补充。

参考并感谢

https://www.zhihu.com/question/24696366/answer/29189700 来源:知乎 作者:刘老师

标签:3NF,BCNF,范式,仓库,2NF,管理员,物品,主键,属性
来源: https://blog.csdn.net/xiaojie_570/article/details/87889189

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有