# 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 продукта и менеджера.
# Виды целостности
- Сущностная целостность - в отношении ни один аттрибут
PKне может содержатьNULLзначение - Ссылочная целостность - если в отношении существует
FK, то значение этого ключа должно соответствовать существующему значениюPKв другом отношении