Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CWDM_new.docx
Скачиваний:
2
Добавлен:
13.02.2015
Размер:
811.64 Кб
Скачать

3 Нормализация отношений базы данных

Нормализация отношений базы данных есть процесс приведения базы данных к строгой форме путем последовательного преобразования таблиц к состоянию, в котором они удовлетворяют условиям нормальных форм. Нормальная форма – это свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение.

Первая нормальная форма (1NF) - базовая нормальная форма отношения в реляционной модели данных. Переменная отношения находится в первой нормальной форме (1NF) тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов и не содержат повторяющихся полей, то есть каждое значение любого атрибута должно быть неделимо на более мелкие поля. Рассмотрев приведенные ранее таблицы, к первой нормальной форме можно отнести все таблицы (Таблицы 2…Таблицы 12), поскольку нигде в таблицах нет делимых полей.

Вторая нормальная форма (2NF) - одна из возможных нормальных форм таблицы реляционной базы данных. Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме, и каждый не ключевой атрибут зависит от ее потенциального ключа. Вторая нормальная форма по определению запрещает наличие не ключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, вторая нормальная форма запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов. Поскольку вторая нормальная форма представляет отношение с атомарным ключом, все рассмотренные раннее таблицы являются связанными, следовательно, они имеют вторую нормальную форму.

Отношение находится в третьей нормальной форме (3NF) тогда и только тогда, когда отношение находится во второй нормальной форме, и все не ключевые атрибуты взаимно независимы. Атрибуты называются взаимно независимыми, если ни один из них не является функционально зависимым от другого.

Полученные отношения даталогической модели находятся во второй нормальной форме, а не ключевые атрибуты взаимно независимы. Это значит, что модель находится в третьей нормальной форме.

4 Тестирование базы данных

Для проверки работоспособности базы данных используем несколько SQL запросов и пара хранимых процедур, приведенные ниже в таблице 14. [3], [4]

Таблица 14 – Проверка работоспособности базы данных

SQL-Запрос

Назначение

1

SELECT Employer_phone.Phone_number, Employer.First_name, Employer.Second_name

FROM Employer INNER JOIN Employer_phone ON Employer.ID_Employer = Employer_phone.ID_Employer

ORDER BY Employer_phone.Phone_number;

Вывести телефоны всех сотрудников

2

SELECT Purpose.Purpose_name

FROM Purpose

ORDER BY Purpose.Purpose_name;

Названия операций, отсортированные по алфавиту

3

SELECT Employer.First_name, Employer.Second_name, Employer.Last_name

FROM Employer;

Вывод всех сотрудников

4

SELECT Purpose.Purpose_name, Task.Summ

FROM Purpose INNER JOIN Task ON Purpose.ID_Purpose = Task.ID_Purpose

ORDER BY Task.Summ DESC;

Все названия операций по убыванию суммы

5

SELECT Purpose.Purpose_name, Pay_system.Pay_system_name, Task.Summ

FROM Pay_system, Purpose INNER JOIN Task ON Purpose.ID_Purpose = Task.ID_Purpose

WHERE (((Pay_system.Pay_system_name)="VISA"))

ORDER BY Task.Summ;

Операции по возрастанию стоимости в платежная системе VISA

6

SELECT Employer_phone.Phone_number, Phone_type.Name_phone_type, Employer.First_name, Employer.Second_name

FROM Employer INNER JOIN (Phone_type INNER JOIN Employer_phone ON Phone_type.ID_Phone_type = Employer_phone.ID_Phone_type) ON Employer.ID_Employer = Employer_phone.ID_Employer

WHERE (((Phone_type.Name_phone_type)="Mobile"));

Все мобильные телефоны сотрудников

7

SELECT Employer.First_name, Employer.Second_name, Task.Summ, Task.Date_task, *

FROM Employer INNER JOIN Task ON Employer.ID_Employer = Task.ID_Employer

WHERE (((Employer.First_name)="Иванов") AND ((Employer.Second_name)="Иван") AND ((Task.Date_task)=#10/7/2014#));

Операции 7.10.2014 и кем из сотрудников

Продолжение таблицы 14

SQL-Запрос

Назначение

8

INSERT INTO Task ( ID_Purpose, ID_Employer, ID_Task_status, ID_Pay_type, Date_task, Summ )

SELECT '2' AS Выражение1, '1' AS Выражение2, '1' AS Выражение3, '2' AS Выражение4, Date() AS Выражение5, '-30' AS Выражение6;

Добавление платы за проезд Сотруднику

9

DELETE Task.ID_Task

FROM Task;

Очистка всех операций

Результаты выполнения SQL запросов предствлены в таблице 15.

Таблица 15 – Проверка работоспособности базы данных

Результат

Назначение

1

Вывести телефоны всех сотрудников

2

Названия операций, отсортированные по алфавиту

3

Вывод всех сотрудников

4

Все названия операций по убыванию суммы

5

Операции по возрастанию стоимости в платежная системе VISA

6

Все мобильные телефоны сотрудников

7

Операции 7.10.2014 и кем из сотрудников

Продолжение таблицы 15

Результат

Назначение

8

допосле

Добавление платы за проезд Сотруднику

9

до

после

Очистка всех операций

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]