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。