
- •Введение
- •Моделирование данных
- •Модели концептуальной схемы
- •Основные понятия
- •Структура данных
- •Этапы концептуального моделирования
- •Диаграмма сущность-связь
- •IDEF
- •IDEF1 и IDEF1X
- •Диаграммы классов языка UML
- •Классы, атрибуты, операции
- •Категории связей
- •Связь-зависимость
- •Связи-обобщения и механизм наследования классов в UML
- •Связи-ассоциации: роли, кратность, агрегация
- •Лабораторная работа №1
- •Модели логической схемы
- •Основные понятия
- •Этапы логического моделирования
- •Реляционная модель
- •Реляционные языки
- •Реляционная алгебра
- •Выборка (или ограничение) Qпредикат(R)
- •Проекция Патр.1,...,атр.n(R)
- •Декартово произведение RxS
- •Объединение R U S
- •Разность R-S
- •Деление
- •Операции соединения
- •Teтa-соединение (Θ-join)
- •Естественное соединение
- •Внешнее соединение
- •Полусоединение
- •Лабораторная работа №2
- •Реляционные ключи
- •Реляционная целостность
- •Нормализация, функциональные и многозначные зависимости
- •Лабораторная работа №3
- •Литература
Реляционная целостность
Реляционная целостность состоит из двух аспектов:
1)Целостность сущностей, заключается в том, что в базовом отношении ни один атрибут первичного ключа не может содержать отсутствующих значений, обозначаемых определителем NULL.
2)Ссылочная целостность, заключается в том, что если в отношении существует внешний ключ, то значение внешнего ключа должно либо соответствовать значению потенциального ключа некоторого кортежа в его базовом отношении, либо задаваться определителем NULL.
Нормализация, функциональные и многозначные зависимости
Нормальная форма — требование, предъявляемое к структуре таблиц в теории реляционных баз данных для устранения из базы избыточных функциональных зависимостей между атрибутами (полями таблиц). Процесс преобразования базы данных к виду, отвечающему нормальным формам, называется нормализацией.
Нормализация — это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
Денормализация (denormalization) — намеренное приведение структуры базы данных в состояние, не соответствующее критериям нормализации, обычно проводимое с целью ускорения операций чтения из базы за счет добавления избыточных данных.
Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.
Функциональная зависимость. Поле В таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В. Отметим, что здесь допускается, что поля А и В могут быть составными.
В паре атрибутов одного отношения, X и Y, атрибут Y функционально зависит от атрибута X, если в данном отношении одному значению X соответствует в точности одно значение Y.
Полная функциональная зависимость. Поле В находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.
- 28 -
Многозначная зависимость. Поле А многозначно определяет поле В той же таблицы, если для каждого значения поля А существует хорошо определенное множество соответствующих значений В.
Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто. Другими словами каждый её атрибут атомарен и все строки различны.
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного ключа, но при этом не находится в функциональной зависимости от какой-либо его части.
Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и не одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.
Таблица находится в нормальной форме Бойса-Кодда (НФБК), если она находится в третьей нормальной форме, и при этом отсутствуют функциональные зависимости атрибутов первичного ключа от не-ключевых атрибутов.
Данная нормальная форма — это модификация третьей нормальной формы. Таблица может находиться в 3НФ, но не в НФБК, только в одном случае: если она имеет, помимо первичного ключа, ещё по крайней мере один составной возможный ключ, и по крайней мере один из атрибутов таблицы входит и в первичный, и в возможный ключи. Такое бывает достаточно редко, в остальном 3НФ и НФБК эквивалентны.
Таблица находится в четвертой нормальной форме (4НФ), если она находится в НФБК и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y.
Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.
Процесс нормализации — это процесс последовательной замены таблицы ее полными декомпозициями до тех пор, пока все они не будут находиться в 5НФ. На практике же достаточно привести таблицы к НФБК и с большой гарантией считать, что они находятся в 5НФ. Разумеется, этот факт нуждается в проверке, однако пока не существует эффективного алгоритма
- 29 -
такой проверки. Поэтому остановимся лишь на процедуре приведения таблиц к НФБК.
Эта процедура основывается на том, что единственными функциональными зависимостями в любой таблице должны быть зависимости вида K->F, где K — первичный ключ, а F — некоторое другое поле. Заметим, что это следует из определения первичного ключа таблицы, в соответствии с которым K->F всегда имеет место для всех полей данной таблицы. "Один факт в одном месте" говорит о том, что не имеют силы никакие другие функциональные зависимости. Цель нормализации состоит именно в том, чтобы избавиться от всех этих "других" функциональных зависимостей, т.е. таких, которые имеют иной вид, чем K->F.
Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы.
Следует рассмотреть два случая:
1) Таблица имеет составной первичный ключ вида, скажем, (К1,К2), и включает также поле F, которое функционально зависит от части этого ключа, например, от К2, но не от полного ключа. В этом случае рекомендуется сформировать другую таблицу, содержащую К2 и F (первичный ключ — К2), и удалить F из первоначальной таблицы:
Заменить |
T(K1,K2,F), |
первичный ключ (К1,К2), ФЗ К2->F |
на |
T1(K1,K2), |
первичный ключ (К1,К2), |
и |
T2(K2,F), |
первичный ключ К2. |
2) Таблица имеет первичный (возможный) ключ К, не являющееся возможным ключом поле F1, которое, конечно, функционально зависит от К, и другое неключевое поле F2, которое функционально зависит от F1. Решение здесь, по существу, то же самое, что и прежде — формируется другая таблица, содержащая F1 и F2, с первичным ключом F1, и F2 удаляется из первоначальной таблицы:
Заменить |
T(K,F1,F2), |
первичный ключ К, ФЗ F1->F2 |
на |
T1(K,F1), |
первичный ключ К, |
иT2(F1,F2), первичный ключ F1.
Для любой заданной таблицы, повторяя применение двух рассмотренных правил, почти во всех практических ситуациях можно получить в конечном счете множество таблиц, которые находятся в "окончательной" нормальной форме и, таким образом, не содержат каких-либо функциональных зависимостей вида, отличного от K->F.
- 30 -
Лабораторная работа №3
Задание для лабораторной работы №3. Цели работы:
●Нормализовать таблицы.
●Выделить все ключевые поля (суперключи, потенциальные ключи, первичные ключи и внешние ключи).
●Составить ER (IDEF, UML по вариантам) диаграммы.
●Записать формулы реляционной алгебры, выводящие на основе нормализованных таблиц исходные таблицы.
Таблица 1
ФИО |
|
Должность |
форма |
тел |
|||
|
|
|
|
|
|
||
Иванов |
Техник |
Зелёная форма |
12-51 |
||||
|
|
|
|
|
|
||
Сидоров |
Кузовщик |
Синяя форма |
14-52, 16-82 |
||||
|
|
|
|
|
|
||
Петров |
тех контроль |
Жёлтая форма |
13-12, 14-23, 12- |
||||
|
|
|
|
|
|
|
52 |
|
|
|
|
|
|
||
Шапкин |
Кузовщик |
Синяя форма |
14-52, 16-12 |
||||
|
|
|
|
|
|
||
Кулаков |
тех контроль |
Жёлтая форма |
16-25, 12-54, 13- |
||||
|
|
|
|
|
|
|
34 |
|
|
|
|
|
|
||
Зеленков |
Кузовщик |
Синяя форма |
14-23, 16-28 |
||||
|
|
|
|
|
|
||
Халтурин |
Техник |
Зелёная форма |
12-53 |
||||
|
|
|
|
|
|
|
|
Таблица 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Продукция |
|
|
Упаковка |
|
|
Цех |
|
|
|
|
|
|
|
|
|
Краска ТУ 124-89 |
|
|
Банка 3 кг, |
Банка 5 |
кг, |
Цех 1 |
|
|
|
|
Балончик 100 гр, Балон- |
|
|
||
|
|
|
чик 250 гр. |
|
|
|
|
|
|
|
|
|
|
|
|
Краска ТУ 512-2005 |
|
Банка 1 кг, |
Банка 5 |
кг, |
Цех 2 |
|
|
|
|
|
Балончик 100 гр |
|
|
|
|
|
|
|
|
|
|||
Растворитель |
|
|
Пэт 100 гр, Пэт 500 гр, |
Цех 1, Цех 3 |
|||
ТУ 1245-98 |
|
|
Банка 1 кг |
|
|
|
|
|
|
|
|
|
|||
Растворитель |
|
|
Пэт 250 гр, Пэт 500 гр. |
Цех 2, Цех 3 |
|||
ТУ 5125-2006 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Растворитель |
|
|
Пэт 250 гр, Банка 3 кг |
|
Цех 3 |
|
|
ТУ 1245-98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 31 -
Таблица 3
Должность |
ФИО |
|
Новость |
|
|
|
|
|
|
||
Журналист |
Петров |
Финансы: Индекс цен в Казани |
|
||
|
|
Хроника: Происшествие на Булаке |
|
||
Пресс-секретарь |
Сидорова |
Политика: Повестка дня на заседании гос. |
|||
|
|
Совета |
|
|
|
|
|
Юриспруденция: |
Обзор |
изменений |
в |
|
|
законодательство за последние полгода |
|
||
Журналист |
Иванов |
Финансы: краткосрочный прогноз |
|
||
|
|
Хай-тек: Обзор новинок на выставке ИТ |
|
Таблица 4
Марка |
Номер |
Маршрут |
Водители |
|
автомобиля |
Рейса |
|
|
|
|
|
|
|
|
Камаз |
231 |
Москва, Нижний |
Новгород, |
Иванов, Петров |
|
|
Казань |
|
|
Ман |
123 |
Владимир, Казань, Уфа |
Петров, Сидоров |
|
|
|
|
|
|
Мерседес |
135 |
Чистополь, |
Челны, |
Сидоров, Иванов |
|
|
Альметьевск |
|
|
Камаз |
135 |
Чистополь, |
Челны, |
Иванов, Сидоров |
|
|
Альметьевск |
|
|
Ман |
231 |
Москва, Нижний |
Новгород, |
Петров, Сидоров |
|
|
Казань |
|
|
Мерседес |
123 |
Владимир, Казань, Уфа |
Иванов, Петров |
|
|
|
|
|
|
- 32 -