
3. Определение ключей
Некоторые атрибуты сущности не только описывают, но и уникальным образом идентифицируют ее. Это может быть отдельное свойство-атрибут или сочетание свойств. Их называют первичным ключом сущности. Если первичный ключ состоит более чем из одного свойства, его называют составным первичным ключом. Если существует несколько возможностей для выбора первичного ключа, то каждый вариант называют ключом-кандидатом или возможным ключом.
Первичный ключ однозначно определяет запись в таблице и отличает ее от других, т.е. представляет собой единственный способ ссылки на строку, и поэтому необходим.
Р
ассмотрим
сущность «Товар» – ни один из выделенных
атрибутов не может являться первичным
ключом сущности (наименования товаров
могут быть одинаковые, например, «Карандаш
простой» за 5 руб. и “Карандаш простой”
за 10 руб., цены и единицы измерения –
аналогично). Поэтому для идентификации
записи можно ввести еще один атрибут
сущности – «Номер товара» в списке.
Этот атрибут не может быть одинаковым
для записей и будет однозначно
идентифицировать каждую из них.
Итак, добавим новый атрибут сущности – «Номер товара (типа Number), затем на вкладке General необходимо отметить, что этот атрибут будет являться ключевым – галочка Primary Key (рисунок 11). На вкладке Datetype выберем Integer и заметим, что автоматически отметилась галочка поля Required, что означает, что данное поле обязательно для заполнения, т.е. не может быть пустым (ведь иначе запись не сможет быть идентифицирована) – рисунок 12.
Рисунок 11 – Определение первичного ключа
Рисунок 12 – Особенности ключевого поля
С
ущность
«Товар» приняла вид, представленный на
рисунке 13, откуда видим, что первичный
ключ автоматически помещается в верхнюю
часть прямоугольника сущности.
Аналогично рассуждая, вводим новый атрибут «Номер заказа» для сущности «Заказ» – рисунок 14.
Рисунок 13 – Первичный ключ сущности «Товар»
Рисунок 14 – Первичный ключ сущности «Заказ»
Т
еперь
рассмотрим сущность «Сотрудник». Здесь
каждый из атрибутов является возможным
ключом – атрибут «Фамилия» может стать
первичным ключом, если, например, мы не
планируем увеличивать штат сотрудников,
а имеющийся не содержит однофамильцев,
атрибут «Номер и серия паспорта»
однозначно идентифицирует каждого
сотрудника, атрибут же «Адрес» также
скорее всего будет однозначно
идентифицировать сотрудников, но все
же вероятность того, что они проживают
по одному адресу имеется. Таким образом,
наиболее разумным было бы выбрать
атрибут «Номер и серия паспорта» в
качестве первичного ключа. Но можно
также внести дополнительный атрибут –
«Номер сотрудника», т.к. «Номер и серия
паспорта» в каждой записи будет содержать
10 знаков, что существенно повлияет на
скорость работы системы при большом
количестве записей.
Таким образом, потенциальных ключей в любой таблице может быть много, и выбор того или иного ключа зависит только от проектировщика. Мы остановимся на первичном ключе «Номер сотрудника» сотрудника (рисунок 15). Данный пример иллюстрирует тот факт, что задача поиска возможных ключей не всегда так проста, как кажется на первый взгляд.
Рисунок 15 – Первичный ключ сущности «Сотрудник»
Как и в случае с сущностями, важно различать атрибуты и экземпляры атрибутов. Атрибутом «Товары» является «Единица измерения», а экземпляром этого атрибута – «шт».
Эквиваленты сущностей и атрибутов представлены в таблице 1.
Таблица 1 – Эквиваленты терминов
Термин |
Эквивалент |
Сущность |
Таблица |
Атрибут |
Колонка, столбец |