Ключ-кандидат - это комбинация атрибутов, которые однозначно идентифицируют запись базы данных без ссылки на какие-либо другие данные. В каждой таблице может быть один или несколько кандидатов. Один из этих ключей-кандидатов выбирается в качестве первичного ключа таблицы. Таблица содержит только один первичный ключ, но может содержать несколько ключей-кандидатов. Если ключ-кандидат состоит из двух или более столбцов, он называется составным ключом.
Свойства ключа-кандидата
Все ключи-кандидаты имеют некоторые общие свойства. Одно из свойств заключается в том, что в течение всего срока действия ключа-кандидата атрибут, используемый для идентификации, должен оставаться неизменным. Другое дело, что значение не может быть нулевым. Наконец, ключ-кандидат должен быть уникальным.
Например, чтобы точно и однозначно идентифицировать каждого сотрудника, компания может использовать номер социального страхования сотрудника. Некоторые люди имеют одинаковые имена, фамилии и должности, но два человека не используют один и тот же номер социального страхования.
Номер социального страхования | Имя | Фамилия | Позиция |
---|---|---|---|
123-45-6780 | Крейг | Джонс | Менеджер |
234-56-7890 | Крейг | Бил | Партнер |
345-67-8900 | Сандра | Бил | Менеджер |
456-78-9010 | Трина | Джонс | Партнер |
567-89-0120 | Сандра | Смит | Партнер |
Примеры потенциальных ключей
Некоторые типы данных легко подходят в качестве кандидатов:
- Международные стандартные номера книг: ISBN однозначно идентифицируют книги и связанные с ними носители. Выпуск ISBN строго регулируется отраслевыми привратниками, и ISBN никогда не используются повторно издателями.
- Номера банковских счетов: Большинство банков не используют повторно номера счетов.
- Серийные номера: Хотя серийные номера не регулируются в разных отраслях, в контексте одного поставщика серийный номер всегда должен быть уникальным.
- Номера водительских прав: Обычно эти номера не дублируются. Однако человек, переезжающий из штата в штат, может иметь более одного номера DL.
- National Provider ID: каждый врач и другой лицензированный поставщик медицинских услуг имеет по крайней мере один уникальный для них NPI, выданный Министерством здравоохранения и социальных служб США.
Однако некоторые типы информации, которые могут показаться хорошими кандидатами, на самом деле оказываются проблематичными:
- Номера телефонов: Большинство операторов повторно используют телефонные номера, и отдельные абоненты могут использовать несколько телефонных номеров одновременно.
- Универсальные ценовые коды: UPC уникальны, но владелец блока UPC может перерабатывать продукты по своему желанию.
- Номера медицинских карт: MRN обычно выдаются на уровне больниц без каких-либо национальных руководств по структуре и формату этих идентификаторов.
- Номера социального страхования: хотя они теоретически уникальны, номера SSN действительно используются повторно, а мошенничество с SSN достаточно распространено, чтобы сделать этот идентификатор проблематичным для больших наборов данных. (В контексте работодателя, который проверяет SSN, эта проблема не является проблемой.)