Mysql三范式
来源:互联网 发布:自制动漫头像的软件 编辑:程序博客网 时间:2024/06/04 18:49
范式,就是指设计数据库需要(应该)遵循的原则。
每个范式,都是用来规定某种结构或数据要求——后一范式都是在前一范式已经满足的情况用来“加强要求”。
第一范式(1NF):原子性
存储的数据应该不可以再分。
上图的学生这一字段的数据还是可以拆分的,应该如下图:
第二范式(2NF):唯一性
需要实现每一行数据具有唯一可区分的特性,并不能有部分依赖关系。
通常,给一个表加主键(也是推荐做法),就可以做到“唯一可区分”。
一个表只要有主键,则其他非主键一定是依赖于主键的。
部分依赖是指某个非主键字段,依赖于联合主键字段的其中部分字段。
这个表虽然满足1NF,但是还有冗余。主要是学生信息和课程信息有冗余。
这个表主要记录学生成绩,所以可以通过(学生+课程)来确定(成绩),但是性别,地区和学分属于部分依赖,(学生)可以确定(性别+地区),(课程)可以确定(学分)。所以为了达到第二范式需要将这两个部分依赖独立出来。
第三范式(3NF):独立性,消除传递依赖
在一个具有主键的表中,假设主键为A,其必然其他非主键都依赖于该主键,比如:B依赖于A,C依赖于A,D依赖于A。。。但同时:如果该表中的某个字段B的值一确定,就能够确定另一个字段的值C,则我们称为C依赖于B。
那么,就出现了:C依赖B,B依赖A——这就是传递依赖。
则消除该传递依赖的的通常做法,就是将C依赖于B的数据,分离到另一个表中。
这个表虽然遵守了2NF,但是还存在一个传递依赖,(学生ID)>(所在院系)>(系办地址,系办电话),所以做如下修改:
第三范式的要求就是一个表只记录一种数据。
通常,在实践中,满足3范式只要做到“一个表只存一种数据”基本就可以实现。
另外,范式不是绝对要求,有时候我们为了数据的使用方便,还会(需要)故意违反范式。
- MYSQL三大范式
- (2)MySQL 三范式
- MySQL三范式
- MYSQL三大范式
- MYSQL三大范式
- mysql三范式说明
- MYSQL三大范式
- Mysql三范式
- MySQL三大范式
- mysql三大范式
- mysql三大范式
- Mysql三范式
- MySQL 之三范式
- MySQL三大范式和反范式
- mysql三范式与逆范式
- MySql--数据库设计三范式
- MySQL的三大范式
- mysql面试--三大范式
- mybatis“集合嵌套查询”和“集合嵌套结果”两种方法实现数据库一对多关系
- 完整的一个表单例子
- shell遍历文件性能
- 环境安装相关
- OpenCV学习笔记八——常用数据结构和函数
- Mysql三范式
- 表单集合
- Spring配置文件中配置数据库连接(mysql,sqlserver,oracle)
- linux下php7修改端口号
- 水~~~水仙花数
- Codeforces 553A Kyoya and Colored Balls【思维】
- 简单分析uboot启动内核
- 如果我要对oracle某个用户数据库下的很多表进行truncate,有没有简答的方式?我这是比较节省时间的方式
- Mysql的索引