数据库设计-逻辑设计-范式

数据库设计

数据库设计范式

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

以上仅为本人学习过程中的知识总结,若有错误,还请诸位不吝赐教。

 

猜你喜欢

转载自www.cnblogs.com/sundaoxing/p/10744261.html
今日推荐