数据库三大范式通俗理解


本文摘自PHP中文网,作者Guanhui,侵删。

数据库三大范式通俗理解

1、原子性,要求属性具有原子性,不可再分解。

1

表:字段1、 字段2(字段2.1、字段2.2)、字段3 ......

如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是;

2、唯一性,一个表只能说明一个事物,即实体的惟一性。

1

表:学号、课程号、姓名、学分;

这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里学分依赖课程号,姓名依赖与学号,所以不符合二范式。

可能会存在问题:

  • 数据冗余:,每条记录都含有相同信息;

  • 删除异常:删除所有学生成绩,就把课程信息全删除了;

  • 插入异常:学生未选课,无法记录进数据库;

  • 更新异常:调整课程学分,所有行都调整。

正确做法:

  • 学生:Student(学号, 姓名);

  • 课程:Course(课程号, 学分);

  • 选课关系:StudentCourse(学号, 课程号, 成绩)。

3、冗余性,每列都与主键都有直接关系,不存在传递依赖。

1

表: 学号, 姓名, 年龄, 学院名称, 学院电话

因为存在依赖传递: (学号) → (学生)→(所在学院) → (学院电话) 。

可能会存在问题:

  • 数据冗余:有重复值;

  • 更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 。

正确做法:

学生:(学号, 姓名, 年龄, 所在学院);

学院:(学院, 电话)。

推荐教程:《MySQL教程》

以上就是数据库三大范式通俗理解的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

怎么样避免mysql死锁

mysql shell的介绍以及安装

mysql建表时怎么设置主键?

怎么设置mysql的环境变量

mysql索引命中规则讲解

mysql连接控制插件介绍

mysql大小写问题及解决方案

mysql的索引优化如何使用

mysql数据表分区技术partition浅析

mysql排序区别

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...