Главная страница

Лабораторная работа создание баз данных. Лабораторная работа проектирование базы данных


Скачать 1.01 Mb.
НазваниеЛабораторная работа проектирование базы данных
АнкорЛабораторная работа создание баз данных
Дата26.10.2021
Размер1.01 Mb.
Формат файлаpdf
Имя файлаLB_01.DB_prototype.pdf
ТипЛабораторная работа
#256140
страница3 из 3
1   2   3
Содержание поля
Имя поля
Тип, длина Примечания
Код книги (№ контракта) B_ID
N(6) внешний ключ (к Books)
Код автора
A_ID
N(4) внешний ключ (к Authors)
Номер в списке
A_NO
N(1) обязательное поле
Гонорар
A_FEE
N(3) процент от общего гонорара
Таблица 1.6 – Схема отношения КНИГИ–РЕДАКТОРЫ (Editors)
Содержание поля
Имя поля
Тип, длина Примечания
Код книги (№ контракта) B_ID
N(6) внешний ключ (к Books)
Код редактора
E_ID
N(4) внешний ключ (к Employees)
Таблица 1.7 – Схема отношения СТРОКИ ЗАКАЗА (Items)
Содержание поля
Имя поля
Тип, длина Примечания
Номер заказа
O_ID
N(6) внешний ключ (к Orders)
Код книги (№ контракта) B_ID
N(6) внешний ключ (к Books)
Количество
B_COUNT
N(4) обязательное поле

1.5. Нормализация полученных отношений (до 3НФ)
Нормализация – это процесс организации данных в базе данных, включающий создание таблиц и установление отношений между ними в соответствии с правилами, которые обеспечивают защиту данных и делают базу данных более гибкой, устраняя избыточность и несогласованные зависимости.
Первая нормальная форма
Отношение находится в 1НФ, если все его атрибуты являются простыми, все используемые домены должны содержать только скалярные значения. Не должно быть повторений строк в таблице. Для примера возьмем следующую таблицу 1.8.
Таблица 1.8. Машины - модели
Фирма
Модели
BMW
M5, X5M, M1
Nissan
GT-R
Нарушение нормализации 1НФ происходит в моделях BMW, т.к. в одной ячейке содержится список из 3 элементов: M5, X5M, M1, т.е. он не является атомарным.
Преобразуем таблицу к 1НФ как показано в таблице 1.9.
Таблица 1.9. – Преобразование отношения
Фирма
Модели
BMW
M5
BMW
X5M
BMW
M1
Nissan
GT-R
Вторая нормальная форма
Отношение находится во 2НФ, если оно находится в 1НФ и каждый не ключевой атрибут неприводимо зависит от Первичного Ключа(ПК).
Неприводимость означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, от которого можно также вывести данную функциональную зависимость. (простыми словами: все не ключевые атрибуты должны полностью зависеть от первичного ключа и не должно быть атрибутов, которые зависят от части ПК).
Приведем пример в таблице 1.10.

Таблица 1.10 –Пример работы с атрибутами для приведения отношения ко 2НФ
Модель
Фирма
Цена
Скидка
M5
BMW
5000000 5%
X5M
BMW
9000000 5%
M1
BMW
2500000 5%
GT-R
Nissan
5000000 10%
Таблица находится в первой нормальной форме, но не во второй. Цена машины зависит от модели и фирмы (здесь составной первичный ключ). Скидка зависят от фирмы, то есть зависимость от первичного ключа неполная. Исправляется это путем декомпозиции на два отношения, в которых не ключевые атрибуты зависят от ПК. Нормализованные таблицы представлены под номером 1.11 и 1.12.
Таблица 1.11 – Нормализованное отношение «Модель-Фирма»
Модель
Фирма
Цена
M5
BMW
5000000
X5M
BMW
9000000
M1
BMW
2500000
GT-R
Nissan
5000000
Таблица 1.12 – Нормализованное отношение «Фирма»
Фирма
Скидка
BMW
5%
Nissan
10%
Третья нормальная форма
Отношение находится в 3НФ, когда находится во 2НФ и каждый не ключевой атрибут
нетранзитивно зависит от первичного ключа. Проще говоря, второе правило требует выносить все не ключевые поля, содержимое которых может относиться к нескольким записям таблицы в отдельные таблицы.
Например, возьмем таблицу 1.13.
Первичный ключ

Таблица 1.13 – Отношение во 2НФ
Модель
Магазин
Телефон
BMW
Риал-авто
87-33-98
Audi
Риал-авто
87-33-98
Nissan
Некст-авто
94-54-12
Таблица 1.13 находится во 2НФ, но не в 3НФ.
В отношении атрибут «Модель» является первичным ключом. Личных телефонов у автомобилей нет, и телефон зависит исключительно от магазина.
Таким образом, в отношении существуют следующие функциональные зависимости:
Модель

Магазин,
Магазин

Телефон,
Модель

Телефон.
Зависимость «Модель → Телефон» является транзитивной, следовательно, отношение не находится в 3НФ. В результате разделения исходного отношения получаются два отношения, находящиеся в 3НФ. Полученные отношения представлены в таблицах 1.14 и
1.15
Таблица 1.14 – Отношение «Модель» в 3НФ
Модель
Магазин
BMW
Риал-авто
Audi
Риал-авто
Nissan
Некст-авто
Таблица 1.15 – Отношение «Магазин» в 3НФ
Магазин
Номер
Риал-авто
87-33-98
Некст-авто
94-54-12
1.6. Нормализация отношений для БД «Издательская компания».
1.1.1. 1 НФ (нормальная форма)
Для приведения таблиц к 1НФ требуется составить прямоугольные таблицы (один атрибут – один столбец) и разбить сложные атрибуты на простые, а многозначные атрибуты вынести в отдельные отношения.
Примечание. В реальных БД сложные атрибуты разбиваются на простые, если:
 этого требует внешнее представление данных;
 в запросах поиск может осуществляться по отдельной части атрибута.

Разделим атрибуты «Фамилия, имя, отчество» на три атрибута «Фамилия» «Имя»,
«Отчество» и «Паспортные данные» на атрибуты «Номер паспорта (уникальный)», «Дата выдачи» и «Кем выдан».
Многозначный атрибут «Телефоны» для сотрудников компании следует сначала разделить на два – «Домашние телефоны» и «Рабочие телефоны». (Для авторов мы не будем различать домашние и рабочие телефоны). Затем нужно создать отдельные отношения с (нерабочими) телефонами для сотрудников (ТЕЛЕФОНЫ СОТРУДНИКОВ) и для авторов (ТЕЛЕФОНЫ АВТОРОВ).
Атрибут «Рабочие телефоны» отношения СОТРУДНИКИ имеет неоднородные значения. Один из номеров телефонов – основной – определяется рабочим местом сотрудника (рассматриваются только стационарные телефоны). Наличие других номеров зависит от того, есть ли в том же помещении (комнате) другие сотрудники, имеющие стационарные телефоны. Можно добавить в отношение СОТРУДНИКИ атрибут Номер комнаты, а в атрибуте Рабочие телефоны хранить номер того телефона, который стоит на рабочем месте сотрудника. Дополнительные номера телефонов можно будет вычислить из других кортежей с таким же номером комнаты. Но в случае увольнения сотрудника мы потеряем сведения о номере рабочего телефона.
Поэтому создадим новое отношение КОМНАТЫ и включим в него атрибуты Номер комнаты и Телефон. Так как в комнате может не быть телефона, первичный ключ нового отношения не определен (ПК не может содержать null–значения), но на этих атрибутах можно определить составной уникальный ключ. Связь между отношениями СОТРУДНИКИ и КОМНАТЫ реализуем через составной внешний ключ (Номер комнаты, Телефон).
Значение внешнего ключа для каждого сотрудника будем брать из того кортежа, в котором хранится основной рабочий телефон этого сотрудника.
2 НФ (нормальная форма)
В нашем случае составные первичные ключи имеют отношения СТРОКИ ЗАКАЗА,
КНИГИ–АВТОРЫ и КНИГИ–РЕДАКТОРЫ. Не ключевые атрибуты этих отношений функционально полно зависят от первичных ключей.
3 НФ (нормальная форма)
В отношении ЗАКАЗЫ атрибут Адрес заказчика зависит от атрибута Заказчик, а не от первичного ключа, поэтому адрес следует вынести в отдельное отношение
ЗАКАЗЧИКИ. Но при этом первичным ключом нового отношения станет атрибут
Заказчик, т.е. длинная символьная строка. Целесообразнее перенести в новое отношение атрибуты Заказчик и Адрес заказчика и ввести для него суррогатный ПК. Так как каждый заказчик может сделать несколько заказов, связь между отношениями ЗАКАЗЧИКИ и ЗАКАЗЫ будет 1:n и суррогатный ПК станет внешним ключом для отношения ЗАКАЗЫ.
В отношении СОТРУДНИКИ атрибут Оклад зависит от атрибута Должность.
Поступим с этой транзитивной зависимостью так же, как в предыдущем случае: создадим
новое отношение ДОЛЖНОСТИ, перенесём в него атрибуты Должность и Оклад и введём суррогатный первичный ключ.
В отношениях СОТРУДНИКИ и АВТОРЫ атрибуты Дата выдачи и Кем выдан зависят от атрибута Номер паспорта, а не от первичного ключа. Но если мы выделим их в отдельное отношение, то получившиеся связи будут иметь тип 1:1. Следовательно, декомпозиция нецелесообразна.
В реальных базах данных после нормализации может проводиться денормализация.
Она проводится с одной целью – повышение производительности БД. Рассмотрим некоторые запросы к нашей базе данных.
Например, запрос на получение списка телефонов авторов или домашних телефонов сотрудников потребует в нормализованной БД соединения отношений. Пользователю безразлична форма представления этого списка: номера телефонов через запятую или в столбец. Поэтому мы откажемся от создания отдельных отношений с номерами телефонов, и вернёмся к варианту с многозначными полями. (Это не касается рабочих телефонов сотрудников).
Другой запрос: как определяется, можно ли выполнить очередной заказ? Для каждой позиции заказа нужно просуммировать количество книг по выполненным заказам, получить остаток (тираж минус полученная сумма) и сравнить остаток с объёмом заказа.
Такой расчёт может потребовать много времени, поэтому предлагается добавить в отношение КНИГИ производный атрибут Остаток тиража. Значение этого атрибута должно автоматически пересчитываться при установлении даты выполнения заказа.
После проведённых преобразований схема БД выглядит так (рисунок 1.3):
Рис. 1.3 – Окончательная схема РБД издательской компании

Окончательные схемы отношений
Окончательные схемы отношений базы данных с указанием ключей и других ограничений целостности приведены в табл. 1.8–1.17.
Таблица 1.8 – Схема отношения ДОЛЖНОСТИ (Posts)
Содержание поля
Имя поля
Тип, длина Примечания
Код должности
P_ID
N(3) суррогатный первичный ключ
Название должности
P_POST
C(30) обязательное поле
Оклад
P_SAL
N(8,2) обязательное поле
Таблица 1.9 – Схема отношения КОМНАТЫ (Rooms)
Содержание поля
Имя поля
Тип, длина Примечания
Номер комнаты
R_NO
N(3) составной первичный ключ
Номер телефона
R_TEL
C(10)
Таблица 1.10 – Схема отношения СОТРУДНИКИ (Employees)
Содержание поля
Имя поля
Тип, длина Примечания
Табельный номер
E_ID
N(4) первичный ключ
Фамилия
E_FNAME
C(20) обязательное поле
Имя, отчество
E_LNAME
С(30) обязательное поле
Дата рождения
E_BORN
D
Пол
E_SEX
C(1) обязательное поле
Код должности
E_POST
N(3) внешний ключ (к Posts)
Номер комнаты
E_ROOM
N(3) составной внешний ключ (к
Rooms)
Номер телефона
E_TEL
C(10)
ИНН
E_INN
С(12) обязательное поле
Номер паспорта
E_PASSP
C(12) обязательное поле
Кем выдан паспорт
E_ORG
С(30) обязательное поле
Дата выдачи паспорта
E_PDATE
D обязательное поле
Адрес
E_ADDR
C(50)
Таблица 1.11 – Схема отношения ЗАКАЗЧИКИ (Customers)
Содержание поля
Имя поля
Тип, длина Примечания
Код заказчика
C_ID
N(4) суррогатный первичный ключ
Заказчик
C_NAME
C(30) обязательное поле
Адрес заказчика
C_ADDR
C(50) обязательное поле
Таблица 1.12 – Схема отношения АВТОРЫ (Authors)
Содержание поля
Имя поля
Тип, длина
Примечания
Код автора
A_ID
N(4) суррогатный ключ
Фамилия
A_FNAME
C(20) обязательное поле
Имя, отчество
A_LNAME
С(30) обязательное поле

ИНН
A_INN
С(12)
Номер паспорта
A_PASSP
C(12) обязательное поле
Кем выдан паспорт
A_ORG
С(30) обязательное поле
Дата выдачи паспорта
A_PDATE
D обязательное поле
Адрес
A_ADDR
C(50) обязательное поле
Телефоны
A_TEL
C(30) многозначное поле
Таблица 1.13 – Схема отношения КНИГИ (Books)
Содержание поля
Имя поля
Тип, длина
Примечания
Номер контракта
B_CONTRA
CT
N(6) первичный ключ
Дата подписания контракта B_DATE
D обязательное поле
Менеджер
B_MAN
N(4) внешний ключ (к Employees)
Название книги
B_TITLE
N(40) обязательное поле
Цена
B_PRICE
N(6,2) цена экземпляра книги
Затраты
B_ADVANC
E
N(10,2) общая сумма затрат на книгу
Авторский гонорар
B_FEE
N(8,2) общая сумма гонорара
Дата выхода
B_PUBL
D
Тираж
B_CIRCUL
N(5)
Ответственный редактор
B_EDIT
N(4) внешний ключ (к Employees)
Остаток тиража
B_REST
N(5) производное поле
Таблица 1.14 – Схема отношения ЗАКАЗЫ (Orders)
Содержание поля
Имя поля
Тип, длина Примечания
Номер заказа
O_ID
N(6) первичный ключ
Код заказчика
O_COMPANY N(4) внешний ключ (к Customers)
Дата поступления заказа
O_DATE
D обязательное поле
Дата выполнения заказа
O_READY
D
Таблица 1.15 – Схема отношения КНИГИ–АВТОРЫ (Titles)
Содержание поля
Имя поля
Тип, длина Примечания
Код книги (№ контракта)
B_ID
N(6) внешний ключ (к Books)
Код автора
A_ID
N(4) внешний ключ (к Authors)
Номер в списке
A_NO
N(1) обязательное поле
Гонорар
A_FEE
N(3) процент от общего гонорара
Таблица 1.16 – Схема отношения СТРОКИ ЗАКАЗА (Items)
Содержание поля
Имя поля
Тип, длина Примечания
Номер заказа
O_ID
N(6) внешний ключ (к Orders)
Код книги (№ контракта)
B_ID
N(6) внешний ключ (к Books)
Количество
B_COUNT
N(4) обязательное поле

Таблица 1.17 – Схема отношения КНИГИ–РЕДАКТОРЫ (Editors)
Содержание поля
Имя поля
Тип, длина Примечания
Код книги (№ контракта)
B_ID
N(6) внешний ключ (к Books)
Код редактора
E_ID
N(4) внешний ключ (к Employees)
1.7. Пример нормализации отношение №3
1 НФ (нормальная форма)
В ходе логического моделирования на первом шаге предложено хранить данные в одном отношении, имеющем следующие атрибуты:
СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ (Н_СОТР, ФАМ, Н_ОТД, ТЕЛ, Н_ПРО,
ПРОЕКТ, Н_ЗАДАН)
Где:
Н_СОТР - табельный номер сотрудника
ФАМ - фамилия сотрудника
Н_ОТД - номер отдела, в котором числится сотрудник
ТЕЛ - телефон сотрудника
Н_ПРО - номер проекта, над которым работает сотрудник
ПРОЕКТ - наименование проекта, над которым работает сотрудник
Н_ЗАДАН - номер задания, над которым работает сотрудник
Т.к. каждый сотрудник в каждом проекте выполняет ровно одно задание, то в качестве потенциального ключа отношения необходимо взять пару атрибутов {Н_СОТР, Н_ПРО}.
В текущий момент состояние предметной области отражается следующими фактами:

Сотрудник Иванов, работающий в 1 отделе, выполняет в первом проекте "Космос" задание 1 и во втором проекте "Климат" задание 1.

Сотрудник Петров, работающий в 1 отделе, выполняет в первом проекте "Космос" задание 2.

Сотрудник Сидоров, работающий во 2 отделе, выполняет в первом проекте "Космос" задание 3 и во втором проекте "Климат" задание 2.
Это состояние отражается в таблице (курсивом выделены ключевые атрибуты):
Таблица 1.18 – Отношение СОТРУДНИКИ_ОТДЕЛЫ_ПРОЕКТЫ
Н_СОТР ФАМ
Н_ОТД ТЕЛ
Н_ПРО ПРОЕКТ Н_ЗАДАН
1
Иванов
1 11-22-33 1
Космос
1 1
Иванов
1 11-22-33 2
Климат
1 2
Петров
1 11-22-33 1
Космос
2 3
Сидоров 2 33-22-11 1
Космос
3 3
Сидоров 2 33-22-11 2
Климат
2

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

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

Таблица 1.19 – Отношение СОТРУДНИКИ_ОТДЕЛЫ
Н_СОТР ФАМ
Н_ОТД ТЕЛ
1
Иванов
1 11-22-33 2
Петров
1 11-22-33 3
Сидоров 2 33-22-11
Отношение ПРОЕКТЫ (Н_ПРО, ПРОЕКТ):
Функциональные зависимости:
Н_ПРО
ПРОЕКТ
Таблица 1.20 – Отношение ПРОЕКТЫ
Н_ПРО ПРОЕКТ
1
Космос
2
Климат
Отношение ЗАДАНИЯ (Н_СОТР, Н_ПРО, Н_ЗАДАН):
Функциональные зависимости:
{Н_СОТР, Н_ПРО}
Н_ЗАДАН
Таблица 1.21 – Отношение ЗАДАНИЯ
Н_СОТР Н_ПРО Н_ЗАДАН
1 1
1 1
2 1
2 1
2 3
1 3
3 2
2
3НФ (нормальная форма)
Отношение СОТРУДНИКИ_ОТДЕЛЫ не находится в 3НФ, т.к. имеется функциональная зависимость неключевых атрибутов (зависимость номера телефона от номера отдела):
Н_ОТД
ТЕЛ
Для того, чтобы устранить зависимость неключевых атрибутов, нужно произвести декомпозицию отношения на несколько отношений. При этом те неключевые атрибуты,
которые являются зависимыми, выносятся в отдельное отношение.
Отношение СОТРУДНИКИ_ОТДЕЛЫ декомпозируем на два отношения -
СОТРУДНИКИ, ОТДЕЛЫ.
Отношение СОТРУДНИКИ (Н_СОТР, ФАМ, Н_ОТД):
Функциональные зависимости:
Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:

Н_СОТР
ФАМ
Н_СОТР
Н_ОТД
Н_СОТР
ТЕЛ
Таблица 1.22 – Отношение СОТРУДНИКИ
Н_СОТР ФАМ
Н_ОТД
1
Иванов
1 2
Петров
1 3
Сидоров 2
Отношение ОТДЕЛЫ (Н_ОТД, ТЕЛ):
Функциональные зависимости:
Зависимость номера телефона от номера отдела:
Н_ОТД
ТЕЛ
Таблица 1.23 – Отношение ОТДЕЛЫ
Н_ОТД ТЕЛ
1 11-22-33 2
33-22-11
Обратим внимание на то, что атрибут Н_ОТД, не являвшийся ключевым в отношении
СОТРУДНИКИ_ОТДЕЛЫ, становится потенциальным ключом в отношении
ОТДЕЛЫ. Именно за счет этого устраняется избыточность, связанная с многократным хранением одних и тех же номеров телефонов.
Вывод
Реляционная модель, состоящая из четырех отношений СОТРУДНИКИ, ОТДЕЛЫ,
ПРОЕКТЫ, ЗАДАНИЯ, находящихся в третьей нормальной форме, является адекватной описанной модели предметной области, и требует наличия только тех триггеров, которые поддерживают ссылочную целостность. Такие триггеры являются стандартными и не требуют больших усилий в разработке.
Определение дополнительных ограничений целостности
Перечислим ограничения целостности, которые не указаны в таблицах 8–17.
 Значения всех числовых атрибутов – больше 0 (или null, если атрибут необязателен).
 Область значений атрибута Sex отношения EMPLOYEES – символы «м» и «ж».
 Отношение ROOMS не имеет первичного ключа, но комбинация значений (R_no,
Tel) уникальна.
 В отношении TITLES порядковые номера авторов на обложке одной книги должны идти подряд, начиная с 1.
 В отношении TITLES сумма процентов гонорара по одной книге равна 100.

Ограничения (4,5) нельзя реализовать в схеме отношения. В реальных БД подобные ограничения целостности реализуются программно (через внешнее приложение или специальную процедуру контроля данных).
2. ЗАКЛЮЧЕНИЕ
В данной лабораторной работе была дана краткая теоретическая информация проектирования баз данных. Были представлены этапы моделирования и описание реляционных отношений. В результате выполнения данной лабораторной работы студент получит практические навыки по проектированию БД и нормализации реляционных отношений.
1   2   3


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