关联关系
在开发中,需要根据实体的内容设计数据表,实体间会有各种关联关系,所以,根据实体设计的数据表之间,也存在着各种关联关系。
MySQL中,数据表的关联关系分为三种
<h3 id=”一对一”>一对一
一对一关系,在实际生活中比较常见
比如,人与身份证之间,就是一对一的关系,一个人对应一张身份证,一张身份证只能匹配一个人。
建立外键,首先,要分清主从关系,从表需要主表的存在才有意义,身份证需要人的存在,才有意义,因此,人为主表,身份证为从表,要在身份证中建立外键。
注意,这种方法关系在数据库中并不常见,因为,这种方式存储的信息通常会放在一个表中。
在实际开发中,一对一关联关系,可以应用于以下几个方面
1、分割具有很多列的表
2、由于安全原因,而隔离表的一部分
3、保存临时的数据,并且,可以毫不费力的通过删除该表,而删除这些数据
<h1 id=”多对一”>多对一
多对一是数据表中,最常见的一种关系
比如,员工和部门之间的关系,一个部门可以有多个员工,但是,一个员工从属于一个部门,部门表中的一行在员工表中,可以有许多匹配行,但是,员工表中的一行,在部门表中只能有一个匹配行。
建立外键,在多对一的表关系中,应该将外键建在多的一方,否则,会造成数据冗余。
<h3 id=”多对多”>多对多
多对多也是数据表中的一种关系
比如,学生与课程之间的关系,一个学生可以选择多门课程,一门课程可以供多个学生选择,学生表中的一行,在课程表中可以有许多匹配行,课程表中的一行,在学生表中也有许多匹配行
通常情况下,实现这种关系,需要定义一张中间表,称为连接表,该表会存在两个外键,分别参考课程表和学生表
注意,连接表中的两个外键是可以重复的,但是,这两个外键之间的关系,是不能重复的,所以,这两个外键又是连接表的联合主键