开发中抽象出来的各个实体之间的关系有:一对一,一对多,多对多 三种,在设计表的时候 先考虑是哪种情况,然后再看看怎么建表。
- 一对一。通常建表时建立 2 个表(主副表),外键建立在附表中。例如下图,可建立学生表和身份证表。
2.一对多。建立 2 个表,将 “一” 的一方的主键作为 “多”的一方的外键。(后面说为什么)
3.多对多。建立 3 个表,除了两个实体所建的两张表外,再建一张表(关系表):将两个实体的主键作为属性,并为该表创建一个自己的id。
补充:(来自https://www.cnblogs.com/yonyong/p/9227558.html)
关于主外键及多表联系的进一步理解:
主外键的存在是依托两个实体之间的关系而存在的;
比如班级与学生的关系:
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?
因为,你想一想班级表内如果放学生那么记录可能就是这样:
1班ID 1班 xx同学id
1班ID 1班 xx同学id
…
这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;
(图来自网络)