数据库表关系详解

简介: 数据库表间关系主要包括一对多、一对一和多对多三种类型。**一对多**中,父表(如班级)与子表(如学生)通过外键关联,操作时先增父表后增子表,删除顺序相反;**一对一**关系通常通过唯一外键实现,确保两张表记录一一对应;**多对多**需引入关系表存储外键,连接两表数据,操作时关系表最后处理。设计口诀:“一对多,两张表,多的表加外键”;“多对多,三张表,关系表加外键”。明确表间关系是编写正确SQL的基础。

一、一对多关系
特征:表A的一条记录对应表B的多条记录,表B的一条记录仅对应表A的一条记录
示例:

学生表(子表)
| id | name | class_id | |-----|------|----------| |1001| 张三 | 111 | |1002| 张四 | 222 |

班级表(父表)
| id | name | |-----|---------| |111 | class1 | |222 | class2 |

操作要点:

数据添加顺序:先父表(class)后子表(student)
数据删除顺序:先子表(student)后父表(class)
设计口诀:"一对多,两张表,多的表加外键"
查询案例:查找姓"张"学生的班级信息

SELECT s.id, s.name, c.name AS className
FROM student s
JOIN class c ON s.class_id = c.id
WHERE s.name LIKE '张%'
二、一对一关系
特征:表A与表B的记录严格一一对应
设计方案:

唯一外键法(推荐)
学生表:
| id | name | |-----|------| |1001| 张三 |

学生卡表(添加唯一约束):
| id | name | student_id | |-----|-------|------------| |111 | card1 | 1001 |

查询案例:查询张三的学生卡信息

SELECT *
FROM card c
JOIN student s ON c.student_id = s.id
WHERE s.name = '张三'
三、多对多关系
特征:表A与表B的记录可相互对应多条
示例:

学生表
| id | name | |-----|------| |1001| 张三 |

课程表
| id | name | |-----|-------| |111 | Java |

关系表(核心组件)
| student_id | course_id | |------------|-----------| |1001 |111 |

操作要点:

数据添加顺序:先父表(student/course)后关系表
数据删除顺序:先关系表后父表
设计口诀:"多对多,三张表,关系表加外键"
查询案例:查找姓"张"学生选修的课程

SELECT s.id, s.name, c.name
FROM student s
JOIN student_course_relation scr ON scr.student_id = s.id
JOIN course c ON scr.course_id = c.id
WHERE s.name LIKE '张%'
关键总结
关系判断:明确表间关系是编写正确SQL的前提
操作顺序:
一对多:父表先增后删
多对多:关系表最后操作
设计口诀:
一对多:两张表,多表加外键
多对多:三张表,关系表存外键
————————————————

相关文章
|
语音技术
从语音信号处理角度解读mic规格书
对于语音信号处理来说,输入音频数据的质量很重要。而mic作为声音的采集设备,会直接影响采集到声音的质量。虽然mic选型是硬件或者声学方面的工作重点,但是对于从事语音信号处理相关人员来说,理解mic规格书中的一些技术指标也是大有裨益的。本文结合国家标准对mic规格书中的一些指标进行说明。
从语音信号处理角度解读mic规格书
|
数据可视化 Java uml
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
6764 0
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
|
人工智能 并行计算 算法
量子计算算法:超越经典计算机的边界
量子计算基于量子力学原理,利用量子位、量子叠加和量子纠缠等特性,实现并行计算和高效处理复杂问题。核心算法如Shor算法和Grover算法展示了量子计算在大数分解和搜索问题上的优势。尽管面临量子位稳定性和规模化等挑战,量子计算在化学模拟、优化问题和人工智能等领域展现出巨大潜力,预示着未来的广泛应用前景。
|
关系型数据库 MySQL 数据库
【MySQL】-多表设计(一对多、一对一、多对多)
设计数据库时,不同类型的关系需要谨慎考虑,以反映实际需求并优化性能。查询设计良好的数据库通常会更高效,并有助于减少数据冗余和维护成本。同时,确保外键索引的正确使用,可以显著提升查询效率和数据一致性。通过这些原则和技巧的应用,我们可以在遵循数据库设计的最佳实践的同时,确保数据的可扩展性和可维护性。
2022 4
|
11月前
|
关系型数据库 MySQL
MySQL数据表添加字段(三种方式)
本文解析了数据表的基本概念及字段添加方法。在数据表中,字段是纵向列结构,记录为横向行数据。MySQL通过`ALTER TABLE`指令支持三种字段添加方式:1) 末尾追加字段,直接使用`ADD`语句;2) 首列插入字段,通过`FIRST`关键字实现;3) 指定位置插入字段,利用`AFTER`指定目标字段。文内结合`student`表实例详细演示了每种方法的操作步骤与结构验证,便于理解与实践。
|
11月前
|
安全 网络协议 Linux
Linux查 ssh端口号和服务状态
本指南详细介绍如何检查SSH服务的运行状态,包括通过进程命令验证服务启动、查看监听端口、检测系统服务状态以及防火墙配置。同时提供安全建议,如修改默认端口、禁用密码登录和定期更新系统,确保SSH服务稳定与安全。适用于不同Linux发行版(Systemd/SysVinit),帮助用户全面排查和优化SSH配置。
|
人工智能 数据管理 API
手把手教你搭建企业微信AI助手
全程图文,一步一步带你搭建基于云百炼的RAG应用,并配置知识库,让AI助手更专业、更智能。
3192 1
|
算法 程序员 分布式数据库
分布式一致性必备:一文读懂Raft算法
Raft算法是一种用于分布式系统中复制日志一致性管理的算法。它通过选举领导者来协调日志复制,确保所有节点数据一致。算法包括心跳机制、选举过程、日志复制和一致性保证。当领导者失效时,节点会重新选举,保证高可用性。Raft易于理解和实现,提供强一致性,常用于分布式数据库和协调服务。作者小米分享了相关知识,鼓励对分布式系统感兴趣的读者进一步探索。
3457 1
|
Windows
代码签名证书如何申请
代码签名证书如何申请
551 0