Ключи

Раздел: Проектирование баз данных

Ключ (key) — это группа из одного или более атрибутов, которая уникальным образом идентифицирует строку. Рассмотрим отношение СЕКЦИЯ , имеющее атрибуты НомерСтудента, Секция и Плата. Строка этого отношения содержит информацию о том, что студент посещает определенную секцию за определенную плату. Предположим, что студент одновременно не может посещать более одной секции. В этом случае значение атрибута НомерСтудента идентифицирует единственную строку, поэтому данный атрибут является ключом.
Ключи могут также составляться из нескольких атрибутов. Например, если студентам разрешено одновременно посещать более одной секции, то один и тот же номер студента может появиться в разных строках таблицы, поэтому атрибут НомерСтудента не будет уникальным образом определять строку. Для этого потребуется какое-то сочетание атрибутов; возможно, это будет комбинация (НомерСтудента, Секция).
Попутно отметим, что в предыдущем абзаце затронут тонкий, но весьма важный аспект. Являются ли атрибуты ключами и являются ли они функционально зависимыми — это определяется не абстрактным набором правил, а моделями, присутствующими в воображении пользователей, а также деловым регламентом организации, использующей базу данных. Что в приведенном выше примере является ключом — НомерСтудента, комбинация (НомерСтудента, Секция) или какое-то еще сочетание атрибутов, — целиком и полностью определяется тем, как представляют себе ситуацию люди, работающие в организации, которая использует базу данных. Ответы на эти вопросы мы должны получить от пользователей. По ходу дальнейшего изложения имейте в виду, что все наши предположения о функциональных зависимостях, ключах, ограничениях и тому подобных вещах определяются моделями в воображении пользователей.
Допустим, в ходе опроса пользователей мы выяснили, что студентам разрешено одновременно быть записанными в несколько спортивных секций. Эта ситуация отражена в отношении СЕКЦИИ . Как мы отметили, НомерСтудента не является ключом этого отношения. В самом деле, студент с номером 100 посещает секцию гольфа и секцию лыж, и атрибут НомерСтудента со значением 100 появляется в двух различных строках. Фактически, для этого отношения ни один атрибут сам по себе не является ключом, то есть ключ должен состоять из двух или более атрибутов.