Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГАК-2026.docx
Скачиваний:
1
Добавлен:
16.06.2026
Размер:
2.66 Mб
Скачать

3. Ограничения целостности, связанные с ключами

При создании ключей автоматически создаются ограничения:

  • PRIMARY KEY — уникальность + NOT NULL.

  • UNIQUE — уникальность (NULL может быть, но только один NULL в PostgreSQL, в MySQL может быть несколько NULL).

  • FOREIGN KEY — ссылочная целостность.

Пример с FOREIGN KEY и действиями при удалении/обновлении:

Возможные действия:

  • CASCADE — каскадное удаление/обновление.

  • RESTRICT — запрет (выдаст ошибку).

  • SET NULL — установить NULL.

  • SET DEFAULT — установить значение по умолчанию.

  • NO ACTION — аналогично RESTRICT (в некоторых СУБД есть различия).

Часть 2. Отношения между таблицами

1. Что такое отношение в реляционной модели?

В реляционной модели отношение — это связь между двумя таблицами, установленная через ключи. Тип отношения определяет, сколько записей одной таблицы соответствует сколько записям другой.

2. Типы отношений

А) Отношение "Один-к-одному" (One-to-One, 1:1)

Определение: Одной записи в таблице A соответствует ровно одна запись в таблице B, и наоборот.

Когда используется:

  • Разделение часто и редко используемых полей (профиль и расширенная информация).

  • Разделение по соображениям безопасности (часть данных скрыта).

  • Наследование в объектно-реляционном отображении (ORM).

Реализация: Внешний ключ с уникальностью в одной из таблиц (или общий первичный ключ).

Пример

Здесь каждый пользователь имеет ровно один профиль, и каждый профиль принадлежит ровно одному пользователю.

Б) Отношение "Один-ко-многим" (One-to-Many, 1:n)

Определение: Одной записи в таблице A соответствует множество записей в таблице B, но каждой записи в таблице B соответствует только одна запись в таблице A.

Когда используется: Самый распространённый тип связи.

  • Группа — студенты.

  • Категория — товары.

  • Автор — книги.

Реализация: Внешний ключ на стороне "многие" ссылается на первичный ключ на стороне "один".

Пример:

Одна группа — много студентов. Один студент — в одной группе.

В) Отношение "Многие-ко-многим" (Many-to-Many, m:n)

Определение: Одной записи в таблице A соответствует множество записей в таблице B, и одной записи в таблице B соответствует множество записей в таблице A.

Когда используется:

  • Студенты и предметы (студент изучает много предметов, предмет изучают много студентов).

  • Товары и заказы (в заказе много товаров, товар есть во многих заказах).

  • Актеры и фильмы.

Реализация: Создаётся промежуточная таблица (связующая), которая содержит внешние ключи на обе основные таблицы. Обычно первичным ключом в ней является составной ключ из этих двух полей.

В промежуточную таблицу можно добавлять дополнительные поля, относящиеся именно к связи (дата начала изучения, оценка, и т.д.).

3. Как определить тип отношения?

Чтобы определить тип связи, нужно задать два вопроса:

  1. Для отношения от А к Б: Одному А соответствует сколько Б? (0, 1, много?)

  2. Для отношения от Б к А: Одному Б соответствует сколько А? (0, 1, много?)

Пример с группами и студентами:

  • Одной группе — много студентов.

  • Одному студенту — одна группа. → Один-ко-многим.

Пример со студентами и предметами:

  • Одному студенту — много предметов.

  • Одному предмету — много студентов. → Многие-ко-многим.

Пример с пользователями и профилями:

  • Одному пользователю — один профиль.

  • Одному профилю — один пользователь. → Один-к-одному.