表与表之间的关系
表与表之间的关系(设计表时考虑的)有三种:一对一、一对多(多对一)、多对多。
一对一
一对一:一张表的一条记录一定只能与另外一张表的一条记录进行对应;反之亦然。
一个常用表中的一条记录,永远只能在一张不常用表中匹配一条记录;反过来,一个不常用表中的一条记录在常用表中也只能匹配一条记录:一对一关系。
在实际的开发中应用不多,因为一对一可以创建成一张表。
建表原则:
* 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique。
* 外键是主键:主表的主键和从表的主键,形成主外键关系。
一对多
一对多:一张表中有一条记录可以对应另外一张表中的多条记录;但是反过来,另外一张表的一条记录只能对应第一张表的一条记录。这种关系就是一对多或者多对一。
分类和商品:一个分类对应多个商品,一个商品只能属于某一个分类。
部门和员工:一个部门可以有多个员工,一个员工只能属于某一个部门。
建表原则:
* 在多的一方创建一个字段,字段作为外键指向一的一方的主键。
多对多
多对多:一张表中(A)的一条记录能够对应另外一张表(B)中的多条记录;同时B表中的一条记录也能对应A表中的多条记录:多对多的关系。
增加中间表之后,中间表与老师表形成了一对多的关系,而且中间表是多表,维护了能够唯一找到一表的关系;同样的,学生表与中间表也是一个一对多的关系。一对多的关系可以匹配到关联表之间的数据。
学生找老师:找出学生id->中间表寻找匹配记录(多条)->老师表匹配(一条)
老师找学生:找出老师id->中间表寻找匹配记录(多条)->学生表匹配(一条)
建表原则:
* 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。