数据库表关系详解:一对多、多对多和一对一
创作时间:
作者:
@小白创作中心
数据库表关系详解:一对多、多对多和一对一
引用
CSDN
1.
https://blog.csdn.net/m0_74386799/article/details/139477640
在项目开发中,进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,各个表之间的结构基本上分为三种:一对多,多对多,一对一。
一对多
例如,一个学校可以有多个学生,而一个学生对应一个学校
实现:在多的一方建立外键,指向一的一方的主键。
多对多
例如,一个学生可以选修多门课程,一门课程也可以有多名学生。
实现:建立第三张中间表,中间表至少包含两个外键,分别关联两边的主键。
示例:新创建一张course表,使其与之前的user表连接,这中间需要用一张中间表进行连接。
CREATE table course(
id int auto_increment primary key comment '主键id',
course_name varchar(10) comment '课程名称'
)comment '课程表';
insert into course value (null,'java'),(null,'vue'),(null,'MySQL');
create table student_course(
id int auto_increment comment '主键' primary key ,
studentid int not null comment '学生id',
courseid int not null comment '课程id',
constraint fk_courseid foreign key (courseid) references course(id),
constraint fk_studentid foreign key (studentid) references user(id)--添加外键
)comment '学生中间表';
此时已经成功连接上两张表,在DataGrip里可以更直观的看到这些表的联系。
右击中间表点击Diagrams,选择Show Diagram
一对一
例如学生与学生信息的关系。
关系:一对一的关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。
实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一(UNIQUE)的。
热门推荐
如何认识海洋的自然状况?这种认识对海洋保护有何意义?
比亚迪+富士康+华为+超聚变,四大巨头为何加码投资河南?
设计数据库时,需遵循的6大最佳实践!
轮胎该怎么保养
用了多年智能手机,结果充电姿势都是错的……
清朝满族旗人的生活探秘,社会地位又是什么样的?
骨折后吃什么最快恢复?营养科专家给出6大饮食建议
骨折处理全攻略:从急救到康复
股票交易费用的法律解析与实务指南
民进中央:推动爱国主义教育与红色旅游深度结合
鬼谷八荒昆吾仙祠仙法获取攻略:五种剑意仙法详解
家庭保姆劳动合同书法律解析及实务操作指南
犯罪中止的试题:理论与实践的深度解析
古老的漆艺如何更好地融入现代生活?
走近城市地下工种地铁检修工:深夜里,“轨道医生”护航城市“动脉”
Django与Flask的区别:从开发者视角的深度探讨
健康科普|脐带护理
酪氨酸酶抑制剂或能用于安全美白
俄罗斯套娃:从传统工艺到世界文化遗产
九宫游龙功:传统武术中的穿桩功夫详解
「偽日本料理」風靡全球:體現飲食文化的多樣性,或帶來新的可能
隋朝的风水秘密:揭秘大兴城的神秘设计!
内蒙古森工集团推进“智慧林业、数字森工”建设
羊奶的功效与作用、禁忌和食用方法
庚申日五行属什么?庚申日柱命运解析
哪些人容易得焦虑症,如何缓解焦虑?
A股大宗交易规则详解:门槛、时间与影响面面观
超2万人研究证实:运动能提升“颜值”
5-HT受体与疾病治疗:机制、应用与前景展望
如何科学应对儿童挑食问题