【MySQL】数据表之间常用关系,外键变种

  1. 一对多关系
    如用户表与部门表,一个用户只所属一个部门,一个部门由多个用户组成
    在这里插入图片描述
    在创建用户表的部门id列时,创建部门表的外键即可
  2. 一对一关系
    用户表与博客表,一个用户只能创建一个博客
    在这里插入图片描述
    建表如下
create table userinfo1(
     id int auto_increment primary key,
     name char(10),
     gender char(10),
     email varchar(64)
    )engine=innodb default charset=utf8;

create table admin(
     id int not null auto_increment primary key,
     username varchar(64) not null,
     password VARCHAR(64) not null,
     user_id int not null,
     unique uq_u1 (user_id),
     CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCES userinfo1(id)
    )engine=innodb default charset=utf8;
  1. 多对多关系
    示例1:用户表与相亲表
    示例2:用户表与主机表,需创建用户主机关系表
    创建如下
create table userinfo2(
     id int auto_increment primary key,
     name char(10),
     gender char(10),
     email varchar(64)
    )engine=innodb default charset=utf8;

create table host(
     id int auto_increment primary key,
     hostname char(64)
    )engine=innodb default charset=utf8;
   
create table user2host(
     id int auto_increment primary key,
     userid int not null,
     hostid int not null,
     unique uq_user_host (userid,hostid),
     CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id),
     CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id)
    )engine=innodb default charset=utf8;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug 挖掘机

支持洋子

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值