Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Доказательство «хорошей» схемы БД
Схема БД r = (поликлиника, отделение, врач, расписание, пациент, направление к врачу, анализ, направление на анализ, лаборатория, результат анализа, процедура, направление на процедуру, процедурный лист, лекарство, рецепт) множество отношений R.
Предметная область состоит из следующего числа атрибутов: 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}
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) После выполнения операции на этом шаге схема БД обладает свойством сохранения зависимостей, и каждая ее схема отношений находится в третьей нормальной форме. Таким образом, оптимальная схема БД совпадает с разработанной схемой БД, что и требовалось доказать.
Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 606; Нарушение авторского права страницы