多表之间的关系如何维护
主键约束与唯一约束
主键约束:
- 默认不为空,唯一
- 外键都是指向另一张表的主键
- 主键一张表只能有一个
唯一约束:
- 列表的内容必须唯一,不能出现重复情况,为空
- 唯一约束不可以作为其他表的外键
- 可以有多个唯一约束
关于外键:
- 外键约束:forerign key,一般在多的一方添加外键,指向一的一方。
- 给product这个商品的cid添加一个外键约束: ALTER TABLE product ADD FOREIGN KEY(cno) REFERENCES category(cid);
- 删除时,可以删除一对多中多的一方,比如可以删除某个商品,但如果一与多有对应关系,则不能直接删除一的一方,比如商品分类。
- 从分类表category中删除分类为5的信息,删除失败:DELETE FROM category WHERE cid = 5;
- 需要在product表中将所有cno为5的商品删除,才可以删除非类表中cid为5的信息。
一对一建表:
建表原则: 合并一张表, 将主键建立关系 , 将它当作一对多的情况来处理
一对多建表
原则:
- 将一对一的关系当成一对多的关系处理,从一张表中建立唯一外键,对应另一张表
- 直接让两张表合并成一张表
- 将两张表的主键建立起连接,让两张表里面主键相等
实际用途:用的不是很多,拆表操作
例如:相亲网站:将个人常用信息和不常用信息,减少表的臃肿
多对多建表:
- 拆成一对多
- 创建一张中间表, 至少要有两个外键, 指向原来的表
例1:
例2: