|
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Доказательство «хорошей» схемы БД
Схема БД 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 Для того чтобы убедиться, входит ли зависимость x→ А0 Минимизируем число атрибутов в правой части у каждой функциональной зависимости до 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 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 Т.о. данную функциональную зависимость нельзя исключить. 2.2. Из множества G, полученного при выполнении пункта 2.1., выбираем те функциональные зависимости, у которых в левой части количество символов больше 1. Для нового множества надо проверить условие: для любого z, принадлежащего x (z Если выполняется условие 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 Поскольку такой схемы 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; Нарушение авторского права страницы