Составление реляционных отношений
Каждое реляционное отношение соответствует одной сущности (объекту ПО) и в него вносятся все атрибуты сущности. Для каждого отношения необходимо определить первичный ключ и внешние ключи (если они есть). В том случае, если базовое отношение не имеет потенциальных ключей, вводится суррогатный первичный ключ, который не несёт смысловой нагрузки и служит только для идентификации записей.
Примечание: суррогатный первичный ключ также может вводиться в тех случаях, когда потенциальный ключ имеет большой размер (например, длинная символьная строка) или является составным (не менее трёх атрибутов).
Потенциальными ключами отношения АВТОРЫ являются атрибуты
Паспортные данные и ИНН. Первый хранится как длинная строка, а последний по условиям предметной области не является обязательным. Поэтому для авторов необходимо ввести суррогатный ключ – A_id. Книги можно идентифицировать по атрибуту Контракт: его номер обязателен и уникален. Потенциальные ключи отношения СОТРУДНИКИ – атрибуты ИНН, Паспортные данные, Табельный номер, причём все они обязательные. Табельный номер занимает меньше памяти, чем ИНН, поэтому он и будет первичным ключом. Кортежи отношения ЗАКАЗЫ можно идентифицировать ключом Номер заказа.
Потенциальными ключами вспомогательных отношений являются комбинации первичных ключей соответствующих базовых отношений.
Отношения приведены в табл. 1-7. Для каждого отношения указаны атрибуты с их внутренним названием, типом и длиной. Типы данных обозначаются так: N – числовой, C – символьный, D – дата (последний имеет стандартную длину, зависящую от СУБД, поэтому она не указывается).
Таблица 1. Схема отношения СОТРУДНИКИ (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) | многозначное поле |
Таблица 2. Схема отношения КНИГИ (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) |
Таблица 3. Схема отношения АВТОРЫ (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) | многозначное поле |
Таблица 4. Схема отношения ЗАКАЗЫ (Orders)
Содержание поля | Имя поля | Тип, длина | Примечания |
Номер заказа | O_ID | N(6) | первичный ключ |
Заказчик | O_COMPANY | С(40) | обязательное поле |
Дата поступления заказа | O_DATE | D | обязательное поле |
Адрес заказчика | O_ADDR | C(50) | обязательное поле |
Дата выполнения заказа | O_READY | D |
Таблица 5. Схема отношения КНИГИ–АВТОРЫ (Titles)
Содержание поля | Имя поля | Тип, длина | Примечания |
Код книги (№ контракта) | B_ID | N(6) | внешний ключ (к Books) |
Код автора | A_ID | N(4) | внешний ключ (к Authors) |
Номер в списке | A_NO | N(1) | обязательное поле |
Гонорар | A_FEE | N(3) | процент от общего гонорара |
Таблица 6. Схема отношения КНИГИ–РЕДАКТОРЫ (Editors)
Содержание поля | Имя поля | Тип, длина | Примечания |
Код книги (№ контракта) | B_ID | N(6) | внешний ключ (к Books) |
Код редактора | E_ID | N(4) | внешний ключ (к Employees) |
Таблица 7. Схема отношения СТРОКИ ЗАКАЗА (Items)
Содержание поля | Имя поля | Тип, длина | Примечания |
Номер заказа | O_ID | N(6) | внешний ключ (к Orders) |
Код книги (№ контракта) | B_ID | N(6) | внешний ключ (к Books) |
Количество | B_COUNT | N(4) | обязательное поле |