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

  • Примечание.

  • Лекции и практики (1). Курс лекций и материалы для практических занятий


    Скачать 1.01 Mb.
    НазваниеКурс лекций и материалы для практических занятий
    Дата17.03.2023
    Размер1.01 Mb.
    Формат файлаdocx
    Имя файлаЛекции и практики (1).docx
    ТипКурс лекций
    #996812
    страница56 из 75
    1   ...   52   53   54   55   56   57   58   59   ...   75

    Нормализация полученных отношений (до 4НФ)


    Механизм нормализации подразумевает определённую последователь- ность преобразования отношений к третьей нормальной форме. Мы не будем чётко придерживаться этой последовательности, т.к. она избыточна, и много- значные атрибуты сразу вынесем в отдельные отношения на первом же этапе.

    1НФ. Для приведения таблиц к 1НФ требуется составить прямоугольные таб- лицы (одно значение атрибута – одна ячейка таблицы) и разбить сложные атрибуты на простые.

    Примечание. В реальных БД сложные атрибуты разбиваются на простые, если: а) этого требует внешнее представление данных;

    б) в запросах поиск может осуществляться по отдельной части атрибута.

    Разделим атрибут Фамилия, имя, отчествона два атрибута Фамилияи Имя, отчество, Паспортные данныена Номер паспорта(уникальный), Дата выдачии Кем выдан, а Данные об образовании– на Вид образования, Специальность, Номер дипломаи Годокончанияучебного заведения.

    Многозначные атрибуты Комнатыи Телефоныиз отношения ОТДЕЛЫвы- несем в отдельное отношение КОМНАТЫ, а домашние и мобильные телефо- ны и адреса сотрудников в отношение АДРЕСА-ТЕЛЕФОНЫ. Так как в

    комнате может не быть телефона, первичный ключ отношения КОМНАТЫне определен (ПК не может содержать null–значения), но на этих атрибутах можно определить составной уникальный ключ. В отношении АДРЕСА-ТЕЛЕФОНЫтакже нет потенциальных ключей: оставим это отношение без первичного ключа, т.к. на это отношение никто не ссылается. Данные об об- разовании сотрудников также вынесем в отдельное отношение.

    Что касается рабочих телефонов сотрудников, то один из этих номеров – ос- новной – определяется рабочим местом сотрудника (рассматриваются толь- ко стационарные телефоны). Будем хранить этот номер в атрибуте Рабо-чий телефон. Наличие других номеров зависит от того, есть ли в том же по- мещении (комнате) другие сотрудники, имеющие стационарные телефоны. Добавим в отношение СОТРУДНИКИатрибут Номер комнаты, чтобы до- полнительные номера телефонов сотрудника можно было вычислить из дру- гих кортежей с таким же номером комнаты.

    Связь между отношениями СОТРУДНИКИи КОМНАТЫреализуем через составной внешний ключ (Номер комнаты, Рабочий телефон).

    Мы также удалим вычислимый атрибут Полученная суммаиз отношения ПРОЕКТЫ, т.к. он является суммой значений аналогичного атрибута из от- ношения ЭТАПЫ ПРОЕКТОВ. Но атрибут Стоимостьпроектаоставим, т.к. она фигурирует в документации по проекту. А для обеспечения логиче- ской целостности данных предусмотрим в приложении проверку того, что сумма по всем этапам совпадает со стоимостью проекта.

    2НФ. В нашем случае составные первичные ключи имеют отношения ЭТАПЫПРОЕКТАи УЧАСТИЕ. Неключевые атрибуты этих отношений функцио- нально полно зависят от составных первичных ключей.

    3НФ. В отношении ПРОЕКТЫатрибут Данные заказчиказависит от атрибута Заказчик, а не от первичного ключа, поэтому его следует вынести в отдель- ное отношение ЗАКАЗЧИКИ. Но при этом первичным ключом нового отно- шения станет атрибут Заказчик, т.е. длинная символьная строка. Целесооб- разнее перенести в новое отношение атрибуты Заказчики Данные заказчикаи ввести для него суррогатный ПК. Так как с каждым заказчиком может быть связано несколько проектов, связь между отношениями ПРОЕКТЫи ЗАКАЗЧИКИбудет 1:n и суррогатный ПК станет внешним ключом для от- ношения ПРОЕКТЫ.

    В отношении СОТРУДНИКИатрибут Окладзависит от атрибута Долж-ность. Поступим с этой транзитивной зависимостью так же, как в предыду- щем случае: создадим отношение ДОЛЖНОСТИ, перенесём в него атрибуты Должностьи Оклад, а первичным ключом сделаем название должности.

    В отношениях СОТРУДНИКИи ОБРАЗОВАНИЕатрибуты (Дата выдачии Кем выдан) и (Номер дипломаи Год окончания учебного заведения) зависят не от первичного ключа, а от атрибутов соответственно Номер паспортаи Специальность. Но если мы выделим их в отдельное отношение, то получим связи типа 1:1. Следовательно, здесь декомпозиция нецелесообразна.

    4НФ. Отношение АДРЕСА-ТЕЛЕФОНЫнарушают 4НФ, т.к. не всякий теле- фон привязан к конкретному адресу (т.е. мы имеем две многозначных зави- симости в одном отношении). Но выделять Телефоныв отдельное отноше- ние не стоит, т.к. эти сведения носят справочный характер и не требуется их автоматическая обработка.

    Отношения, полученные после нормализации, приведены в табл. 9.14-9.23.
    Таблица 9.14. Схема отношения ОТДЕЛЫ(Departs)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Аббревиатура отдела

    D_ID

    V(12)

    первичный ключ

    Название отдела

    D_NAME

    V(100)

    обязательное поле

    Таблица 9.15. Схема отношения КОМНАТЫ(Rooms)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Отдел

    R_DEPART

    V(12)

    внешний ключ Departs)

    Номер комнаты

    R_ROOM

    N(4)

    составной уникальный ключ

    Телефон

    R_PHONE

    V(20)

    Таблица 9.16. Схема отношения ДОЛЖНОСТИ(Posts)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Название должности

    P_POST

    V(30)

    первичный ключ

    Оклад

    P_SAL

    N(8,2)

    обязательное поле, > 4500 руб.

    Таблица 9.17. Схема отношения СОТРУДНИКИ(Employees)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Идентификатор сотрудника

    E_ID

    N(4)

    суррогатный первичный ключ

    Фамилия

    E_FNAME

    V(25)

    обязательное поле

    Имя, отчество

    E_LNAME

    V(30)

    обязательное поле

    Дата рождения

    E_BORN

    D

    обязательное поле

    Пол

    E_SEX

    C(1)

    обязательное поле

    Серия и номер паспорта

    E_PASP

    C(10)

    обязательное уникальное поле

    Когда выдан паспорт

    E_DATE

    D

    обязательное поле

    Кем выдан паспорт

    E_GIVEN

    V(50)

    обязательное поле

    ИНН

    E_INN

    C(12)

    обязательное уникальное поле

    Номер пенсионного страхо- вого свидетельства

    E_PENS

    C(14)

    обязательное уникальное поле

    Отдел

    E_DEPART

    V(12)

    внешний ключ Departs)

    Должность

    E_POST

    V(30)

    внешний ключ Posts)

    Номер комнаты

    E_ROOM

    N(4)

    составной внешний ключ Rooms)

    Рабочий телефон

    E_PHONE

    V(20)

    Логин

    E_LOGIN

    V(30)




    Таблица 9.18. Схема отношения ОБРАЗОВАНИЕ(Edu)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Идентификатор сотрудника

    U_ID

    N(4)

    внешний ключ Employees)

    Вид образования

    U_TYPE

    V(20)

    обязательное поле

    Специальность

    U_SPEC

    V(40)




    Номер диплома

    U_DIPLOM

    V(15)







    Год окончания учебного заведения

    U_YEAR

    N(4)

    обязательное поле

    Таблица 9.19. Схема отношения АДРЕСА-ТЕЛЕФОНЫ(AdrTel)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Идентификатор сотрудника

    A_ID

    N(4)

    внешний ключ Employees)

    Адрес

    A_ADDR

    V(50)




    Телефон

    A_PHONE

    V(30)




    Таблицы ОБРАЗОВАНИЕ и АДРЕСА-ТЕЛЕФОНЫ не имеют потенциаль- ных ключей, но мы не будем вводить суррогатные первичные ключи, т.к. на эти таблицы никто не ссылается.

    Таблица 9.20. Схема отношения ЗАКАЗЧИКИ(Clients)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Номер заказчика

    C_ID

    N(4)

    суррогатный первичный ключ

    Заказчик

    C_COMPANY

    V(40)

    обязательное поле

    Адрес заказчика

    C_ADR

    V(50)

    обязательное поле

    Контактное лицо

    C_PERSON

    V(50)

    обязательное поле

    Телефон

    C_PHONE

    V(30)




    Таблица 9.21. Схема отношения ПРОЕКТЫ(Projects)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Номер проекта

    P_ID

    N(6)

    обязательное уникальное поле

    Название проекта

    P_TITLE

    V(100)

    обязательное поле

    Сокращённое название

    P_ABBR

    С(10)

    первичный ключ

    Отдел

    P_DEPART

    V(12)

    внешний ключ Departs)

    Заказчик

    P_COMPANY

    N(4)

    внешний ключ Clients)

    Руководитель

    P_CHIEF

    N(4)

    внешний ключ Employees)

    Дата начала проекта

    P_BEGIN

    D

    обязательное поле

    Дата окончания проекта

    P_END

    D

    обязательное поле, больше да- ты начала проекта

    Реальная дата окончания

    P_FINISH

    D

    больше даты начала проекта

    Стоимость проекта

    P_COST

    N(10)

    обязательное поле, > 0

    Таблица 9.22. Схема отношения УЧАСТИЕ(Job)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Проект

    J_PRO

    C(10)

    внешний ключ Projects)

    состав- ной ПК

    Сотрудник

    J_EMP

    N(4)

    внешний ключ (к Employees)

    Роль

    J_ROLE

    V(20)

    обязательное поле

    Доплата

    J_BONUS

    N(2)




    Таблица 9.23. Схема отношения ЭТАПЫПРОЕКТА(Stages)

    Содержаниеполя

    Имяполя

    Тип,длина

    Примечания

    Проект

    S_PRO

    C(10)

    внешний ключ Projects)

    составной первичный ключ

    Номер этапа

    S_NUM

    N(2)




    Название этапа

    S_TITLE

    V(200)

    обязательное поле

    Дата начала этапа

    S_BEGIN

    D

    обязательное поле

    Дата окончания этапа

    S_END

    D

    обязательное поле, больше да- ты начала этапа




    Реальная дата окончания

    S_FINISH

    D

    больше даты начала этапа

    Стоимость этапа

    S_COST

    N(10)

    обязательное поле

    Полученная сумма по этапу

    S_SUM

    N(10)

    обязательное поле, значение по умолчанию – 0

    Форма отчётности

    S_FORM

    V(100)

    обязательное поле

    Схема базы данных после нормализации приведена на рис. 9.13.



    Рис. 9.13. Окончательная схема БД проектной организации

          1. 1   ...   52   53   54   55   56   57   58   59   ...   75


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