【MySQL】外键的变种 -- 2019-08-11 18:24:58
原文: http://106.13.73.98/__/24/ 目录 三种关系 多对一 多对多 一对一 因为有foreign key的约束,使得两张表形成了三种关系: 多对一 多对多 一对多 重点理解如何找出两张表之间的关系 现在有A、B两张表 分析步骤: 1. 先站在A表的角度去找 :是否A表的多条记录可以对应B表的一条记录,如果是,则证明A表的一个字段 foreign key B表的一个字段(通常是id). 2. 再站在B表的角度去找 :是否B表的多条记录可以对应A表的一条记录,如果是,则证明B表的一个字段 foreign key A表的一个字段(通常是id). 3. 总结: 多对一 如果是步骤1成立,则是A表多对一B表 如果是步骤2成立,则是B表多对一A表 多对多 如果步骤1和步骤2同时成立,则证明这两张表是一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系. 一对一 如果1和2都不成立,而是A表的一条记录唯一对应B表的一条记录,反之亦然。这种情况很简单,就是在A表 foreign key B表的基础上,将A表的外键字段设置成unique即可 三种关系 多对一 或者说是一对多 举例:书和出版社 一个出版社可以出版多本书,请看图: ![在这里插入图片描述](http://106.13.73.98/media/ai/2019-03/463fea85