美文网首页mysqlMySQLMySQL
MYSQL-数据库设计笔记【3】

MYSQL-数据库设计笔记【3】

作者: 营养早餐 | 来源:发表于2016-11-15 08:37 被阅读92次

    这次说下数据库设计的三大范式和BC范式:

    第一范式:就是原子性,字段不可再分割;【分割到不能分割位置。比如联系人】

    第一范式最形象对比

    第二范式:就是完全依赖,没有部分依赖【非主依赖主键的一部分】

    【前提要满足第一范式】

    第二范式参照

    选课表中可以把(学生,课程)看作联合主键。

    通过(学生,课程)可以选出 教师,教师职称,教室,上课时间,所以可以把(学生,课程)看作联合主键。

    但是,教材并不完全依赖于(学生,课程),只拿出课程就可以确定教材,因为一个课程,一定指定了某个教材。这就叫不完全依赖,或者部分依赖。这就是不满足第二范式

    所以又独立出了课程表。第二范式可以说是消除部分依赖。

    第三范式:就是没有传递依赖。【非主之间存在的依赖关系】

    前提要满足第二范式

    第三范式参照

    在第二范式的修改中,一个教师能确定一个教师职称。【这里教师和教师职称都是非主】这样,教师依赖于(学生,课程),而教师职称又依赖于教师,这叫传递依赖。第三范式就是要消除传递依赖。

    第三范式修改后,这样,新教师的职称在没被选课的时候也有地方存了,没人选这个教师的课的时候教师的职称也不至于被删除,修改教师职称时只修改教师表就可以了。

    BC范式:就是解决主属性的。【 主依赖部分非主

    BC范式参照

    这个表的设计满足三范式,有主键,不存在主键的部分依赖,不存在非主键的传递依赖。但是这里存在另一个依赖关系,“专业”依赖于“导师”,也就是说每个导师只做一个专业方面的导师,只要知道了是哪个导师,我们自然就知道是哪个专业的了。

    所以说学生导师表的部分主键依赖于非主键部分。就把这个表拆分了。分出了导师表。

    总结:

    第一、二、三范式都是解决非主键之间的依赖。

    BC范式是解决主键依赖的关系。

    三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

    相关文章

      网友评论

      • 营养早餐:我天,教材和教师职称都弄混了,但意思没错哈。😂
      • 营养早餐:我天,才发现,第二范式那个图,教师职称那写错了😂

      本文标题:MYSQL-数据库设计笔记【3】

      本文链接:https://www.haomeiwen.com/subject/btnhpttx.html