约束,多表关系维护
多表之间的关系如何维护
主键约束与唯一约束
主键约束:
- 默认不为空,唯一
- 外键都是指向另一张表的主键
- 主键一张表只能有一个
唯一约束:
- 列表的内容必须唯一,不能出现重复情况,为空
- 唯一约束不可以作为其他表的外键
- 可以有多个唯一约束
关于外键:
- 外键约束: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:
分类:
后端技术栈 / MYSQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端