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