邻接学科概念 / Junction Tables
多对多关系如何拆成中间表
中间表是把多对多关系拆成两条一对多关系的表,每一行表示一对实体之间的一次关联。
关键字段
Identity · 身份
- 子类型
- 方法
- 父级类目
- 数据库设计
What · 是什么
- 定义
- 中间表是把多对多关系拆成两条一对多关系的表,每一行表示一对实体之间的一次关联。
- 前置知识
- 一对一、一对多与多对多、ER 图
Why · 为什么
- 核心问题
- 如何保存“一个作者写多本书、一本书有多位作者”而不制造重复列?
- 作用机制
- 中间表至少包含两侧实体的外键,通常用两列组合成主键或唯一约束。
Where · 在哪里
- 表现形式
- book_authors 可以保存 book_id、author_id 和 author_order;每行代表一位作者与一本书的一次关联。
How · 怎么做
- 主要用途
- 稳定表达多对多关系,并为关系本身增加角色、顺序和时间等属性。
Evidence · 证据
- 局限与边界
- 中间表不是万能的“关系垃圾桶”;它仍需要清楚粒度、主键、外键和额外属性。
Lifecycle · 生命周期
- 状态
- 草稿
Content · 补充内容
- 兼容标签
- 关系型数据库 · 键 · ER 图
Relation · 关联
- 相关内容
- 图书馆数据库设计案例
相关设计机制
关系来自本地关系表,并包含反向关联。
- 数据库设计Database Design属于
研究如何把真实问题中的对象、属性和关系组织成可靠、可查询、可维护的数据结构。
- 一对一、一对多与多对多Cardinality and Relationship Types依赖于
关系基数描述一侧实体与另一侧实体可以关联多少个实例,常见类型是一对一、一对多和多对多。
- 数据库设计流程Database Design Process反向 · 依赖于
数据库设计流程是把业务需求逐步转成概念模型、关系表、约束和可验证查询的过程。
- ER 图Entity–Relationship Diagram依赖于
ER 图是描述实体、属性、关系及其基数的建模图示,用于在实现数据库前检查结构和含义。
- 图书馆数据库设计案例Library Database Design Case相关
通过图书、作者、会员和借阅需求,完整演示从粒度、实体、关系和 ER 图到 SQLite DDL 与典型查询的数据库设计过程。