mysql-5:多表关系

多表关系

文章目录

  • 多表关系
    • 关系
    • 外键
      • 操作外键
    • 一对一关系
      • 关系创建
    • 一对多关系
      • 关系创建
    • 多对多关系
      • 关系创建

关系

  • 一对一
  • 一对多
  • 多对多
    • 需要中间表实现

外键

  • 如何表示表与表之间的关系呢?就是使用外键约束表示的
  • 要想理解外键,我们先去理解表的角色:主表和从表(需要建立关系才有了主从表的角色区分)
    • 主表:应该有一个字段去关联从表,而这个关联字段就是外键
    • 从表:应该有一个字段去关联主表,而这个关联字段就是主键
  • 使用外键的目的:
    • 保证数据完整性(数据保存在多张表中的时候)

在互联网项目中,一般情况下,不建议建立外键关系。

操作外键

  • 主表添加外键的格式
alter table 表名 add [constraint][约束名称] foreign key (主表外键字段) references 从表(从表主键)
  • 主表删除外键的格式
alter table 表名 drop foreign key 外键约束名称

一对一关系

  • 建表
CREATE TABLE wife(
id INT PRIMARY KEY ,
wname VARCHAR(20),
sex CHAR(1)
);
CREATE TABLE husband(
id INT PRIMARY KEY ,
hname VARCHAR(20),
sex CHAR(1)
);
  • 在实际工作中,一对一在开发中应用不多,因为一对一完全可以创建成一张表

关系创建

  • 方式1:外键唯一
    • 添加外键列wid,指定该列的约束为唯一(不加唯一约束就是一对多关系)
      • ALTER TABLE husband ADD wid INT UNIQUE;
    • 添加外键约束
      • alter table husband add foreign key (wid) references wife(id);
  • 方式2:主键做外键

一对多关系

  • 有外键的就是多的一方
  • 对多关系和一对一关系的创建很类似,唯一区别就是外键不唯一

关系创建

  • 添加外键列
  • 添加外键约束

多对多关系

需要中间表去完成多对多关系的创建
多对多关系其实就是两个一对多关系的组合

关系创建

  • 创建中间表,并在其中创建多对多关系中两张表的外键列
  • 在中间表中添加外键约束
  • 在中间表中添加联合主键约束
  • 例如:
    • 用户和角色
      • 1个用户对多个角色
      • 1个角色对多个用户
      • 中间表用户角色表 uid rid

你可能感兴趣的:(数据库,mysql,数据库)