
- •Описание задачи
- •Постановка задачи
- •Описание предметной области
- •Функциональные возможности приложения
- •Моделирование данных с помощью процесса нормализации
- •Обработка первичного документа
- •Первая нормальная форма (1нф)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (3нф).
- •Нормальная форма Бойса-Кодда (нфбк).
- •Моделирование данных с помощью er-диаграмм
- •Выделение основных сущностей
- •Определение списка атрибутов сущностей
- •Определение связей между сущностями
- •Описание таблиц
- •Описание приложения
Вторая нормальная форма (2нф)
Устраним имеющиеся в отношении R1 частичные зависимости и определим их в новые отношения. В результате получим:
R2 (ID_ClassName,ClassName);
R3 (ID_Time,Time);
D (ID_DW, DW);
R4(ID_Rasp,ID_DW,ID_ClassName, ID_Time,Subject, ID_Subject, Teacher, ID_Teacher, ClassRoom, ID_ClassRoom).
Третья нормальная форма (3нф).
Выделим все транзитивные функциональные зависимости в отношенииR4:
ID_Rasp, ID_SubjectSubject;
ID_Rasp, ID_TeacherTeacher;
ID_Rasp, ID_ClassRoomClassRoom,
Для преобразования R4 в 3НФ необходимо удалить транзитивные зависимости путем создания четырех новых отношений:
S(ID_Subject,Subject);
T (ID_Teacher, Teacher);
C (ID_ClassRoom, ClassRoom);
R5(ID_Rasp,ID_DW, ID_ClassName, ID_Time,ID_Subject, ID_Teacher, ID_ClassRoom)
В результате выполнения нормализации исходное отношение R1, находящееся в 1НФ, было преобразовано в 6 отдельных отношений, каждое из которых находится в 3НФ:
R2 (ID_ClassName,ClassName);
D (ID_DW, DW);
R3 (ID_Time,Time);
S (ID_Subject,Subject);
T (ID_Teacher, Teacher);
C (ID_ClassRoom, ClassRoom);
R5(ID_Rasp,ID_DW, ID_ClassName, ID_Time,ID_Subject, ID_Teacher, ID_ClassRoom)
Нормальная форма Бойса-Кодда (нфбк).
Для проверки принадлежности отношения к НФБК необходимо найти все функциональные зависимости, их детерминанты и убедиться в том, что они являются потенциальными ключами.
Отношения R2, R3, S, T, Cявляются НФБК-отношениями, т.к. каждое из них имеет только один детерминант, который в то же время является потенциальным ключом этого отношения.
Отношение R1 содержит 3 детерминанта (ID_ClassName, ID_Time, ID_DW),(ID_Time,ID_ClassRoom, ID_DW), (ID_Rasp, ID_Time),которые были выявлены нами выше и имеют вид:
ID_ClassNameClassName;
ID_TimeTime.
ID_DWDW.
ID_TimeTime;
ID_ClassRoomClassRoom;
ID_DWDW.
ID_RaspID_DW,ID_Subject, ID_Teacher, ID_ClassRoom
ID_TimeTime.
Поскольку эти детерминанты отношения являются также потенциальными ключами, то отношение находится в НФБК.
Моделирование данных с помощью er-диаграмм
Выделение основных сущностей
Проведем анализ предметной области с целью выделить основные сущности. Поскольку речь идет о составлении расписания, очевидно, что в модели должна присутствовать сущность РАСПИСАНИЕ(RASPISANIE). Так как при составлении расписания нам необходимо знать, какие предметы у нас имеются, и какие преподаватели преподают имеющиеся дисциплины, то выделим следующие сущностиПРЕДМЕТ(SUBJECT)и УЧИТЕЛЬ (TEACHER). Для определения дня недели, места и времени проведения пары нам необходимо выделить сущности ВРЕМЯ(TIME), ДЕНЬ НЕДЕЛИ (DW) и КАБИНЕТ (CLASSROOM). Так же для составления расписания для того или иного класса нам необходимо знать все имеющиеся классы, выделим сущность КЛАСС(CLASSNAME).
Таким образом, мы выделили 7 сущностей (Рисунок 1):
Рисунок 1
Определение списка атрибутов сущностей
Определим все необходимые атрибуты для имеющихся сущностей, в результате получим следующую схему данных (Рисунок 2):
Рисунок 2
Определение связей между сущностями
Определим связи между имеющимися сущностями и укажем их названия (глаголы). В результате получим следующую модель данных (Рисунок 3):
Рисунок 3
Описание таблиц
Таблица «Raspisanie»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_Rasp |
Int |
* |
Уникальный номер таблицы расписание |
Time_ID |
Int |
|
Номер времени начала и конца пары из таблицы «Time» |
DW_ID |
Int |
|
Номер дня недели из таблицы «DW» |
ClassRoom_ID |
Int |
|
Номер кабинета из таблицы «ClassRoom» |
ClassName_ID |
Int |
|
Номер имени класса из таблицы «ClassName» |
Subjectect_ID |
Int |
|
Номер предмета из таблицы «Subjectect» |
Teacher_ID |
Int |
|
Номер учителя из таблицы “Teacher” |
Таблица «ClassName»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_ClassName |
Int |
* |
Уникальный номер имени класса |
ClassName |
nvarchar(50) |
|
Имя класса |
Kol |
int |
|
Количество учеников в классе |
Таблица «ClassRoom»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_ClassRoom |
Int |
* |
Уникальный номер кабинета |
ClassRoom |
nvarchar(50) |
|
Номер кабинета |
Vmest |
int |
|
Кол-во мест в кабинете |
Таблица «DW»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_DW |
Int |
* |
Уникальный номер дня недели |
Day |
nvarchar(50) |
|
День недели |
Таблица «Subject»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_Subjectect |
Int |
* |
Уникальный номер предмета |
Subjectect |
Varchar(50) |
|
Предмет |
Таблица «Teacher»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_teacher |
Int |
* |
Уникальный номер учителя |
Teaсher |
nvarchar(50) |
|
ФИО учителя |
Таблица «Time»
Название поля |
Тип данных |
Ключевое поле |
Назначение |
ID_Time |
Int |
* |
Уникальный номер времени начала и конца пары |
Time |
nvarchar(50) |
|
Начало и конец пары |