# 11. Реляционная модель данных: виды ключей, реализация различных типов связей, виды целостности

# Виды ключей

def Суперключ - это атрибут или множество атрибутов, единственным образом идентифицирующие кортеж.

TIP

Всё множество атрибутов само по себе является суперключом.

def Потенциальный ключ - это суперключ, который не содержит подмножество, также являющегося суперключом.

TIP

Потенциальный ключ может быть простым и составным.

def Первичный ключ (Primary Key) - это один из потенциальных ключей, который выбран для уникальной идентификации кортежей данного отношения.

def Внешний ключ (Foreign Key) - это атрибут или множество атрибутов, которое соответствует потенциальному ключу некоторого, может быть, того же самого отношения.

# Типы связей

# 1. Один-к-одному

Первичный ключ одного из отношений является одновременно и внешним ключём.

TIP

Есть таблица работников, и таблица менеджеров по продажам. Id работника будет PK, который взят из PK менеджера. Таким образом, Id менеджера - это PK и FK одновременно.

Employee

Id_Emp (PK) Id_Boss (FK) Other fields
2 1 field

SalesPerson

Id_SalesPerson (PK, FK) Other fields
1, 2 field

# 2. Один-ко-многим

Значения в некотором неключевом аттрибуте берутся из некоторого потенциального ключа другого отношения.

TIP

Есть таблица групп и студентов. Значение Id группы у студента будет FK, который взят из Id, то есть PK группы.

Student

Table_Number LastName MiddleName FirstName Group_Id (FK)
1 Кудашев Эдуардович Искандер 32011

Group

Group_Id (PK) Other fields
32011 field

# 3. Многие-ко-многим

Обычно используются таблицы-связки, хранящие связи по Id.

TIP

Есть менеджеры, каждый из которых продаёт продукты. Создаём таблицу с PK продукта и менеджера.

# Виды целостности

  1. Сущностная целостность - в отношении ни один аттрибут PK не может содержать NULL значение
  2. Ссылочная целостность - если в отношении существует FK, то значение этого ключа должно соответствовать существующему значению PK в другом отношении