Составной ключ (Composite Key)
Составной ключ — это первичный ключ, состоящий из двух или более атрибутов, которые вместе обеспечивают уникальность записи.
Usage: 1. Link tables (Many-to-Many). 2. Weak entities. 3. Partitioning. Performance: Affects index size and join speed. Alternatives: Surrogate Keys (UUID/Incremental ID). Rules: Columns in a composite key cannot be NULL.
graph LR
Center["Составной ключ (Composite Key)"]:::main
Rel_data_modeling["data-modeling"]:::related -.-> Center
click Rel_data_modeling "/terms/data-modeling"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Простыми словами
Представь расписание поездов. Номер поезда — не уникален (он ездит каждый день). Дата — тоже не уникальна (много поездов в один день). Но 'Номер поезда + Дата' — это составной ключ, который точно укажет на один конкретный рейс.
🤓 Expert Deep Dive
Технически, создание составного ключа автоматически создает 'Составной Индекс'. Это означает, что база данных будет хранить значения этих колонок в отсортированном виде одним блоком. Это ускоряет выборки, которые используют все части ключа, но делает операции вставки (INSERT) чуть медленнее. В архитектуре микросервисов составные ключи иногда используются для обеспечения идемпотентности операций при передаче сообщений между сервисами.