关系数据库的设计中,非常重要的部分是将数据元素划分成相关的表,这样不仅可以减少数据的冗余,也能增强查询。需要注意的是无论表与表之间建立的什么关系,决定数据的之间关系的不是表,而是数据本身。表与表之间的关系一般包括有以下三种:一对多,一对一,多对多。
一个表中的一条数据可以对应另一个表的多条数据。一般外键永远在多方(即外键约束约束在多方的列上,绑定一方主键),外键(多方表中的那一列)允许重复,允许包含空值。
一对一关系其实是一对多关系的改造,我们把外键(具有外键约束的就叫外键)设定为唯一的,此时就实现了一对一关系。因此在外键列不仅增加外键约束,还增加唯一性约束(本来外键没有唯一性约束的)。
需要建立一个中间表,将两个需要多对多的表进行连接。中间表与另外两个表之间都是一对多的关系。中间表需要建立两列,并且这两列A1,B1设定为主键约束(也就是联合主键),然后让A1列作为A表的外键,B1列作为B表的外键(这里注意,虽然中间表分开看是“一对多关系”按照之前讲解的外键约束应该放在多方,但是这里我们需要在中间表添加外键约束才会,这样才能防止出现中间表出现了A,B表中都没出现的值)
所以我们需要先建立A,B表,才能建立中间表。一遍中间表不需要存放业务数据,仅仅作为连接作用,因此中间表其实可以就只有两列即可。
注意事项:一般我们在多对多关系中添加数据,现在A,B表中先添加数据,再对中间表添加数据。删除数据则反之,先在中间表中删除数据,再对A,B表删除数据。(一般在关系表中都会先删除外键所在表的数据,再删除关联表的数据)