数据库范式区分
来源:互联网 发布:华为软件开发工资待遇 编辑:程序博客网 时间:2024/05/18 19:18
最近刷题总是遇到范式问题,之前本科时候学习过,但很概念已经很模糊。所以做题时候一会做对,一会又错了...再次区分一下吧。
1、第一范式
(1)强调的是列的原子性。不解释了,就是对应了数据库表的一列,不可分。
2、第二范式
(1)在1NF的基础上:任一非主键列 必须 完全依赖于 主键列(X1,X2....)
(2)不允许出现有:非主键列 部分依赖于 主键列(或者说依赖于主键的一部分)。
(3)比如一张表是(A, B, C, D),其中(A, B)是主键,如果存在B->C就违反了2NF,因为C只需要主键的一部分就可以被决定了。
3、第三范式
(1)在2NF的基础上:任一非主键列 必须 直接依赖于 主键列(X1,X2....)
(2)不允许出现:非主键列A 依赖于 非主键列 B,非主键列 B 依赖于 主键C 。
(3)比如一张表(A,B,C,D),其中(A)是主键,如果存在A->B和B->C关系,就违反了3NF,因为非主键C依赖于非主键B,而非主键B依赖于主键A,不满足非主键列直接依赖于主键列。
4、BCNF范式
(1)在3NF的基础上:任一主键列 必须不能 直接依赖or传递依赖于 其它主键列(X1,X2.....)
(2)不允许出现:主键列A 依赖于 其它主键列(X1,X2....),主键列C 依赖于 主键列A
(3)比如一张表:(A,B,C,D),其中(A,B,C)是主键,如果存在(A,B)->C和C->A的关系,违反了BCNF,因为:
a、主键列A对主键列C的直接依赖关系。
b、主键列A对主键列(A,B)的传递依赖关系。
5、总结:
1NF
| 消除非主属性对码的部分依赖
2NF
| 消除非主属性对码的传递依赖
3NF
| 消除主属性对码的部分和传递依赖
BCNF
参考:
http://blog.csdn.net/qingking520/article/details/52937728
http://blog.csdn.net/allenlsy/article/details/5356899
http://blog.csdn.net/g_beginner/article/details/6789308
参考:
- 数据库范式区分
- 数据库范式 三范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库---范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- 数据库范式
- struts2的执行流程
- 碎片工具箱
- Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultIndenter
- Java8 Stream的map和flatMap的区别
- 类相关的技术细节 -13
- 数据库范式区分
- [App] Nginx 版本平滑升级
- 小米5miui8安卓7.0NFC模拟门禁卡成功(手动)
- javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
- 在文件中查找特定的字符串方法 grep命令
- Android客制化------禁止系统下载apk文件
- URL编解码
- 使用位移动画实现跑马灯效果
- leetcode题解-483. Smallest Good Base