- •Реферат Расчетно-пояснительная записка содержит 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, P1
Ol+,
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,
O1
V1+,
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, V1
Rs1+,
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, V1
Nv1+,
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,
Pt1
Nv1+,
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, A1
Na1+,
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, Lb1
Na1+,
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, V1
Na1+,
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, Pt1
Na1+,
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, Na1
Ra1+,
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, Lb1
Ra1+,
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,
Pc1
Np1+,
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, V1
Np1+,
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,
Pt1
Np1+,
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,
Np1
Pcl1+,
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
Lv1
Rt1+,
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, V1
Rt1+,
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,
Pt1
Rt1+,
Rt1
→ Pt1
(G
- Rt1
→ Pt1)+
Т.о. данную функциональную зависимость нельзя исключить.
Из множества G, полученного при выполнении пункта 2.1., выбираем те функциональные зависимости, у которых в левой части количество символов больше 1. Для нового множества надо проверить условие: для любого z, принадлежащего x (z
x),
принадлежит ли z
атрибуту A,
то есть, принадлежит ли данная новая
функциональная зависимость z→A
множеству G+.
Если
выполняется условие z→A
G+,
то меняем содержимое 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 … An
Q,
то =
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)
После выполнения операции на этом шаге схема БД обладает свойством сохранения зависимостей, и каждая ее схема отношений находится в третьей нормальной форме.
Таким образом, оптимальная схема БД совпадает с разработанной схемой БД, что и требовалось доказать.
