Складений ключ (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

При проектуванні баз даних складені ключі часто замінюють на 'Суррогатні ключі' (наприклад, ID типу UUID) для спрощення JOIN-запитів. Проте складені ключі залишаються незамінними для таблиць-зв'язків у відношеннях 'багато-до-багатьох' (Many-to-Many). Важливо пам'ятати, що порядок полів у складеному ключі впливає на швидкість пошуку: першим має йти поле, яке найчастіше використовується у фільтрації даних.

📚 Джерела