MySQL之多表

一.多表之间的关系可以分为:一对多,多对多两种。

  1. 一对多关系:假设有两张表A,B。其中A表中的一个字段对应于B表中的多个字段,例如商品分类表和商品表一个分类下对应多个商品,具有入下的关系。
    一对多表关系图

  2. 根据上述关系,不难发现category表和products表之前有一个外键的约束,即cid约束。在category中cid是主键具有唯一性,在products表中cid是外键,约束了products表的增改操作。

  3. 利用SQL语句建立主外键约束首先分清主表和从表,主表如category表,是另一个表的约束规定了另一张表的外键字段的取值范围的表;从表例如products表,是一种一个外键对应多个数据的那张表。简单的记忆从表就是两个表关系中多的那一方,而主表就是一的那一方。
  4. 分清了主从表就可以为两张表添加外键约束:①alter table 从表名 add [constraint 约束名] foreign key(从表列名) references 主表名(主表主键)。②在建表的时候添加:foreign key(从表外键名) references 主表名(主表主键);

二.多对多的关系

  1. 多对多的关系例如课程表和学生表:一个学生可以选多门课程,而且一门课程可以被多个学生选择。
  2. 多对多关系
  3. 对于多对多的关系,我们需要为两张表新建一张中年表分表将两张表的主键作为新表的字段值,分别与两张表建立外键约束。
  4. 很容易发现,两张表与中间表的关系都是一对多的关系。所以 两张多对多的表实现外键约束就是拆分出一个中间表,让两个表与中间表分别形成一对多的关系。

三.建立外键约束后分别对主表和从表的影响

  1. 一对多的关系:对于主表的添加不受约束,但是删除和修改和从表相关联的数据时受到约束;对于从表来说删除不受影响,但是添加和修改相关联数据受到约束,因为添加和修改的外键值必须在主键中包含。
  2. 多对多的表关系中,以此类推,两个主表和一对多中主表的约束相同,而中间表的删除不受影响,但是添加和修改受到两张表的影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值