Языковые средства
Связи
Представление сущности
Представление сущности означает возможность уникальной идентификации каждого отдельного кортежа отношения по значениям его атрибутов. Так как в отношении нет дубликатов кортежей, каждый кортеж уникален и может быть идентифицирован значениями всех своих атрибутов. Тем не менее, как правило, в кортежах можно выделить некоторое подмножество атрибутов, значения которых уникальны для всех реализаций отношения – настоящих, бывших в прошлом и будущих. Такие подмножества атрибутов представляют собой ключи.
Определение
Ключ – это совокупность атрибутов, которая однозначно идентифицирует каждый кортеж данного отношения.
Ключ может содержать дополнительные атрибуты, которые не обязательны для уникальной идентификации кортежа. Поэтому в РМД вводится понятие первичного ключа, состоящего только из тех атрибутов, которые действительно необходимы для уникальной идентификации кортежа.
Определение
Первичный ключ (PK – Primary Key) – не избыточный набор атрибутов, значения которых однозначно определяют кортеж отношения.
Первичный ключ не избыточен, если:
a) состоит из одного атрибута,
b) состоит из нескольких атрибутов, но ни один из этих атрибутов не является лишним для однозначной идентификации каждого кортежа (если ключ состоит из нескольких атрибутов, он называется составным).
Таким образом, в соответствии с определением, первичный ключ отношения обладает следующими двумя свойствами:
- уникальность – в каждом кортеже отношения значение ключа единственным образом идентифицирует этот кортеж;
- неприводимость – никакое собственное подмножество ключа не обладает свойством уникальности.
Отношение может иметь только один первичный ключ. Если в отношении можно выделить несколько наборов атрибутов, каждый из которых уникально и не избыточно идентифицирует каждый кортеж отношения, в таком случае один из них выбирается в качестве первичного ключа, а все остальные являются альтернативными ключами (AK – Alternate Key). Например, в отношении
КАФЕДРА ( Номер кафедры, Название )
каждый из атрибутов уникально идентифицирует каждый кортеж. Если в качестве первичного ключа выбран атрибут Номер кафедры, тогда атрибут Название является альтернативным ключом.
В схеме отношения первичный ключ будем подчеркивать, а после альтернативных ключей добавлять аббревиатуру АК: КАФЕДРА ( Номер кафедры, Название (АК) )
Связи между сущностями отражают взаимосвязи между конкретными экземплярами сущностей. Эти взаимосвязи представляются с помощью внешних ключей.
Определение
Внешний ключ (FK – Foreign Key) – это атрибут или некоторое множество атрибутов отношения R1, которые не являются собственными атрибутами отношения R1, но их значение совпадает со значениями первичного ключа некоторого отношения R2 (возможность идентичности R1 и R2 не исключается).
Атрибуты внешнего ключа представляют собой некоторые дополнительные атрибуты, которые не определяют саму сущность, но позволяют установить ассоциации с другой сущностью.
Основными типами связей между сущностями являются связи 1 : N и N : N. Рассмотрим представление этих связей. Начнем со связи типа 1 : N.
Рассмотрим следующие отношения:
СОТРУДНИК с атрибутами Номер сотрудника (первичный ключ), Имя и Год рождения
ОТДЕЛ с атрибутами Номер отдела (первичный ключ) и Название.
Между этими отношениями определена связь типа 1 : N – каждый сотрудник работает в одном определенном отделе, и в каждом отделе работают много сотрудников. Диаграмма сущность-связь Чена имеет следующий вид:
Эта связь определяется атрибутом внешнего ключа в отношении СОТРУДНИК: в это отношение включается внешний ключ Номер отдела, значения которого совпадают со значениями первичного ключа Номер отдела отношения ОТДЕЛ. В схеме отношения атрибуты внешнего ключа будем помечать аббревиатурой FK. Схемы отношений будут выглядеть следующим образом:
ОТДЕЛ ( Номер отдела, Название (АК) )
СОТРУДНИК ( Номер сотрудника, Имя, Год рождения, Номер отдела (FK) )
Этим схемам отношений удовлетворяют следующие реализации:
ОТДЕЛ | Номер отдела | Название |
Первичный ключ | Альтернативный ключ | |
Бухгалтерия | ||
АХО | ||
Библиотека |
СОТРУДНИК | Номер сотрудника | Имя | Год рождения | Номер отдела |
Первичный ключ | Внешний ключ | |||
Иванов | ||||
Петров |
В данном примере в отношении СОТРУДНИК может появиться кортеж <3, Сидоров, 1985, 3>, но не может появиться кортеж <3, Сидоров, 1983, 5>, так как в этом кортеже значению «5» внешнего ключа отношения СОТРУДНИК не соответствует никакое значение первичного ключа отношения ОТДЕЛ.
Таким образом, связи типа 1 : N никак специально не представляются, только в отношении на стороне «много» появляются атрибуты внешнего ключа.
Рассмотрим представление связи типа N : N. Например, рассмотрим отношение ПОСТАВЩИК с атрибутами Номер поставщика (первичный ключ), Имя и Адрес, и отношение ДЕТАЛЬ с атрибутами Номер детали (первичный ключ), Название и Цена. Между этими отношениями определена связь типа N : N – каждый поставщик поставляет много деталей, и каждая деталь поставляется многими поставщиками. Диаграмма сущность-связь Чена имеет следующий вид:
В этом случае связь ПОСТАВКА ( ПОСТАВЩИК, ДЕТАЛЬ ) представляется собственным отношением, в котором будут атрибуты внешних ключей, ссылающиеся на отношения ПОСТАВЩИК и ДЕТАЛЬ. Эти атрибуты могут войти в состав первичного ключа отношения связи. Кроме того, отношение связи может иметь собственный атрибут. Схемы отношений будут выглядеть следующим образом:
ПОСТАВЩИК ( Номер поставщика, Имя, Адрес )
ДЕТАЛЬ ( Номер детали, Название, Цена )
ПОСТАВКА ( Номер поставщика (FK1), Номер детали (FK2), Количество )
Пример реализации этих отношений:
ПОСТАВЩИК | Номер поставщика | Имя | Адрес |
Первичный ключ | |||
S1 | Иванов | Москва | |
S2 | Сидоров | Санкт Петербург | |
S3 | Петров | Тюмень |
ДЕТАЛЬ | Номер детали | Название | Цена |
Первичный ключ | |||
P1 | Болт | ||
P2 | Винт | ||
P3 | Гайка | ||
P4 | Шуруп |
ПОСТАВКА | Первичный ключ отношения связи | Количество | |
Номер поставщика | Номер детали | ||
Внешний ключ отношения ПОСТАВЩИК | Внешний ключ отношения ДЕТАЛЬ | Собственный атрибут связи | |
S1 | P1 | ||
S1 | P2 | ||
S2 | P3 |
Язык определения данных для РМД включает следующие возможности:
- создание домена,
- создание отношения,
- объявление первичных и внешних ключей
В реально существующих реляционных СУБД (РСУБД), работающих на основе РМД, в качестве ЯОД используется некоторое подмножество языка SQL, предоставляющее соответствующие средства. Так, в стандарте SQL-92 определено предложение CREATE DOMAIN для создания доменов, однако далеко не все СУБД такую возможность поддерживают. Но во всех РСУБД есть предложение CREATE TABLE, позволяющее создать таблицу (отношение РМД) и объявить в ней необходимые (первичные, альтернативные и внешние) ключи.