Иерархия ключевых атрибутов
Каждая сущность обязательно имеет
первичный ключ (Primary Key, PK), уникально идентифицирующий её экземпляры. Также могут присутствовать
внешние ключи (Foreign Key, FK), наследуемые от родительских сущностей через связи. Однако множество ключевых атрибутов шире.
Первичный ключ
Первичный ключ бывает:
•
Простым — состоит из одного атрибута (например, номер паспорта).
•
Составным (сложным, комбинированным) — включает несколько атрибутов, совместно обеспечивающих уникальность (например, фамилия, имя, отчество, дата и место рождения).
Потенциальный ключ
Потенциальный ключ (Candidate Key) — атрибут или группа атрибутов, которые претендуют на роль первичного ключа. На этапе проектирования мы лишь предполагаем их уникальность, а окончательное решение требует проверки в предметной области. Например, ИНН кажется уникальным, но может существовать практика его повторного присвоения спустя много лет после смерти предыдущего владельца. Потенциальный ключ, как и первичный, может быть простым или составным.
Альтернативный ключ
После анализа всех потенциальных ключей выбирается один в качестве первичного. Остальные потенциальные ключи, которые также действительно уникальны, становятся
альтернативными ключами (Alternate Key, AK). Если первичным ключом выбран ИНН, то номер паспорта и СНИЛС превращаются в альтернативные. Выбор между ними часто диктуется практическими соображениями: ИНН состоит только из цифр, что делает его удобным числовым ключом, тогда как паспортные данные и СНИЛС содержат пробелы и дефисы, то есть являются строками.
Внешний ключ
Внешний ключ (Foreign Key, FK) появляется, когда первичный ключ родительской сущности мигрирует в дочернюю, образуя связь. Так, первичный ключ сущности «Семейное положение» становится внешним ключом в сущности «Человек».
Таким образом выстраивается цепочка: потенциальные ключи → выбранный первичный ключ; оставшиеся потенциальные → альтернативные ключи; первичный ключ родителя → внешний ключ в дочерней сущности. На схемах приняты обозначения: PK для первичного, AK для альтернативного, FK для внешнего ключа.
Пример. Сущность «Студент»:
• Если первичный ключ —
номер зачётной книжки (простой PK), то комбинация
ФИО + дата рождения выступает альтернативным ключом (составным AK). И наоборот.
Типы сущностей
Сущности разделяются на
зависимые и
независимые по наличию внешнего ключа:
• Сущность
зависима, если содержит хотя бы один FK, унаследованный от родительской.
• Сущность
независима, если ни одного FK извне не приходит, даже если её собственный PK наследуется другими.
Среди зависимых выделяют несколько разновидностей.
Характеристическая сущность
Характеристическая сущность связана ровно с одной родительской и служит для уточнения её свойств. Она наследует PK родителя как FK и добавляет собственные атрибуты. Первичным ключом такой сущности часто выступает комбинация унаследованного FK и одного из собственных атрибутов.
Пример «Автомобиль — Цена». Родительская сущность «Автомобиль» имеет составной PK (марка + модель). Дочерняя «Цена» наследует этот составной FK и добавляет атрибуты «дата» и «цена». Её первичный ключ — (марка, модель, дата). Так фиксируется история изменения цены.
П
ример «Сотрудник — Хобби». Родитель «Сотрудник» (PK — номер сотрудника). Сущность «Хобби» получает FK «сотрудник» и содержит атрибут «название хобби». Один сотрудник может иметь много хобби, одно хобби — встречаться у многих сотрудников. Поэтому первичным ключом становится пара (сотрудник, хобби). Это характеристическая сущность с составным PK.
Ассоциативная сущность
Ассоциативная сущность связана с несколькими родительскими сущностями и содержит информацию о связях между ними. Она наследует первичные ключи всех родителей как внешние, и обычно добавляет собственные атрибуты. Первичный ключ ассоциативной сущности часто составной, включающий все унаследованные FK и, возможно, часть собственных атрибутов.
Пример «Расписание». Родители:
• «Преподаватель» с составным PK (ФИО, кафедра, дисциплина);
• «Группа» с составным PK (номер группы, курс).
Сущность «Расписание» наследует оба составных ключа как FK и добавляет атрибуты «время» и «аудитория». Её первичный ключ состоит из семи полей: ФИО, кафедра, дисциплина, номер группы, курс, время, аудитория. Подобная громоздкость демонстрирует, почему на физическом уровне часто вводят
суррогатный ключ (Surrogate Key) — простой числовой идентификатор. Однако на даталогическом этапе важно явно выписать все компоненты, чтобы убедиться в правильности логики.
Именующая сущность
Именующая сущность — частный случай ассоциативной. Она не имеет собственных атрибутов, а её первичный ключ состоит исключительно из внешних ключей родителей. Если из сущности «Расписание» убрать «время» и «аудиторию», оставив только наследуемые FK преподавателя и группы, получится именующая сущность.
Правила отношений между сущностями
Родитель и потомок
При связи «родитель-потомок» экземпляр потомка всегда связан ровно с одним родителем. Один родитель может быть связан с несколькими потомками.
Идентифицирующее отношение
Если FK, унаследованный от родителя, входит в состав первичного ключа дочерней сущности, отношение называется
идентифицирующим. На схеме оно обозначается сплошной линией с жирной точкой на конце у дочерней сущности. В этом случае дочерняя сущность всегда зависима, так как без родителя её экземпляр не может быть однозначно определён.
Пример: родительская сущность A1 (PK — A1) и дочерняя A2, PK которой состоит из (A1, собственное поле). Связь идентифицирующая.
Неидентифицирующее отношение
Если FK родителя попадает в дочернюю сущность как
неключевой атрибут, отношение является
неидентифицирующим. Такая связь не влияет на уникальность экземпляров потомка.
Пример: сущность «Человек» (PK — номер паспорта) наследует FK «код семейного положения» из справочника «Семейное положение». Код не входит в PK человека — отношение неидентифицирующее.
Отношение «многие ко многим»
Отношение
«многие ко многим» (M:N) существует только на логическом уровне. Оно изображается линией с жирными точками на обоих концах. На физическом уровне такая связь обязательно преобразуется в отдельную таблицу (ассоциативную или именующую сущность).
Проверка: берётся один экземпляр первой сущности. Если он может быть связан с несколькими экземплярами второй, и наоборот — перед вами связь M:N. Классический пример — люди и компьютерные игры: один человек играет во множество игр, в каждую игру играет множество людей.
Отношение категоризации
Отношение категоризации связано с иерархией наследования и будет детально рассмотрено отдельно. Оно относится к категориальным дочерним сущностям.
Краткие итоги
Проектирование структуры базы данных на даталогическом уровне опирается на чёткое определение ключевых атрибутов и классификацию сущностей. Прежде всего, важно разграничить понятия потенциального, первичного, альтернативного и внешнего ключей. Потенциальные ключи — это атрибуты, чью уникальность предстоит подтвердить анализом предметной области. Выбор одного из них в качестве первичного не отменяет идентифицирующей способности остальных: они становятся альтернативными и могут использоваться для поиска или контроля целостности. Первичный ключ, мигрируя в дочернюю сущность, образует внешний ключ, который либо входит в состав первичного ключа потомка (идентифицирующая связь), либо остаётся неключевым атрибутом (неидентифицирующая связь). Это различие принципиально: идентифицирующее отношение жёстко связывает существование потомка с родителем, тогда как неидентифицирующее лишь добавляет описательные свойства.
Практический смысл такого подхода становится ясным при построении сложных моделей. Характеристические сущности позволяют хранить историю изменений отдельных атрибутов родителя, например, динамику цен. Ассоциативные сущности служат мостом для связей «многие ко многим», объединяя ключи нескольких родителей и, при необходимости, дополняя их собственными атрибутами (время, аудитория). Если ассоциативная сущность не несёт собственных данных, она вырождается в именующую, сохраняя лишь факт связи. Осознание этих шаблонов помогает избегать избыточности, гарантирует уникальность записей и корректную ссылочную целостность. Когда составной первичный ключ становится громоздким, на физическом уровне вводят суррогатный ключ, но предварительное детальное моделирование всех ключевых полей необходимо для верификации бизнес-правил. Именно такая последовательность — от выявления потенциальных ключей через выбор первичного, определение типа сущности и характера связи — формирует надёжный фундамент для реализации базы данных, свободной от логических противоречий.
1. Первичный ключ уникально идентифицирует каждый экземпляр сущности и может быть как простым, так и составным.
2. Потенциальные ключи — кандидаты на роль первичного, чья уникальность должна быть подтверждена предметной областью.
3. Альтернативный ключ — это потенциальный ключ, не выбранный первичным, но сохраняющий свойство уникальности.
4. Внешний ключ образуется миграцией первичного ключа родительской сущности в дочернюю.
5. Зависимость сущности определяется наличием хотя бы одного внешнего ключа; отсутствие FK делает сущность независимой.
6. Характеристическая сущность связана с единственным родителем и служит для уточнения его свойств во времени или по составу.
7. Ассоциативная сущность связывает несколько родителей и содержит информацию об их отношениях, часто дополняя её собственными атрибутами.
8. Именующая сущность — ассоциативная сущность без собственных атрибутов, чей первичный ключ состоит исключительно из внешних ключей.
9. При идентифицирующем отношении внешний ключ входит в состав первичного ключа дочерней сущности, делая её зависимой.
10. При неидентифицирующем отношении внешний ключ добавляется как неключевой атрибут, не влияя на уникальность.
11. Связь «многие ко многим» на физическом уровне реализуется через отдельную таблицу, часто ассоциативную или именующую.
12. Суррогатные ключи вводятся на этапе физического проектирования для упрощения, но не отменяют предварительного логического анализа всех ключевых полей.
1. Чем простой первичный ключ отличается от составного? Приведите пример каждого.
2. Почему потенциальный ключ требует дополнительной проверки в предметной области?
3. В каком случае потенциальный ключ становится альтернативным?
4. Может ли внешний ключ быть частью первичного ключа дочерней сущности? Если да, к какому типу отношений это приводит?
5. Как определить, является сущность зависимой или независимой?
6. Опишите структуру характеристической сущности и её первичного ключа на примере «Сотрудник — Хобби».
7. Какое минимальное количество родительских сущностей должно быть у ассоциативной сущности?
8. Чем именующая сущность отличается от ассоциативной?
9. Приведите пример неидентифицирующего отношения и объясните, где располагается внешний ключ.
10. Почему отношение «многие ко многим» нельзя напрямую реализовать в реляционной базе данных?
11. В чём практическая ценность составного первичного ключа в сущности «Расписание» на этапе даталогического проектирования?
12. Когда и с какой целью вводят суррогатный ключ?