Составление реляционных отношений

Каждое реляционное отношение соответствует одной сущности (объекту ПО) и в него вносятся все атрибуты сущности. Для каждого отношения необходимо определить первичный ключ и внешние ключи (если они есть). В том случае, если базовое отношение не имеет потенциальных ключей, вводится суррогатный первичный ключ, который не несёт смысловой нагрузки и служит только для идентификации записей.

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

Потенциальными ключами отношения АВТОРЫ являются атрибуты
Паспортные данные и ИНН. Первый хранится как длинная строка, а последний по условиям предметной области не является обязательным. Поэтому для авторов необходимо ввести суррогатный ключ – A_id. Книги можно идентифицировать по атрибуту Контракт: его номер обязателен и уникален. Потенциальные ключи отношения СОТРУДНИКИ – атрибуты ИНН, Паспортные данные, Табельный номер, причём все они обязательные. Табельный номер занимает меньше памяти, чем ИНН, поэтому он и будет первичным ключом. Кортежи отношения ЗАКАЗЫ можно идентифицировать ключом Номер заказа.

Потенциальными ключами вспомогательных отношений являются комбинации первичных ключей соответствующих базовых отношений.

Отношения приведены в табл. 6-12. Для каждого отношения указаны атрибуты с их внутренним названием, типом и длиной. Типы данных обозначаются так: N – числовой, C – символьный, D – дата (последний имеет стандартную длину, зависящую от СУБД, поэтому она не указывается).

Таблица 6. Схема отношения СОТРУДНИКИ (Employees)

Содержание поля Имя поля Тип, длина Примечания
Табельный номер E_ID N(4) первичный ключ
Фамилия, имя, отчество E_NAME C(50) обязательное поле
Дата рождения E_BORN D  
Пол E_SEX C(1) обязательное поле
Паспортные данные E_PASSP C(50) обязательное поле
ИНН E_INN N(12) обязательное уникальное поле
Должность E_POST C(30) обязательное поле
Оклад E_SALARY N(8,2) обязательное поле
Адрес E_ADDR C(50)  
Телефоны E_TEL C(30) многозначное поле

Таблица 7. Схема отношения КНИГИ (Books)

Содержание поля Имя поля Тип, длина Примечания
Номер контракта B_CONTRACT N(6) первичный ключ
Дата подписания контракта B_DATE D обязательное поле
Менеджер B_MAN N(4) внешний ключ (к Employees)
Название книги B_TITLE N(40) обязательное поле
Цена B_PRICE N(6,2) цена экземпляра книги
Затраты B_ADVANCE N(10,2) общая сумма затрат на книгу
Авторский гонорар B_FEE N(8,2) общая сумма гонорара
Дата выхода B_PUBL D  
Тираж B_CIRCUL N(5)  
Ответственный редактор B_EDIT N(4) внешний ключ (к Employees)

Таблица 8. Схема отношения АВТОРЫ (Authors)

Содержание поля Имя поля Тип, длина Примечания
Код автора A_ID N(4) суррогатный первичный ключ
Фамилия, имя, отчество A_NAME C(50) обязательное поле
Паспортные данные A_PASSP C(50) обязательное поле
ИНН A_INN N(12) уникальное поле
Адрес A_ADDR C(50) обязательное поле
Телефоны A_TEL C(30) многозначное поле

Таблица 9. Схема отношения ЗАКАЗЫ (Orders)

Содержание поля Имя поля Тип, длина Примечания
Номер заказа O_ID N(6) первичный ключ
Заказчик O_COMPANY С(40) обязательное поле
Дата поступления заказа O_DATE D обязательное поле
Адрес заказчика O_ADDR C(50) обязательное поле
Дата выполнения заказа O_READY D  

 

Таблица 10. Схема отношения КНИГИ–АВТОРЫ (Titles)

Содержание поля Имя поля Тип, длина Примечания
Код книги (№ контракта) B_ID N(6) внешний ключ (к Books)
Код автора A_ID N(4) внешний ключ (к Authors)
Номер в списке A_NO N(1) обязательное поле
Гонорар A_FEE N(3) процент от общего гонорара

Таблица 11. Схема отношения КНИГИ–РЕДАКТОРЫ (Editors)

Содержание поля Имя поля Тип, длина Примечания
Код книги (№ контракта) B_ID N(6) внешний ключ (к Books)
Код редактора E_ID N(4) внешний ключ (к Employees)

Таблица 12. Схема отношения СТРОКИ ЗАКАЗА (Items)