adjacent concept / 多对多关系如何拆成中间表
Junction Tables
中间表是把多对多关系拆成两条一对多关系的表,每一行表示一对实体之间的一次关联。
Key fields
Identity
- Subtype
- 方法
- Parent Taxonomy
- Database Design
What
- Definition
- 中间表是把多对多关系拆成两条一对多关系的表,每一行表示一对实体之间的一次关联。
- Prerequisite Knowledge
- Cardinality and Relationship Types, Entity–Relationship Diagram
Why
- Core Question
- 如何保存“一个作者写多本书、一本书有多位作者”而不制造重复列?
- Mechanism
- 中间表至少包含两侧实体的外键,通常用两列组合成主键或唯一约束。
Where
- Manifestation
- book_authors 可以保存 book_id、author_id 和 author_order;每行代表一位作者与一本书的一次关联。
How
- Primary Use
- 稳定表达多对多关系,并为关系本身增加角色、顺序和时间等属性。
Evidence
- Limitations
- 中间表不是万能的“关系垃圾桶”;它仍需要清楚粒度、主键、外键和额外属性。
Lifecycle
- Status
- 草稿
Additional content
- Legacy Tags
- 关系型数据库 · 键 · ER 图
Relations
- Related Content
- Library Database Design Case
Related content
Relationships come from the local knowledge graph and include reverse links.
- Database Design数据库设计Related
研究如何把真实问题中的对象、属性和关系组织成可靠、可查询、可维护的数据结构。
- Cardinality and Relationship Types一对一、一对多与多对多Related
关系基数描述一侧实体与另一侧实体可以关联多少个实例,常见类型是一对一、一对多和多对多。
- Database Design Process数据库设计流程Reverse · Related
数据库设计流程是把业务需求逐步转成概念模型、关系表、约束和可验证查询的过程。
- Entity–Relationship DiagramER 图Related
ER 图是描述实体、属性、关系及其基数的建模图示,用于在实现数据库前检查结构和含义。
- Library Database Design Case图书馆数据库设计案例Related
通过图书、作者、会员和借阅需求,完整演示从粒度、实体、关系和 ER 图到 SQLite DDL 与典型查询的数据库设计过程。