Определение функциональных зависимостей между атрибутами
Понятие функциональной зависимости является базовым, так как на его основе формулируется определение всех остальных видов зависимостей.
В процессе проектирования базы данных были выявлены следующие функциональные зависимости:
Таблица 2.2. Функциональные зависимости между атрибутами сущности «Users»
Наименование атрибутов | Функциональные зависимости |
Login Password Order |
Таблица 2.3. Функциональные зависимости между атрибутами сущности «Студенты»
Наименование атрибутов | Функциональные зависимости |
Номер_зач Фамилия Имя Отчество Факультет Курс Прописка Наличие_регистрации |
Таблица 2.4. Функциональные зависимости между атрибутами сущности «Документ_на_вселение»
Наименование атрибутов | Функциональные зависимости |
Код_приказ Дата_подписания Дата_вселения Дата_выселения Номер_комната Номер_корпус Номер_зач |
Таблица 2.5. Функциональные зависимости между атрибутами сущности «Ведомость»
Наименование атрибутов | Функциональные зависимости |
Номер_касса_ордер Дата_оплата Инн_СевКавГТУ Месяц_плата Сумма Фамилия_гл_бухгалтер Фамилия_кассир Код_приказ |
Таблица 2.6. Функциональные зависимости между атрибутами сущности «Комната»
Наименование атрибутов | Функциональные зависимости |
Номер_комната + Номер_корпус Кол_мест Кол_своб_мест Кровать_шт Полка_шт Стол_шт Стул_шт Телевизор_шт Тумба_шт Холодильник_шт Шкаф_шт |
Таблица 2.7. Функциональные зависимости между атрибутами сущности «Корпус»
Наименование атрибутов | Функциональные зависимости |
Номер_корпус Фамилия_комендант Имя_комендант Отчество_комендант Тел_корпус Кол_мест Кол_своб_мест |
Выбор ключей
Ключ – минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Одним из основных понятий баз данных, используемых при контроле целостности информации, является ключ. Разделяют первичные и внешние ключи. Первичный ключ - это уникальное поле (или несколько полей), однозначно определяющее записи таблицы базы данных. Внешние ключи - это поля таблицы, которые, как правило, соответствуют первичным ключам из других таблиц. Первичный ключ не может принимать неопределённые значения [8].
На основании выявленных функциональных зависимостей были выбраны идентифицирующие атрибуты, которые в реляционной модели данных используются в качестве первичных ключей реляционных отношений.
1. Сущность «Users» имеет ключ «login».
2. Сущность «Студенты» имеет ключ «Номер_зач».
3. Сущность «Документ_на_вселение» имеет ключ «Код_приказ».
4. Сущность «Комната» имеет составной ключ «Комната», состоящий из атрибутов «номер_комната» и «номер_корпус», так как однозначно идентифицировать комнату можно только по совокупности этих атрибутов.
5. Сущность «Корпус» имеет ключ «Номер_корпус».
6. Сущность «Ведомость» имеет ключ «Номер_касса_ордер».
Нормализация отношений
Нормализация – это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. В теории нормализации существует пять нормальных форм таблиц. Эти формы предназначены для уменьшения избыточной информации от первой до пятой нормальной формы. Поэтому каждая последующая НФ должна удовлетворять требованиям предыдущей формы и некоторым дополнительным условиям [8,9].
Проанализировав разработанную базу данных, можно сделать вывод, что она нормализована и соответствует третей нормальной форме, т.к.:
1. Все таблицы находятся в первой нормальной форме, так как все атрибуты в них атомарны.
2. Все таблицы находятся во второй нормальной форме, так как они находятся в первой нормальной форме и удовлетворяют дополнительному условию. Рассмотрим таблицы «Студенты», «Ведомость», «Документ_на_вселение», «Корпус». Таблицы не имеют составного первичного ключа, поэтому они однозначно определены во второй нормальной форме. Таблица «Комната» в качестве первичного ключа имеет составной ключ «Комната», состоящий из атрибутов «Номер_комната» и «Номер_корпус». Таблица не имеет частичные функциональные зависимости, так как не ключевые атрибуты полностью зависят от составного первичного ключа:
Комната={номер_комната, номер_корпус}
Комната->кол_мест;
Комната->кол_своб_мест;
Комната->стул_шт;
Комната->стол_шт;
Комната->кровать_шт;
Комната->шкаф_шт;
Комната->полка_шт;
Комната->телевизор_шт;
Комната->холодильник_шт;
Комната->тумба_шт.
Значит и таблица «Комната» находится во второй нормальной форме.
3. Все таблицы находятся в третьей нормальной форме, так как они находятся во второй нормальной форме и каждый неключевой атрибут нетранзитивно зависит от первичного ключа, что видно из выявленных функциональных зависимостей.