MySQL数据库外键的使用

299 阅读2分钟

MySQL数据库外键的使用

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

使用场景

  • 问题: 在新建一些数据库关系表的时候经常会遇到不同表之间的关联关系,不同数据库之间的连接使用外键是一个很好的解决方法
  1. 外键约束(foreign key):建⽴不同表之间的关联关系
  2. 外键约束:将⼀个列添加外键约束与另⼀张表的主键(唯⼀列)进⾏关联之后,这个外键 约束的列添加的数据必须要在关联的主键字段中存在
  3. 外键约束-级联

级联:当用户表中存在借书数量关联借阅表的某条记录时,就不能对借阅表的这条记录进⾏修 改 外键级联可以解决这个问题

  • 用户表

图1.png

  • 借阅表

图2.png

使用过程

数据库脚本 (两个表)

-- book 表
create table book
(
   bid                  int not null auto_increment,
   bname                varchar(100) not null,
   author               varchar(255) not null,
   publish              varchar(255) not null,
   bprice               float,
   isborrow             char(10) not null default '可借',
   primary key (bid)
);
​
-- 借阅表
create table borrow
(
   sid                  char(20) not null,
   bid                  int not null,
   bdata                date not null,
   isreturn             char(10) not null
);
​
-- 外键级联alter table borrow add constraint FK_borrow foreign key (sid)
      references user (sid) on delete restrict on update restrict;
​
alter table borrow add constraint FK_borrow2 foreign key (bid)
      references book (bid) on delete restrict on update restrict;

通过外键级联,可以在borrow后者book 变化的使用同时更新,关联的外键

多表关联

⽅法:额外创建⼀张关系表来维护多对多关联——在关系表中定义两个外键,分别与两个数 据表的主键进⾏关联

例如:

学⽣ --- 课程 ⼀个学⽣可以选择多⻔课、⼀⻔课程也可以由多个学⽣选择

会员 --- 社团 ⼀个会员可以参加多个社团、⼀个社团也可以招纳多个会员

图3.png