Первинні і альтернативні ключі 1

Семантика первинних і альтернативних ключів

Можливий ключ сутності - це один або декілька атрибутів, чиї значення однозначно визначають кожен екземпляр сутності. Наприклад, НОМЕР_ЗАКАЗА_НА_ПОКУПКУ може однозначно визначити екземпляр сутності ЗАКАЗ_НА_ПОКУПКУ. Комбінація атрибутів НОМЕР_СЧЕТА і НОМЕР_ЧЕКА може однозначно визначити екземпляр сутності ЧЕК.

Кожна сутність повинна мати хоча б одним можливим ключем. У деяких випадках сутність може мати більше одного атрибута або групу атрибутів, однозначно ідентифікують екземпляри сутності. Наприклад, кожен з атрибутів НОМЕР_СЛУЖАЩЕГО і НОМЕР_ПОЛІСА може однозначно ідентифікувати примірник суті службовець.

При існуванні декількох можливих ключів один з них ключів позначається як первинний ключ, а решта - як альтернативні ключі. Якщо існує тільки один можливий ключ, то він є, звичайно, первинним ключем.

Синтаксис первинних і альтернативних ключів

Що визначають первинний ключ атрибути розміщуються нагорі списку атрибутів в блоці суті і відокремлюються від інших атрибутів горизонтальній рисою (див. Рис. 3-7).

Кожному альтернативному ключу привласнюється унікальний цілий номер. Цей ключ вказується за допомогою розміщення праворуч від кожного атрибута ключа укладених в дужки букв АК з номером альтернативного ключа, наприклад, (АК1) (див. Рис. 3-8). Окремий атрибут може входити в якості компоненти в більш ніж один альтернативний ключ. Атрибут первинного ключа може служити також частиною альтернативного ключа.

Мал. 3-8. Синтаксис альтернативних ключів

Правила первинних і альтернативних ключів

  1. Кожна сутність повинна мати первинним ключем.
  2. Кожна сутність може мати будь-яке число альтернативних ключів.
  3. Первинний або альтернативний ключ може складатися з одного атрибута або комбінації атрибутів.
  4. Окремий атрибут може бути частиною більш ніж одного ключа, первинного або альтернативного.
  5. Атрибути, що входять в первинні або альтернативні ключі суті, можуть бути власними для сутності або успадковуватися через відносини. (Див. Розділ 3.7 "Зовнішні ключі").
  6. Первинні і альтернативні ключі повинні містити тільки необхідні для однозначної ідентифікації атрибути, тобто при виключенні з ключа будь-якого атрибута не всі екземпляри сутності можуть бути однозначно визначені (правило найменшого ключа).
  7. Якщо первинний ключ складається більш ніж з одного атрибута, то значення будь-якого неключевого атрибута повинно функціонально залежати від усього первинного ключа, тобто якщо первинний ключ відомий, то відомо значення кожного неключевого атрибута, і значення неключевого атрибута не може бути визначено за допомогою тільки частини первинного ключа (правило повної функціональної залежності).
  8. Кожен неключових атрибут повинен функціонально залежати тільки від первинного і альтернативних ключів, тобто значення неключевого атрибута не може визначатися значенням іншого неключових атрибута (правило відсутності транзитивної залежності).

Семантика зовнішніх ключів

Наслідуваний атрибут може використовуватися по суті в якості. частини або цілого первинного ключа, альтернативного ключа або неключових атрибута. Якщо всі атрибути первинних ключів сущности-родителя успадковуються в качесте частини первинного ключа сутності-нащадка, то ставлення, через яке ці атрибути були успадковані; називається ідентифікує ставленням. Якщо який-небудь з успадкованих атрибутів не є частиною первинного ключа, то відношення називається неідентіфіцірующей ставленням (див. Розділ 3.2). Наприклад, якщо завдання мають номери, унікальні тільки в межах свого проекту, то для визначення первинного ключа ЗАВДАННЯ необхідно з'єднати успадковані атрибут ПРОЕКТ_ID з власним атрибутом НОМЕР_ЗАДАНІЯ. Сутність ПРОЕКТ буде володіти ідентифікує ставленням з сутністю ЗАВДАННЯ. Якщо, з іншого боку, атрибут НОМЕР_ЗАДАНІЯ завжди унікальний (навіть для різних проектів), то успадковані атрибут ПРОЕКТ_ID буде неключових атрибутом сутності ЗАВДАННЯ. В цьому випадку сутність ПРОЕКТ буде володіти неідентіфіцірующей ставленням з сутністю ЗАВДАННЯ.

Коли окремий атрибут успадковується більш ніж один раз, для кожного випадку має призначатися ім'я ролі. У попередньому прикладі імена ролей НОМЕР_КОМПОНЕНТИ і НОМЕР_УЗЛА можуть призначатися для розрізнення двох успадкованих атрибутів НОМЕР_ДЕТАЛІ. Імена ролей можуть використовуватися і при єдиному появі успадкованого атрибута для більш точного вираження його сенсу в контексті сутності-нащадка, але це не є обов'язковим.

Синтаксис зовнішніх ключів

Зовнішній ключ зображується за допомогою приміщення всередину блоку сутності імен успадкованих атрибутів, після яких слідують букви FK в дужках (FK), см ріс.3-9.

Мал. 3-9. Приклади синтаксису зовнішніх ключів

Якщо успадковані атрибут належить первинному ключу сутності-нащадка, то він поміщається вище горизонтальної лінії, а сутність зображується із закругленими кутами для вказівки на те, що ідентифікатор (первинний ключ) сутності залежить від атрибута, успадкованого через ставлення. Якщо успадковані атрибут не належить первинному ключу сутності-нащадка, то він зображується нижче лінії. Успадковані атрибути можуть бути також частиною альтернативного ключа.

Імена ролей, як і імена атрибутів, є граматичними оборотами іменника. За ім'ям ролі слід ім'я успадкованого атрибута, відокремлене крапкою (см.ріс.3-10).

Мал. 3-10. Синтаксис імені ролі

Правила зовнішніх ключів