II. Проектирование базы данных.
Методические рекомендации
По выполнению лабораторной работы №3,4
Анализ предметной области проектируемой базы данных(БД). Нормализация проектируемой базы данных
Цель: Научиться проводить анализ предметной области проектируемой (БД) выделяя объекты предметной области, свойства объектов и устанавливать связи между объектами. Научиться выполнять проектирование базы данных предметной области, формируя таблицы, приводя таблицы к третьей нормальной форме и устанавливая связь между таблицами.
Ход работы
I. Выделить объекты предметной области и их атрибуты (согласно Вашего варианта).
II. Сформировать таблицы проектируемой базы данных, привести их к третьей нормальной форме и установить связь между таблицами. Оформить описание структуры каждой таблицы.
III. Построить ER –диаграмму спроектированной базы данных.
IV. Оформить отчет по выполнению лабораторной работы. Отчет должен включать следующие разделы:
1. Постановка задачи.
2. Концептуальная модель предметной области.
3. Структуры таблиц базы данных.
4. ER – диаграмма базы данных.
5. Вывод.
Пример выполнения лабораторной работы
I. Выделение объектов предметной области.
Постановка задачи:
Рассмотрим предметную область, связанную с работой организации по разработке программного обеспечения. В рамках этой предметной области и в зависимости от предполагаемых запросов нам будет необходима следующая информация:
1. Сотрудники организации: Фамилия сотрудника; должность; квалификация; отдел, в котором работает сотрудник (номер отдела и наименование отдела).
Учитывать:
× Квалификация сотрудника представляет собой список сред и приложений, по которым сотрудник имеет квалификационный сертификат.
× В одном отделе работает несколько сотрудников;
× Один сотрудник организации может работать только в одном отделе;
2. Клиенты организации: Фамилия; адрес; телефон.
3. Проекты: Тема проекта, руководитель проекта, клиент, для которого разрабатывается проект; дата заключения договора; срок выполнения проекта; стоимость проекта; сотрудники, занятые в реализации проекта с указанием доли сотрудника в общем гонораре за проект.
Учитывать:
Один сотрудник может быть руководителем нескольких проектов, но каждый проект имеет одного руководителя;
Один сотрудник может принимать участие в разработке нескольких проектов и в одном проекте участвует несколько сотрудников.
Концептуальная схема информационной системы:
На основе анализа предметной области строим концептуальную схему разрабатываемой информационной системы:
СОТРУДНИК |
Фамилия |
Должность |
Квалификация |
Отдел |
КЛИЕНТ |
Фамилия |
Адрес |
Телефон |
ПРОЕКТ |
Дата_начала |
Дата_конца |
Стоимость |
Тема |
Руководитель |
Клиент |
Проведем дальнейшее уточнение построенной концептуальной модели:
1. Для однозначной идентификации сотрудника, клиента и проекта и для дальнейшей реализации связей в объекты СОТРУДНИК, КЛИЕНТ и ПРОЕКТ введем атрибуты Код_сотрудника, Код_клиента, и Код_проекта соответственно.
2. Разорвём связь «многие-ко-многим» между объектами СОТРУДНИК и ПРОЕКТ. Для этого введём промежуточный объект ПРОЕКТ_СОТРУДНИК с атрибутами Код_проекта, Код_сотрудника и Доля_гонорара.
Окончательная концептуальная схема примет вид:
СОТРУДНИК |
Фамилия |
Должность |
Квалификация |
Отдел |
КЛИЕНТ |
Фамилия |
Адрес |
Телефон |
ПРОЕКТ |
Дата_начала |
Дата_конца |
Стоимость |
Тема |
Руководитель |
Клиент |
Код_сотрудника |
Код_клиента |
Код_проекта |
ПРОЕКТ_СОТРУДНИК |
Код_проекта |
Код_сотрудника |
Доля_гонорара |
II. Проектирование базы данных.
На основе концептуальной схемы создадим таблицы базы данных и проведём их нормализацию до третьей нормальной формы (3НФ).
1. Информацию о сотрудниках организации поместим в таблицу Empl (Сотрудник), имеющую следующую структуру:
Empl:
e_id | e_name | job | skill | department | |
d_id | d_name | ||||
Drovko | Administrator DB | MySQL, Linux, Java, UML | Projecting department | ||
Ivanov | System admin | Windows, Linux, Java, NT | Administrative department | ||
Konov | Program’s | Linux, Java, NT, C++, Peri | Testing department | ||
Kornienko | Program’s | NT, C++, Peri | Testing department | ||
Koval | Program’s | Java, NT, C++, Peri | Realization department | ||
Palkin | Program’s | C++, MySQL, UML | Testing department | ||
Petrov | Program’s | Linux, Java, NT, C++, Peri | Realization department | ||
Sidorov | Administrator DB | MySQL, Linux, Java, NT | Projecting department | ||
Turov | System admin | Linux, Java, NT, UML | Administrative department | ||
Vertko | Program’s | Java, C++, Peri, UML | Realization department |
В этой таблице:
e_id– кодовый номер сотрудника;
e_name –фамилия сотрудника;
job – должность;
skill – квалификация;
department – отдел (номер отдела - d_id и наименование отдела - d_name)