一、关系
1、将实体与实体的关系,反映到最终数据库表的设计上,将关系分成三种:一对一、一对多(多对一)和多对多
注:所有的关系都是指表与表之间的关系
2、一对一:一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然。一对一关系的设计方案是保证两张表中使用同样的主键即可
eg:将人员的常用信息(姓名、性别、年龄等)和不常用信息(婚姻、籍贯、家庭住址等)分离存储,提高查询效率。使用一个具有唯一性的字段来共同连接两张表,保证常用信息和不常用信息一一对应
3、一对多:通常也叫多对一。一张表中的一条记录可以对应另外一张表中的多条记录。但反过来,另外一张表的一条记录只能对应第一张表的一条记录。一对多关系的设计方案是在“多”关系的表中维护一个字段,这个字段是“一”关系表的主键(通常是在“多”表中维护“一”表对应的关系)
eg:在孩子表(多表)中增加一个字段指向妈妈表(一表)
4、多对多:表A中的一条记录能够对应表B中的多条记录,同时表B中的一条记录也能对应表A中的多条记录。多对多关系的设计方案是增加一个中间表,让中间表与对应的其他表形成两个多对一的关系,多对一的解决方案是在“多”表中增加“一”表对应的主键字段
问题:多对多的关系如果按照多对一的关系维护,就会出现一个字段中有多个其他表的主键,在访问的时候就会带来不便
解决方案:既然通过两张表自己增加字段解决不了问题,那么就通过第三张表来解决。设计一张中间表,维护两张表对应的联系,每一种联系都包含
eg:增加一张新表,专门维护老师表和学生表之间的(多对多)关系。老师表与中间表是一对多的关系,中间表是多表,维护了能够唯一找到一表的关系;同样的,学生表与中间表也是一对多的关系,中间表是多表,一对多的关系可以匹配到关联表之间的数据
(1)学生找老师:找出学生id --> 中间表寻找匹配记录(多条) --> 老师表匹配(一条)
(2)老师找学生:找出老师id --> 中间表寻找匹配记录(多条) --> 学生表匹配(一条)
二、范式
1、范式:Normal Format。

本文详细介绍了MySQL中的三种关系类型:一对一、一对多和多对多,以及如何在数据库设计中处理这些关系。同时,文章阐述了数据库范式的基本概念,包括第一、第二和第三范式,强调了范式在减少数据冗余和优化存储空间方面的作用。最后,文章讨论了逆规范化,指出其在提升查询效率和增加数据冗余之间的权衡。
+范式(三范式+逆规范化)&spm=1001.2101.3001.5002&articleId=84962921&d=1&t=3&u=317faa543348495f8cb5a27cfc5af38b)
2592

被折叠的 条评论
为什么被折叠?



