Разработка физической модели БД
Отношения, полученные после нормализации, приведены в табл. 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] ЕСКД – Единая Система Конструкторской Документации.
Воспользуйтесь поиском по сайту: