随笔 - 139  文章 - 0 评论 - 0 阅读 - 33825
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

表的三种关系

1)一对一

关联方式:foreign key+unique
例如1个学生只能有1个学号,1个学号只能对应1个学生

复制代码
#两张表: 学生表(student)和 学号表(student_id)
# 创建学生表
create table student(
    id int primary key auto_increment,
    name varchar(20)
);
# 创建学号表
create table student_id(
    id int primary key auto_increment,
    url varchar(100),
    user_id int unique,
    constraint fk_student foreign key(id) references student(id)
    on delete cascade
    on update cascade
复制代码

 

2)一对多(或多对一)

关联方式:foreign key
例如书和出版社和关系,一个出版社可以出版多本书。

复制代码
#创建出版社表
create table book_concern(
    id int primary key auto_increment,
    name varchar(20)
);
#创建图书表
create table book(
    id int primary key auto_increment,
    name varchar(20),
    book_concern_id int not null,
    constraint fk_book_concern foreign key(id) references book_concern(id)
    on delete cascade
    on update cascade
);
复制代码

 

3)多对多

关联方式:foreign key+一张新的表
例如作者和书籍的关系,一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对多。

复制代码
# 创建被关联表author表,之前的book表在讲多对一的关系已创建
create table author(
    id int primary key auto_increment,
    name varchar(20)
);

#创建一张新的表,这张表存放了author表和book表的关系,查询二者的关系只需查这张表就可以了
create table author2book(
    id int not null unique auto_increment,
    author_id int not null,
    book_id int not null,
    constraint fk_author foreign key(author_id) references author(id)
    on delete cascade
    on update cascade,
    constraint fk_book foreign key(book_id) references book(id)
    on delete cascade
    on update cascade,
    primary key(author_id,book_id)
);
复制代码

 

posted on   longfei2021  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示