Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Доказательство «хорошей» схемы БД



Схема БД

r = (поликлиника, отделение, врач, расписание, пациент, направление к врачу, анализ, направление на анализ, лаборатория, результат анализа, процедура, направление на процедуру, процедурный лист, лекарство, рецепт) множество отношений 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

 

Атрибут Обозначение
ID Na1
ID_analiz A1
ID_doctor V1
ID_patient Pt1
ID_lab Lb1
Date Na2
Time

Таблица 3.8.
Таблица «Направление на анализ»

 

Таблица 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}

  1. Положим схему базы данных, которая образует БД пустой, = 0.
  2. Определяем G - минимальное покрытие для множества функциональных зависимостей F.

2.1. Проверяем условие, принадлежит ли данная функциональная зависимость

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}

1) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

2) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

3) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

4) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

5) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

6) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

7) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

8) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

9) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

10) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

11) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

12) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

13) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

14) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

15) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

16) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

17) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

18) Рассмотрим функциональную зависимость 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)+

Т.о. данную функциональную зависимость нельзя исключить.

2.2. Из множества 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 нет функциональных зависимостей с числом атрибутов больше одного в левой части, поэтому пропускаем этот пункт алгоритма и переходим к следующему.

2.3. Зависимости с одинаковой левой частью объединим в одну функциональную зависимость. Минимальное покрытие функциональных зависимостей предметной области примет следующий вид:

G = {O1 → P1, V1 → O1, Rs1 → V1, Nv1 → V1Pt1, Na1 → A1Lb1V1Pt1, Ra1 → Na1Lb1, Np1 → Pc1V1Pt1, Pcl1 → Np1, Rt1 → Lv1V1Pt1}

3. Каждую функциональную зависимость x→ A в G’ заменяем на схему отношений типа xA (на множество атрибутов); получившееся множество схем отношений обозначим через Q.

Q = {P1P2, O1P1O2, V1O1V2, Pt1Pt2, Rs1V1Rs2, Nv1V1Pt1Nv2, Na1A1Lb1V1Pt1Na2, Ra1Na1Lb1Ra2, Np1Pc1V1Pt1Np2, Pcl1Np1Pcl2, Rt1Lv1V1Pt1Rt2, Lb1Lb2, Lv1Lv2, Pc1Pc2, A1A2}

4. Если такая схема отношений A1A2A3 … An Q, то r= A1A2A3 … An и выход из алгоритма. В противном случае переход к шагу 5.

Поскольку такой схемы P1O1P2V1O2Rs1Nv1Na1Np1Rt1V2Pt1Pt2A1A2Ra1Na2Lb1 Lb2Pc1Pcl1Pc2Lv1Rt1Lv2Rs2Nv2Ra2Np2Pcl2Rt2 нет, перейти к шагу 5.

5. Если в множестве атрибутов R встретился хотя бы один атрибут, который не вошел в любую из схем отношений множества Q, то его добавляем в r. Все атрибуты универсальной схемы отношений R вошли хотя бы в одну схему отношений в Q, поэтому r остается без изменений.

6. ρ = (P1P2, O1P1O2, V1O1V2, Pt1Pt2, Rs1V1Rs2, Nv1V1Pt1Nv2, Na1A1Lb1V1Pt1Na2, Ra1Na1Lb1Ra2, Np1Pc1V1Pt1Np2, Pcl1Np1Pcl2, Rt1Lv1V1Pt1Rt2, Lb1Lb2, Lv1Lv2, Pc1Pc2, A1A2)

После выполнения операции на этом шаге схема БД обладает свойством сохранения зависимостей, и каждая ее схема отношений находится в третьей нормальной форме.

Таким образом, оптимальная схема БД совпадает с разработанной схемой БД, что и требовалось доказать.


 

 


Поделиться:



Популярное:

  1. II. Формирование умений искать доказательство
  2. А. Чертеж кинематической схемы электромеханического привода
  3. Базовая модель в контексте формализованной схемы моделирования хозяйственного механизма
  4. ДИРЕКТИВЫ И СХЕМЫ РАЗВИТИЯ СЦЕНАРИЯ
  5. Доказательство достаточных условий
  6. ДОКАЗАТЕЛЬСТВО ХАРАКТЕРИСТИКИ СЕКУНДЫ КАК УНИВЕРСАЛЬНОГО КВАНТА ВРЕМЕНИ
  7. Исследование влияния параметров элементов схемы на работу базового логического элемента 2И-НЕ ТТЛШ серии 1531
  8. Картосхемы, схемы, карты, профили, картодиаграммы, картограммы
  9. Кооперативные биматричные игры, оптимальность по Парето, переговорное множество, арбитражные схемы Нэша, функция Нэша.
  10. Краткое описание работы схемы
  11. Линии взаимосвязи выполняются толщиной от 0,2 до 1,0 мм в зависимости от формата схемы и размеров графических обозначений. Рекомендуется толщина линий от 0,3 до 0,4 мм.


Последнее изменение этой страницы: 2016-08-31; Просмотров: 560; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.063 с.)
Главная | Случайная страница | Обратная связь