Главная страница
Навигация по странице:

  • «Поликлиника»

  • «Расписание»

  • «Направление к врачу»

  • «Направление на анализ» Таблица 3.9. Таблица «Лаборатория»

  • «Результат анализа»

  • «Направление на процедуру»

  • «Процедурный лист»

  • РЕФЕРАТ. Пояснительная записка содержит 127 страниц, 65 таблиц, 39 рисунков


    Скачать 7.41 Mb.
    НазваниеПояснительная записка содержит 127 страниц, 65 таблиц, 39 рисунков
    АнкорРЕФЕРАТ.docx
    Дата01.10.2018
    Размер7.41 Mb.
    Формат файлаdocx
    Имя файлаРЕФЕРАТ.docx
    ТипПояснительная записка
    #25329
    страница8 из 16
    1   ...   4   5   6   7   8   9   10   11   ...   16

    ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ



    2.3.1. Оптимизация логической схемы БД

    3.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НФ.

    Любая схема отношения находится в третьей нормальной форме и при этом достигается:

    • отсутствие аномалии избыточности;

    • отсутствие потенциальной противоречивости;

    • отсутствие аномалии включения;

    • отсутствие аномалии удаления.

    4.3.1.2. Алгоритм построения «хорошей» схемы БД


    Пусть R = (A1,…An) – универсальная схема отношений,

    F – множество функциональных зависимостей на R.

    Алгоритм.

    1. Положить = 0 – множество схем отношений, которые образуют схему БД.

    2. Определить G – минимальное покрытие для F.

    3. Каждую зависимость V→W из G заменить на множество атрибутов VW. Получившееся множество схем отношений обозначить через Q.

    4. Если множество атрибутов (A1A2…An) Q, то добавить в схему отношений R=(A1…An). Выйти из алгоритма. В этом случае «хорошая» схема БД будет состоять только из одной схемы отношений R. Иначе перейти к пункту 5.

    5. Добавить в в качестве схем отношений те одиночные атрибуты, которые не вошли ни в одну из схем из Q.

    6. Добавить в все схемы отношений из Q.

    Примечание: после выполнения п. 1-4 или 1-6  обладает свойством сохранения зависимости, и каждая схема отношения находится в 3НФ.
      1. Доказательство «хорошей» схемы БД


    Схема БД

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

      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)+

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. 1   ...   4   5   6   7   8   9   10   11   ...   16


    написать администратору сайта