表关系
表关系:表与表之间(实体)有什么样的关系,每种关系应该如何设计表结构
一对一
一对一:一张表中的一条记录与另外一张表中最多有一条明确的关系,通常,此设计方案保证两张表中使用同样的主键即可
学生表
学生ID(PRI) | 姓名 | 年龄 | 性别 | 籍贯 | 婚否 | 住址 |
| | | | | | |
学生表
表的使用过程中:常用的信息会经常去查询,而不常用的信息会偶尔才会用到。
解决方案:将两张表拆分,常见的放一张表,不常见的放一张表
一对多(多对一)
一对多,通常也叫作多对一的关系,通常一对多的关系设计的方案,在多关系的表中去维护一个字段,这个字段是"一"关系的主键。
孩子表
孩子ID | 姓名 | 年龄 | 身高 | 母亲ID |
k1 | | | | M1 |
k2 | | | | M1 |
多对多
多对多:一张表中的一条记录在另外一张表中可以匹配到多条记录,反过来也一样。多对多的关系如果按照多对一的关系维护,就会出现一个字段中有多个其他表的主键,在访问的时候就会带来不便。既然通过两张表自己增加字段 解决不了问题,那么就通过第三张表来解决。
师生关系:
1、一个老师教过多个班级的学生;
2、一个学生听过多个老师讲的课;
教师表
Tid | name | age | gender |
T1 | 张兴 | 20 | 男 |
T2 | 李梅 | 30 | 女 |
学生表
Sid | name | age | gender |
S1 | 王平 | 16 | 男 |
S2 | 张萍 | 18 | 女 |
S3 | 李自成 | 17 | 男 |
S4 | 邓辉 | 16 | 男 |
多对多解决方案:增加一个中间表,让中间表与对应的其他表形成两个多对一的关系:多对一的解决方案是在"多"表中增加"一"表对应的主键字段。
中间表
ID | Tid | Sid |
1 | T1 | S1 |
2 | T1 | S3 |
3 | T1 | S4 |
4 | T2 | S2 |
5 | T2 | S4 |