vlambda博客
学习文章列表

mysql里表的关系与外键

一、mysql里表的关系有:

1. 一对一。

  • 在A表中有一条记录,在B表中同样有唯一一条记录与之相匹配。

  • 例如,学生表和成绩表。

2. 一对多。

  • 在A表中有一条记录,在B表中有多条记录与之相对应。

3. 多对多。

  • A表中的一条记录有多条B表数据对应,同样B表中一条数据在A表中也有多条数据与之对应。

  • 例如,用户与商品的关系。

  • 表设计时一般多建一张表来记录多对多的关系(id\uid\pid)。


二、mysql里表的外键:

1. 外键的概述。

  • 外键是一种约束,他只能保证数据的一致性,并不能给系统带来任何好处。

  • 建立外键时,都会在外键列上建立对应的索引,外键的存在会在每一次数据写入、修改时进行约束检查,如果不满足外键约束则禁止数据的插入或修改,这必然带来一个问题,就是在数据量特别大的情况下,每一次约束检查必然导致性能的下降。

  • 出于性能的考虑,如果我们的系统对性能要求较高,那么可以考虑在生产环境中不适用外键。

2. 添加外键。

  • alter table userinfo add constraint fk_uid foreign key(id) references user(id);

  • 添加数据的时候,要先添加主表的数据,再添加从表对应的数据。

  • 删除数据的时候,要先删除从表的数据,再删除主表的数据。

3. 删除外键

  • alter table userinfo drop foreign key fk_uid。