- •Реферат Расчетно-пояснительная записка содержит 127 страниц, 65 таблиц, 39 рисунков.
- •Содержание
- •Нормативные ссылки
- •Определения, обозначения и сокращения.
- •Введение
- •1. Конструкторская часть
- •Перечень функций, подлежащих автоматизации
- •Уменьшение времени обслуживания пациентов за счёт автоматизации
- •Сущности и отношения между ними
- •Сравнение с аналогами
- •Перечень задач, подлежащих решению в процессе проектирования
- •Разработка структуры
- •Внутреннее проектирование
- •Проектирование баз данных
- •Описание инфологической модели
- •Выбор субд
- •Разработка даталогической модели
- •1.2.6. Разработка архитектуры асоиу
- •1.2.6.1. Выбор архитектуры
- •1.2.6.1.1. Архитектура «Файл-сервер».
- •1.2.6.1.2. Архитектура «Клиент-сервер».
- •1.2.6.1.3.Трёхуровневая архитектура
- •1.2.6.2. Выбор языка сценариев
- •Технологическая часть
- •Задание входных/выходных данных
- •Разработка графа диалога
- •Разработка экранных форм.
- •Руководство пользователю
- •Исследовательская часть
- •3.1. Оптимизация логической схемы бд
- •3.1.1. Понятие «хорошей» схемы бд
- •3.1.2. Алгоритм построения «хорошей» схемы бд
- •Доказательство «хорошей» схемы бд
- •Организационно-экономический раздел
- •4.1. Экономическое обоснование внедрения асдо клиентов поликлиник
- •4.1.1. Обоснование сметы затрат на разработку программного продукта асдо клиентов поликлиник
- •4.1.1.1. Расчет затрат на расходные материалы
- •4.1.1.2. Расчет затрат на оборудование
- •4.1.1.3. Расчет затрат на оплату труда
- •4.1.1.4 Расчет затрат на единый социальный налог
- •4.1.1.5 Расчет затрат на услуги сторонних организаций
- •4.1.1.6 Расчет затрат на накладные расходы
- •4.2 Расчет стоимости оборудования, которое следует закупить для создания асдо клиентов поликлиник
- •4.3. Расчет стоимости программного обеспечения, которое следует закупить для создания асдо клиентов поликлиник
- •4.4. Расчет стоимости установки и монтажа асдо клиентов поликлиник
- •4.5. Расчет экономии стоимости затрат на содержание и эксплуатацию асдо после ее внедрения за месяц
- •4.6. Расчет срока окупаемости асдо после ее внедрения
- •Промышленная экология и безопасность
- •5.1. Характеристика внешних условий и ритма труда, освещенности, неблагоприятных факторов на утомляемость и снижение производительности труда.
- •5.2. Характеристика условий труда
- •5.3. Эргономические требования к рабочему месту.
- •5.4. Расчёт освещённости
- •5.4.1. Комната 1 (два программиста).
- •5.4.2. Комната 2 (руководителя)
- •Заключение
- •Список использованных источников
- •Приложение а. Графические листы
- •Приложение б. Техническое задание
- •«Автоматизированная система дистанционного обслуживания клиентов поликлиник»
- •Оглавление
- •1. Наименование
- •7. Техническая документация, предъявляемая по окончании работы
- •8. Порядок приёма работы
- •9. Дополнительные условия
Исследовательская часть
3.1. Оптимизация логической схемы бд
3.1.1. Понятие «хорошей» схемы бд
«Хорошая схема» базы данных – это схема БД, которая обладает следующими свойствами:
1) Свойство соединения без потерь:
Если = (R1, R2,..., Rn) – схема БД, то для любого экземпляра
= A = R1 U R2 U … U Rn,
где А – объединение или множество атрибутов предметной области, имеет место следующее выражение:
, (2)
где – проекция экземпляра отношения r на множество атрибутов Ri.
2) Свойство сохранения зависимости:
Если = (R1, R2,..., Rn) – схема БД и F – множество функциональных зависимостей, то имеет место:
, (3)
где – проекция множества ФЗ на схему отношений.
3) Свойство нахождения в 3НФ.
Любая схема отношения находится в третьей нормальной форме и при этом достигается:
отсутствие аномалии избыточности;
отсутствие потенциальной противоречивости;
отсутствие аномалии включения;
отсутствие аномалии удаления.
3.1.2. Алгоритм построения «хорошей» схемы бд
Пусть R = (A1,…An) – универсальная схема отношений,
F – множество функциональных зависимостей на R.
Алгоритм.
Положить = 0 – множество схем отношений, которые образуют схему БД.
Определить G – минимальное покрытие для F.
Каждую зависимость V→W из G заменить на множество атрибутов VW. Получившееся множество схем отношений обозначить через Q.
Если множество атрибутов (A1A2…An) Q, то добавить в схему отношенийR=(A1…An). Выйти из алгоритма. В этом случае «хорошая» схема БД будет состоять только из одной схемы отношений R. Иначе перейти к пункту 5.
Добавить в в качестве схем отношений те одиночные атрибуты, которые не вошли ни в одну из схем изQ.
Добавить в все схемы отношений изQ.
Примечание: после выполнения п. 1-4 или 1-6 обладает свойством сохранения зависимости, и каждая схема отношения находится в 3НФ.
Доказательство «хорошей» схемы бд
Схема БД
= (поликлиника, отделение, врач, расписание, пациент, направление к врачу, анализ, направление на анализ, лаборатория, результат анализа, процедура, направление на процедуру, процедурный лист, лекарство, рецепт) множество отношений R.
Таблица
3.1.
Атрибут |
Обозначение |
ID |
Pl1 |
Name |
Pl2 |
Adress | |
Phone |
Таблица
3.2.
Атрибут |
Обозначение |
ID |
О1 |
ID_hospital |
Pl1 |
Name |
O2 |
Таблица
3.3.
Атрибут |
Обозначение |
ID |
V1 |
ID_department |
O1 |
FIO |
V2 |
Specialization | |
Birthdate | |
Number |
Таблица
3.4.
Атрибут |
Обозначение |
ID |
Rs1 |
ID_doctor |
V1 |
Day |
Rs2 |
Begin | |
End |
Таблица
3.5.
Атрибут |
Обозначение |
ID |
Pt1 |
FIO |
Pt2 |
Birthdate | |
Polis | |
Address | |
BeginDate |
Таблица
3.6.
Атрибут |
Обозначение |
ID |
Nv1 |
ID_patient |
Pt1 |
ID_doctor |
V1 |
Date |
Nv2 |
Time | |
Check |
Таблица
3.7.
Атрибут |
Обозначение |
ID |
A1 |
Name |
A2 |
Cabinet | |
Time |
Таблица
3.8.
Атрибут |
Обозначение |
ID |
Na1 |
ID_analiz |
A1 |
ID_doctor |
V1 |
ID_patient |
Pt1 |
ID_lab |
Lb1 |
Date |
Na2 |
Time |
Таблица
3.9.
Атрибут |
Обозначение |
ID |
Lb1 |
Name |
Lb2 |
Address | |
Phone |
Таблица
3.10.
Атрибут |
Обозначение |
ID |
Ra1 |
ID_sending |
Na1 |
Date |
Ra2 |
Result |
Таблица
3.11.
Атрибут |
Обозначение |
ID |
Pc1 |
Name |
Pc2 |
Number | |
Time |
Таблица
3.12.
Атрибут |
Обозначение |
ID |
Np1 |
ID_процедуры |
Pc1 |
ID_врача |
V1 |
ID_пациента |
Pt1 |
Количество |
Np2 |
Таблица 3.13.
Таблица «Процедурный лист»
Атрибут |
Обозначение |
ID |
Pcl1 |
ID_procedure |
Pc1 |
Date |
Pcl2 |
Time | |
Check |
Таблица 3.14.
Таблица «Лекарство»
Атрибут |
Обозначение |
ID |
Lv1 |
Name |
Lv2 |
Treatment | |
BadEffect |
Таблица
3.15.
Атрибут |
Обозначение |
ID |
Rt1 |
ID_treatment |
Lv1 |
ID_doctor |
V1 |
ID_patient |
Pt1 |
Date |
Rt2 |
Предметная область состоит из следующего числа атрибутов:
R = (Pl1, Pl2, O1, O2, V1, V2, Rs1, Rs2, Pt1, Pt2, Nv1, Nv2, A1, A2, Na1, Na2, Lb1, Lb2, Ra1, Ra2, Pc1, Pc2, Np1, Np2, Pcl1, Pcl2, Lv1, Lv2, Rt1, Rt2)
Формальные определения зависимостей, которые наблюдаются в предметной области, с учётом обозначений атрибутов сущностей:
F = {Pl1 → Pl2, O1 → O2P1, V1 → V2O1, Rs1 → Rs2V1, Pt1 → Pt2, Nv1 → Nv2V1Pt1, A1 →A2, Na1 → Na2A1Lb1V1Pt1, Lb1 → Lb2, Ra1 → Ra2Na1Lb1, Pc1 → Pc2, Np1 → Np2Pc1Pt1V1, Pcl1 → Pcl2Np1, Lv1 → Lv2, Rt1 → Rt2Lv1V1Pt1}
Для упрощения процесса вычисления отбросим из F все уникальные функциональные зависимости (в правой части которых нет ключей), получим:
F = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1Pt1, Na1 → A1Lb1V1Pt1, Ra1 → Na1Lb1, Np1 → Pc1V1Pt1, Pcl1 → Np1, Rt1 → Lv1V1Pt1}
Положим схему базы данных, которая образует БД пустой,= 0.
Определяем G - минимальное покрытие для множества функциональных зависимостей F.
Проверяем условие, принадлежит ли данная функциональная зависимость
x→А0 (G - x→A0)+. Если принадлежит, то ее исключаем из множества G.
Для того чтобы убедиться, входит ли зависимость x→А0 (G - x→A0)+ , достаточно построить замыкание множества функциональных зависимостей (G - x→A0)+. В этом случае, если А0 x+, то ее можно исключить из G.
Минимизируем число атрибутов в правой части у каждой функциональной зависимости до 1, то есть каждую зависимость из F заменяем на совокупные, каждая из которых содержит один атрибут в правой части.
G = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Рассмотрим функциональную зависимость O1 → P1
G – O1 → P1 = {V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Ol+ = Ol, P1Ol+, O1 → P1(G – O1 → P1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость V1 → O1
G - V1 → O1 = {O1 → P1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
V1+ = V1, O1V1+, V1 → O1(G - V1 → O1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Rs1 → V1
G - Rs1 → V1 = {O1 → P1, V1 → O1, Nv1 → V1, Nv1 → Pt, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Rs1+ = Rs1, V1Rs1+, Rs1 → V1(G - Rs1 → V1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Nv1 → V1
G - Nv1 → V1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Nv1+ = Nv1Pt1, V1Nv1+, Nv1 → V1(G - Nv1 → V1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Nv1 → Pt1
G - Nv1 → Pt1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Nv1+ = V1O1P1, Pt1Nv1+, Nv1 → Pt1(G - Nv1 → Pt1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Na1 → A1
G - Na1 → A1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Na1+ = Na1Lb1V1O1P1Pt1, A1Na1+, Na1 → A1( G - Na1 → A1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Na1 → Lb1
G - Na1 → Lb1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Na1+ = Na1V1Pt1O1P1A1, Lb1Na1+, Na1 → Lb1( G - Na1 → Lb1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Na1 → V1
G - Na1 → V1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Na1+ = Na1Pt1A1, V1Na1+, Na1 → V1( G - Na1 → V1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Na1 → Pt1
G - Na1 → Pt1= {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Na1+ = Na1V1O1P1A1, Pt1Na1+, Na1 → Pt1( G - Na1 → Pt1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Ra1 → Na1
G - Ra1 → Na1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Ra1+ = Ra1Lb1, Na1Ra1+, Ra1 → Na1( G - Ra1 → Na1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Ra1 → Lb1
G - Ra1 → Lb1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Ra1+ = Ra1Na1Pt1V1O1P1, Lb1Ra1+, Ra1 → Lb1( G - Ra1 → Lb1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Np1 → Pc1
G - Np1 → Pc1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Np1+ = Np1V1O1P1Pt1, Pc1Np1+, Np1 → Pc1(G - Np1 → Pc1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Np1 → V1
G - Na1 → Ra1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Np1+ = Np1Pt1Pc1, V1Np1+, Np1 → V1( G - Np1 → V1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Np1 → Pt1
G - Np1 → Pt1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Np1+ = Np1V1O1P1Pc1, Pt1Np1+, Np1 → Pt1(G - Np1 → Pt1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Pcl1 → Np1
G - Pcl1 → Np1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
Pcl1+ = Pcl1, Np1Pcl1+, Pcl1 → Np1(G - Pcl1 → Np1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Rt1 → Lv1
G - Rt1 → Lv1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → V1, Rt1 → Pt1}
Rt1+ = Rt1V1O1P1Pt1 Lv1Rt1+, Rt1 → Lv1(G - Rt1 → Lv1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Rt1 → V1
G - Rt1 → V1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → Pt1}
Rt1+ = Rt1Lv1Pt1, V1Rt1+, Rt1 → Lv1( G - Rt1 → Lv1)+
Т.о. данную функциональную зависимость нельзя исключить.
Рассмотрим функциональную зависимость Rt1 → Pt1
G - Rt1 → Pt1 = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → V1, Rt1 → V1}
Rt1+ = Rt1Lv1V1O1P1, Pt1Rt1+, Rt1 → Pt1(G - Rt1 → Pt1)+
Т.о. данную функциональную зависимость нельзя исключить.
Из множества G, полученного при выполнении пункта 2.1., выбираем те функциональные зависимости, у которых в левой части количество символов больше 1. Для нового множества надо проверить условие: для любого z, принадлежащего x (zx), принадлежит ли z атрибуту A, то есть, принадлежит ли данная новая функциональная зависимость z→A множеству G+.
Если выполняется условие z→AG+, то меняем содержимое G, то есть x →A заменяем на z→A. Тем самым выполняется операция попытки уменьшить число атрибутов в левой части функциональных зависимостей.
G = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1, Nv1 → Pt1, Na1 → A1, Na1 → Lb1, Na1 → V1, Na1 → Pt1, Ra1 → Na1, Ra1 → Lb1, Np1 → Pc1, Np1 → V1, Np1 → Pt1, Pcl1 → Np1, Rt1 → Lv1, Rt1 → V1, Rt1 → Pt1}
В множестве G нет функциональных зависимостей с числом атрибутов больше одного в левой части, поэтому пропускаем этот пункт алгоритма и переходим к следующему.
Зависимости с одинаковой левой частью объединим в одну функциональную зависимость. Минимальное покрытие функциональных зависимостей предметной области примет следующий вид:
G = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1Pt1, Na1 → A1Lb1V1Pt1, Ra1 → Na1Lb1, Np1 → Pc1V1Pt1, Pcl1 → Np1, Rt1 → Lv1V1Pt1}
Каждую функциональную зависимость x→A в G’ заменяем на схему отношений типа xA (на множество атрибутов); получившееся множество схем отношений обозначим через Q.
Q = {P1P2, O1P1O2, V1O1V2, Pt1Pt2, Rs1V1Rs2, Nv1V1Pt1Nv2, Na1A1Lb1V1Pt1Na2, Ra1Na1Lb1Ra2, Np1Pc1V1Pt1Np2, Pcl1Np1Pcl2, Rt1Lv1V1Pt1Rt2, Lb1Lb2, Lv1Lv2, Pc1Pc2, A1A2}
Если такая схема отношений A1A2A3 … AnQ, то = A1A2A3 … An и выход из алгоритма. В противном случае переход к шагу 5.
Поскольку такой схемы P1O1P2V1O2Rs1Nv1Na1Np1Rt1V2Pt1Pt2A1A2Ra1Na2Lb1 Lb2Pc1Pcl1Pc2Lv1Rt1Lv2Rs2Nv2Ra2Np2Pcl2Rt2 нет, перейти к шагу 5.
Если в множестве атрибутов R встретился хотя бы один атрибут, который не вошел в любую из схем отношений множества Q, то его добавляем в . Все атрибуты универсальной схемы отношений R вошли хотя бы в одну схему отношений в Q, поэтому остается без изменений.
ρ = (P1P2, O1P1O2, V1O1V2, Pt1Pt2, Rs1V1Rs2, Nv1V1Pt1Nv2, Na1A1Lb1V1Pt1Na2, Ra1Na1Lb1Ra2, Np1Pc1V1Pt1Np2, Pcl1Np1Pcl2, Rt1Lv1V1Pt1Rt2, Lb1Lb2, Lv1Lv2, Pc1Pc2, A1A2)
После выполнения операции на этом шаге схема БД обладает свойством сохранения зависимостей, и каждая ее схема отношений находится в третьей нормальной форме.
Таким образом, оптимальная схема БД совпадает с разработанной схемой БД, что и требовалось доказать.