数据库中1NF,2NF,3NF的判别
2024-10-21 16:02:53
参照:https://blog.csdn.net/qq_28888837/article/details/98733448
1NF:每一个都是最原子化。
2NF:找到主键后,每一个非主键对主键都是完全依赖。
“想要看是否为2NF,首先要找表的主键,之后看所有的非主键要对关键码是完全依赖,也就是不存在部分依赖,如果有部分依赖则不满足2NF,否则满足2NF,比如一个关系的关键码为(x,y),非主属性为z首先因为(x,y)是关键码,所以一定能得到z,如果存在x->z或者y->z则说明z是部分依赖,则不满足2NF,否则满足2NF。”
3NF:满足2NF下,非主键没有依赖关系。
“要想达到3NF,首先要判断是否为2NF,然后看里面是否有传递依赖,其实就是看其他的非主键之间有没有依赖,如果有主键x,还有非主键y z w,如果有其他的非主键之间的依赖比如y->z 则不满足3NF,因为有主键肯定能推出非主键即,x->y,而又有y-z,所以存在传递依赖,则不满足3NF,否则满足3NF”
BC范式:满足3NF下,每个主键里的元素,对于不包含这个元素的主键都是完全依赖。
“首先满足3NF,然后主要是看主键了,所有的主键对于每一个不包含他的其他主键也要是完全依赖,比如主键(x,y,z)
,那么z对(x,y)
要是完全依赖。”
最新文章
- .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
- mysql+ssh 配置(转载)
- 声明式事务-整合Spring、Hibernate
- quick cocos2dx lua 内存释放
- sorttable
- 使用chrome联调不在同一个域的请求
- Verilog (二) multiplexer and decoder
- select标签用法
- servlet 之 返回json数据并显示
- Eclipse设置Android Logcat输出字体大小
- C# WinForm多线程(二)ThreadPool 与 Timer
- CentOS 7修复MBR和GRUB
- opencv 离线文档下载地址在哪里?
- Netty解决粘包和拆包问题的四种方案
- ifram 局部刷新,不刷新父级
- Sqlserver分区表
- odoo 10.0部署shell
- HDU 5754 Life Winner Bo(各类博弈大杂合)
- CentOS 7修改yum源为阿里源
- Intellij idea Cannot start internal HTTP server.