数据库设计
数据库设计范式
- 为什么要使用范式?
- 数据库设计范式可以很好的为我们规避数据操作异常和数据冗余,可以更合理的设计数据库表,处理表与表之间的关系。
- 数据操作异常
- 插入异常:本该被插入的数据没有被插入。
- 一个实体依赖于另一个实体,插入该实体时,若依赖的实体没有插入,则会产生插入异常。
更新异常:简单事实却要更新多次。
删除异常:删除不该删除的数据。
- 删除一个实体实例时,导致另一个实体实例信息的丢失。
- 数据冗余
- 相同数据多个地方存在或者表中某列可以由其他列计算得到。
- 第一范式:实体的属性都是单一属性,不可再分。(原子性约束)
- 第二范式:实体的非主属性完全依赖于主关键字(单一属性或者属性组),不能仅依赖于主关键字的部分属性。(唯一性约束)
- 数据库表中的每一行必须可以被唯一地区分。
- 消除非主属性对主码的部分函数依赖。
- 第三范式:实体的非主属性不依赖于其他的非主属性,即不传递依赖于主属性。(冗余性约束)
- 数据库表中字段不能冗余出现,任何字段不能由其他字段派生出来。
- 消除非主属性对主码的传递依赖。
- BC范式:实体的非主属性不依赖于主键子集。(进一步降低冗余性)
- 对第三范式的修正,使数据库冗余性更小。
- 消除非主属性对主码子集的依赖。
以上仅为本人学习过程中的知识总结,若有错误,还请诸位不吝赐教。
数据库设计-逻辑设计-范式
原文:https://www.cnblogs.com/sundaoxing/p/10744261.html