Разработка физической модели БД
Отношения, полученные после нормализации, приведены в табл. 7-16.
Таблица 7. Схема отношения ОТДЕЛЫ (Departs)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Аббревиатура отдела
| D_ID
| V(12)
| первичный ключ
|
| Название отдела
| D_NAME
| V(100)
| обязательное поле
|
Таблица 8. Схема отношения КОМНАТЫ (Rooms)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Отдел
| R_DEPART
| V(12)
| внешний ключ (к Departs)
|
| Номер комнаты
| R_ROOM
| N(4)
| составной уникальный ключ
|
| Телефон
| R_PHONE
| V(20)
|
Таблица 9. Схема отношения ДОЛЖНОСТИ (Posts)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Название должности
| P_POST
| V(30)
| первичный ключ
|
| Оклад
| P_SAL
| N(8,2)
| обязательное поле, > 4500 руб.
|
Таблица 10. Схема отношения СОТРУДНИКИ (Employees)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
|
| Идентификатор сотрудника
| E_ID
| N(4)
| суррогатный первичный ключ
|
|
| Фамилия
| E_FNAME
| V(25)
| обязательное поле
|
|
| Имя, отчество
| E_LNAME
| V(30)
| обязательное поле
|
|
| Дата рождения
| E_BORN
| D
| обязательное поле
|
|
| Пол
| E_SEX
| C(1)
| обязательное поле
|
|
| Серия и номер паспорта
| E_PASP
| C(10)
| обязательное уникальное поле
|
|
| Когда выдан паспорт
| E_DATE
| D
| обязательное поле
|
|
| Кем выдан паспорт
| E_GIVEN
| V(50)
| обязательное поле
|
|
| ИНН
| E_INN
| C(12)
| обязательное уникальное поле
|
|
| Номер пенсионного страхового свидетельства
| E_PENS
| C(14)
| обязательное уникальное поле
|
|
| Отдел
| E_DEPART
| V(12)
| внешний ключ (к Departs)
|
| Должность
| E_POST
| V(30)
| внешний ключ (к Posts)
|
|
| Номер комнаты
| E_ROOM
| N(4)
| составной внешний ключ (к Rooms)
|
|
| Рабочий телефон
| E_PHONE
| V(20)
|
|
| Логин
| E_LOGIN
| V(30)
|
|
|
Таблица 11. Схема отношения ОБРАЗОВАНИЕ (Edu)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Идентификатор сотрудника
| U_ID
| N(4)
| внешний ключ (к Employees)
|
| Вид образования
| U_TYPE
| V(20)
| обязательное поле
|
| Специальность
| U_SPEC
| V(40)
|
|
| Номер диплома
| U_DIPLOM
| V(15)
|
|
| Год окончания учебного заведения
| U_YEAR
| N(4)
| обязательное поле
|
Таблица 12. Схема отношения АДРЕСА-ТЕЛЕФОНЫ (AdrTel)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Идентификатор сотрудника
| A_ID
| N(4)
| внешний ключ (к Employees)
|
| Адрес
| A_ADDR
| V(50)
|
|
| Телефон
| A_PHONE
| V(30)
|
|
Таблицы ОБРАЗОВАНИЕ и АДРЕСА-ТЕЛЕФОНЫ не имеют потенциальных ключей, но мы не будем вводить суррогатные первичные ключи, т.к. на эти таблицы никто не ссылается.
Таблица 13. Схема отношения ЗАКАЗЧИКИ (Clients)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Номер заказчика
| C_ID
| N(4)
| суррогатный первичный ключ
|
| Заказчик
| C_COMPANY
| V(40)
| обязательное поле
|
| Адрес заказчика
| C_ADR
| V(50)
| обязательное поле
|
| Контактное лицо
| C_PERSON
| V(50)
| обязательное поле
|
| Телефон
| C_PHONE
| V(30)
|
|
Таблица 14. Схема отношения ПРОЕКТЫ (Projects)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Номер проекта
| P_ID
| N(6)
| обязательное уникальное поле
|
| Название проекта
| P_TITLE
| V(100)
| обязательное поле
|
| Сокращённое название
| P_ABBR
| С(10)
| первичный ключ
|
| Отдел
| P_DEPART
| V(12)
| внешний ключ (к Departs)
|
| Заказчик
| P_COMPANY
| N(4)
| внешний ключ (к Clients)
|
| Руководитель
| P_CHIEF
| N(4)
| внешний ключ (к Employees)
|
| Дата начала проекта
| P_BEGIN
| D
| обязательное поле
|
| Дата окончания проекта
| P_END
| D
| обязательное поле, больше даты начала проекта
|
| Реальная дата окончания
| P_FINISH
| D
| больше даты начала проекта
|
| Стоимость проекта
| P_COST
| N(10)
| обязательное поле, > 0
|
Таблица 15. Схема отношения ЭТАПЫ ПРОЕКТА (Stages)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Проект
| S_PRO
| C(10)
| внешний ключ (к Projects)
| составной первичный ключ
|
| Номер этапа
| S_NUM
| N(2)
|
|
| Название этапа
| S_TITLE
| V(200)
| обязательное поле
|
| Дата начала этапа
| S_BEGIN
| D
| обязательное поле
|
| Дата окончания этапа
| S_END
| D
| обязательное поле, больше даты начала этапа
|
| Реальная дата окончания
| S_FINISH
| D
| больше даты начала этапа
|
| Стоимость этапа
| S_COST
| N(10)
| обязательное поле
|
| Полученная сумма по этапу
| S_SUM
| N(10)
| обязательное поле, значение по умолчанию – 0
|
| Форма отчётности
| S_FORM
| V(100)
| обязательное поле
|
Таблица 16. Схема отношения УЧАСТИЕ (Job)
| Содержание поля
| Имя поля
| Тип, длина
| Примечания
|
| Проект
| J_PRO
| C(10)
| внешний ключ (к Projects)
| состав-ной ПК
|
| Сотрудник
| J_EMP
| N(4)
| внешний ключ (к Employees)
|
| Роль
| J_ROLE
| V(20)
| обязательное поле
|
| Доплата
| J_BONUS
| N(2)
|
|
Схема базы данных после нормализации приведена на рис. 8.
Определение дополнительных ограничений целостности
Перечислим ограничения целостности, которые не указаны в табл. 7–16.
1. Атрибут Вид образования может принимать одно из следующих значений: 'начальное', 'среднее', 'средне-специальное', 'высшее'.
2. Атрибут Роль может принимать одно из двух значений: 'исполнитель' или 'консультант'.
3. В поле Доплата хранится величина доплаты сотруднику за участие в проекте (в процентах к его окладу). Значение поля больше либо равно 0.
4. Нумерация в поле Номер этапа начинается с 1 и является непрерывной для каждого проекта.

Рис. 8. Окончательная схема БД проектной организации
5. Дата начала первого этапа проекта должна соответствовать началу проекта в целом, дата завершения последнего этапа должна соответствовать завершению проекта в целом. Этапы не должны пересекаться по времени и между ними не должно быть разрывов.
6. Стоимость проекта должна быть равна сумме стоимостей всех этапов этого проекта.
Ограничения 4-6 нельзя реализовать в схеме отношения. В реальных БД подобные ограничения целостности реализуются вручную или программно (через внешнее приложение или специальную процедуру контроля данных – триггер).
[1] ЕСКД – Единая Система Конструкторской Документации.
Воспользуйтесь поиском по сайту: