暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL数据库-设计

原创 kobrey 2021-10-12
357

关系(二维表)的设计规范,范式

范式:就是指对表的结构的要求

第一范式,1NF (Normal format)

要求字段不能再分!要求字段的原子性!

第二范式,2NF范式的要求,是逐渐递增!

在满足了第一范式的前提下,不能出现部分依赖!

部分依赖指的是:普通字段对主键是完全依赖的,而不应该是依赖主键的一部分分!

依赖:可以通过哪个字段去决定另一个字段因此,出现主键部分依赖的前提是,出现复合主键!

其中代课时间,开始和结束时间,没有部分依赖!

称之为完全依赖于主键,

但是,性别,依赖于讲师字段即可!

讲师字段是主键的一部分!因此称之为性别部分依赖于主键!

因此,该表不符合第二范式!消灭复合主键即可!

增加一个唯一字段的主键即可!增加一个与业务逻辑无关系的,唯一的ID主键:int unsigned primary key aotu_increment

因此,解决第二范式的方法是:增加唯一主键即可!ID

 

第三范式,3NF在满足第二范式的前提下,

取消传递依赖,就是第三范式!

传递依赖:如果字段B对字段A有依赖,而字段C对字段B存在依赖,则出现了传递依赖!

讲师依赖于ID,而性别依赖于讲师,班级依赖于ID,而教室依赖于班级!

解决:要保证所有的字段都完全依赖于主键,而不依赖于其他字段将独立的实体信息,使用独立的关系(二维表)进行保存!

上表中分别增加讲师,班级表,将代课信息内的讲师与班级信息拆分!

 

总结:每个实体建立一个表,为每个表增加一个主键ID即可!

 

 

 

实体之间的关系的设计

范式讲的是一个实体表应该如何设计,而实体之间的关系讲的是多个实体表应该如何设计!

实体之间存在哪些关系?

班级,学生两类实体!

一对多,多对一!1:N,N:1

班级,讲师两类实体!

多对多,M:N

学生实体分为常用信息与不常用信息一对一,1:1

 

如何设计:

多对一,一对多:在多的那端(那个表内),增加一个字段,用于保存于当前记录相关联的一端记录的主键!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论