数据库设计 个人笔记

数据库设计之---------多表之间的关系

1 、 一对一:
如:学生和身份证
一个学生只能有一个身份证,而一个身份证也只能对应一个学生,所以他们之间的的关系是一对一。
数据库设计 个人笔记
经过分析发现,如果表与表之间的关系是一对一的 ,可以在任意一方添加的外键指向另一方的主键。 如上图 在学生表中添加一列sid作为外键 指向身份证表的id (主键)。
而外键有可能会出现重复的情况,如上图的例子,在学生表中添加数据的时候,很有可能会出现两个学生对应同一个身份证号的情况,所以要将外键设为唯一约束。
当然 一般情况下一对一的表关系 可以直接将两个表合在一起,这样更加方便。

2 、 一对多

如:学生与系部直接的关系
一个学生只属于一个系部,而一个系部可以有多名学生,
从系部到学生之间的关系就是一对多的关系
数据库设计 个人笔记
分析发现 我们可以在多的一方建立外键,指向1的一方 从而更好的实现这种关系。 如上图的列子, 系部表和学生表 是一对多的关系 ,学生表是多的一方,所以在学生表中添加一列departNo 列作为外键 指向系部表的departNo列(主键)

3、 多对多
如: 学生与课程之间的关系
一个学生可以选择多门课程进行学习,一门课程也可以同时被多名学生所选,
学生与课程之间的关系就是多对多。
数据库设计 个人笔记
要想实现这种表关系 需要借助第三张表来完成 第三张表至少要包含两个字段,这两个字段作为第三张表的外键 分别指向两张表的主键 如上图所示,在学生表和课程表之间创建中间表,这张表包含了 学生表中的学号(主键),和课程表中的课程号(主键)。