Модель даних на основі ключів
Модель даних, що базується на ключах — це логічна модель, що включає опис усіх сутностей та ключових атрибутів, які відповідають предметній галузі.
Метою цієї моделі є подальша деталізація моделі сутність-зв'язок та ідентифікація сутностей шляхом вибору ключових атрибутів (ключів).
Для ідентифікації конкретного екземпляра сутності необхідно визначити первинний ключ. Первинний ключ - це набір атрибутів, значення яких однозначно визначають кожен екземплярів сутності.
Іншими словами, первинний ключ може бути як одним атрибутом, так і складатися з кількох. Первинний ключ, що складається з більш ніж одного атрибута, називається складовим ключем.
Первинний ключ має бути статичним (static) і неруйнівним (non-volatile). Під статичністю та неруйнівністю мається на увазі, що первинний ключ не повинен зазнавати змін. Зміни первинного ключа важко супроводжувати, що часто призводить до дуже дорогих переробок, тому найкращим вважається варіант, коли первинний ключ абсолютно не залежить від екземплярів сутності.
Для знаходження первинного ключа потрібно проаналізувати дані, що визначають суть. Як правило, первинні ключі для стрижневих сутностей визначаються під час робочих сесій та обговорень. Експерти предметної галузі та користувачі – хороші джерела інформації для вибору потенційних первинних ключів. Приклади даних також забезпечують цінний внесок під час виборів первинного ключа.
Починайте процес виявлення первинних ключів з визначення всіх потенційно ключових атрибутів, які називаються кандидатами в ключі. Кандидатом у ключі може бути один атрибут, і комбінація кількох атрибутів. Якщо кандидатів у ключі не існує, або кандидатом є складовий ключ,який занадто великий і громіздкий, розгляньте можливість використання штучного унікального ідентифікатора. Ключі, запозичені із батьківської сутності, називаються зовнішніми ключами. Зовнішні ключі будуть розглядатися в одній із наступних публікацій на цю тему. Нижче наведено опис різних типів ключів:
- Кандидат у ключі. Кандидатом у ключі є атрибут або набір атрибутів, що ідентифікують одиничний екземпляр сутності. Іноді одиничний екземпляр сутності ідентифікується кількома атрибутами або їх комбінацією.
- Складовий ключ. Ключ, який складається з більш ніж одного атрибута, називається складовим, складним або компонентним. Для складових ключів кожна складова ключа повинна мати значення для кожного екземпляра. Жодна частина ключа не повинна бути невизначеною (NULL). Усі частини ключа є обов'язковими та не можуть бути опущені.
- Штучний первинний чи сурогатний ключ. Іноді ні одиничний атрибут, ні комбінація атрибутів не визначають екземпляр. У таких випадках ви використовуєте штучний унікальний ідентифікатор. Штучні первинні ключі часто просто нумерують кожен екземпляр чи код.
На діаграмі сутність-зв'язок кожен прямокутник, що відображає сутність, розділяється горизонтальною лінією на частину, в якій розташовані ключові поля і частина, де розташовані неключові поля. Верхня частина називається ключовою областю, а нижня частина областю даних (рис. П6). Ключова область містить первинний ключ сутності.
Ключова область об'єкта СТРАХУВАННЯ містить поле унікальний ідентифікатор Код договору, в області даних знаходяться поля Страхова сума, Дата страхування і т.д.

Мал. П6. Ключові поля
Вибір первинного ключа для сутності єдуже важливим кроком і вимагає великої уваги. Як первинний ключ може бути використаний атрибут або група атрибутів. Атрибути, які можна вибрати первинними ключами, називаються кандидатами в ключові атрибути (потенційні атрибути). Кандидати у ключі мають унікально ідентифікувати кожен запис сутності. Відповідно, жодна з частин ключа не може бути NULL, не заповненою або відсутньою.
Наприклад, щоб коректно використовувати сутність СТРАХУВАННЯ в IDEF1X моделі даних (а пізніше в базі даних), необхідно мати можливість унікально ідентифікувати записи.
Правила вибору первинного ключа:
- Унікально ідентифікувати екземпляр сутності.
- Не використовувати значення NULL.
- Чи не змінюватися з часом. Екземпляр ідентифікується за допомогою ключа. При зміні ключа відповідно змінюється екземпляр.
- Бути якомога коротшими для використання індексування та отримання даних.
Якщо вам потрібно використовувати ключ, який є комбінацією ключів з інших сутностей, переконайтеся, що кожна частина ключа відповідає правилам.
Для наочного уявлення про те, як доцільно вибирати первинні ключі, наведемо наступний приклад – виберемо первинний ключ для знайомої нам сутності «СПІВПРАЦЯ»:
- Атрибут «ID співробітника» є потенційним ключем, оскільки він унікальний всім екземплярів сутності СПІВРОБІТНИК.
- Атрибут «Ім'я співробітника» не дуже вдалий для потенційного ключа, оскільки серед службовців на підприємстві може бути, наприклад, двоє Іванів Петрових.
- Атрибут "Номер страхового поліса співробітника" є унікальним, але проблема в тому, що СПІВРОБІТНИК може не мати такого.
- Комбінація атрибутів «ім'яспівробітника» та «дата народження співробітника» може виявитися вдалою для наших цілей і стати шуканим потенційним ключем.
Після проведеного аналізу можна назвати два потенційні ключі – перший «Номер співробітника» та комбінація, що включає поля «ім'я співробітника» та «Дата народження співробітника». Так як атрибут «Номер співробітника» має найкоротші та унікальні значення, то він краще за інших підходить для первинного ключа.
При виборі первинного ключа для сутності розробники моделі часто використовують сурогатний ключ.
Сурогатний ключ — це довільний номер, який унікально визначає запис по суті. Атрибут "Номер співробітника" є прикладом сурогатного ключа.
Сурогатний ключ найкраще підходить на роль первинного ключа, тому що є коротким і найшвидше ідентифікує екземпляри в об'єкті. До того ж сурогатні ключі можуть автоматично генеруватися системою те щоб нумерація була суцільною, тобто. без перепусток.
Альтернативний ключ – це потенційний ключ, який обраний первинними. За допомогою альтернативних ключів часто відображають різні індекси доступу до даних кінцевої реалізації реляційної бази.
Якщо сутності в IDEF1X діаграмі пов'язані неідентифікуючим зв'язком, цей зв'язок для дочірньої сутності реалізується через зовнішні ключі.
Зовнішній ключ – атрибути первинних ключів батьківської сутності, передані дочірній сутності через їх зв'язок. Передані атрибути називаються мігруючими.