Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы 2 / ЛекцБазы данных.doc
Скачиваний:
59
Добавлен:
26.04.2015
Размер:
1.08 Mб
Скачать

Реляционные основы концептуального проектирования

Один из эффективных методов разработки концептуальной модели предметной области - введение понятий и концепций реляционной модели данных.

4.1. Нормализация отношений

Основное понятие, заимствованное из реляционной модели данных, вве­денное при разработке концептуальной модели, это нормализация отношений. В процессе нормализации элементы данных группируются в таблицы, пред­ставляющие объекты и их взаимосвязи.

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

22

в плоский файл. Новому файлу (таблице) присваивается свое имя. Пример нормализа­ции приведен на рис. 4.1.

ЗАКАЗ_НА_ЗАКУПКУ

Номер Номер_ Дата_ Дата_ Итого

Заказа поставщика заказа поставки

№ партии Цена Количество

товара

а

Номер Номер_ Дата_ Дата_ Итого

заказа поставки заказа поставки

Заказапоставки заказа поставки

заказа

заказа

Номер_ №партии Цена Количество

Заказа товара

ЗАКАЗ_НА_ЗАКУПКУ СТАТЬЯ_ЗАКУПКИ

б

Рис.4.1. Отношение “ЗАКАЗ_НА_ЗАКУПКУ”:

а. ненормализованное отношение, б. нормализованные отношения

Новый файл должен иметь ключи, по которым однозначно определяется любой кортеж. Элемент данных “Номер_заказа” повторяется в файле “Статья_закупки” и совместно с элементом данных “Номер_партии_товара” образует однозначный идентификатор кортежа.

Каждый кортеж должен иметь ключ - идентификатор. Иногда кортеж может идентифицироваться одним атрибутом, а иногда несколькими. Ключ должен обладать двумя свойствами:

1. Кортеж должен однозначно определяться значением ключа.

2. Отсутствие избыточности: никакой атрибут нельзя удалить из ключа, не на­рушая при этом свойства однозначной идентификации.

Чтобы не чертить таблицы можно использовать и такие записи:

ЗАКАЗ_НА_ЗАКУПКУ (НОМЕР_ЗАКАЗА, НОМЕР_ПОСТАВЩИКА,

ДАТА_ЗАКАЗА, ДАТА_ПОСТАВКИ, ИТОГО)

СТАТЬЯ_ЗАКУПКИ (НОМЕР_ЗАКАЗА, НОМЕР_ПАРТИИ_ТОВАРА, ЦЕНА,

КОЛИЧЕСТВО).

В описанном процессе нормализации данные свертываются в двумерные таблицы со столбцами простейшей структуры. При этом получается так назы­ваемая первая нормальная форма.

Первая нормальная форма (1НФ).

Отношение R находится в 1НФ тогда и только тогда, когда все входящие в него домены содержат только атомарные (неповторяющиеся) значения.

23

Функциональная зависимость (ФЗ). Задавая отношения над элемента­ми данных необходимо выяснить, какие из атрибутов объекта являются зави­симыми. Термин ФЗ означает следующее: атрибут В отношения R функцио­нально зависит от атрибута А того же отношения, если в каждый момент вре­мени каждому значению атрибута А соответствует не более чем одно значение атрибута В, т.е. если в какой-то момент времени известно значение А, то можно получить и значение В.

Пример 4.1.

СЛУЖАЩИЙ (НОМЕР СЛУЖАЩЕГО. ИМЯ_СЛУЖАЩЕГО, ЗАРПЛАТА,

HOMEP_ПРОEKTA, ДАТА_ОКОНЧАНИЯ)

Атрибут НОМЕР_СЛУЖАЩЕГО не является функционально зависимым от атрибута ЗАРПЛАТА, т.к. несколько служащих могут иметь одинаковую зарплату, то же самое с атрибутами HOMEP_ПPOEKTA и ДАТА_ОКОНЧАНИЯ. На рис.4.2 приведены функциональные зависимости между атрибутами отношенияСЛУЖАЩИЙ.

Рис. 4.2. Функциональные зависимости отношения "СЛУЖАЩИЙ"

Здесь А—>В, означает, что А определяет В, если А принимает значение аi, то В принимаетзначение bj. Звездочки напротив названий атрибутов соответствуют основным атрибутам, т.е. атрибутам, которые входят хотя бы в один из возможных ключей.

Атрибут может функционально зависеть не от какого-то одного атрибута, а от целой группы атрибутов (рис.4.3).

Пример 4.2.

ДЕЯТЕЛЬНОСТЬ_ПРОГРАММИСТА (НОМЕР ПРОГРАММИСТА,

НОМЕР_ПРОГРАММЫ, ИМЯ_ПРОГРАММИСТА, ИМЯ_ПРОГРАММЫ,

КОЛИЧЕСТВО_РАБОЧИХ_ЧАСОВ)

*Номер_программиста

*Номер_программы

*Имя_программиста

*Имя_программы

Количество_рабочих_часов

Рис.4.3.Функциональные зависимости отношения

“ДЕЯТЕЛЬНОСТЬ_ПРОГРАММИСТА”

24

Полная функциональная зависимость. Атрибут (или набор атрибутов) В из отношения R называется полностью зависимым от другого набора атрибутов А отношения R, если В функциональ­но зависит от всего множества А, но не зависит ни от какого подмножества А.

Например, в отношении ДЕЯТЕЛЬНОСТЬ_ПРОГРАММИСТА атрибут КОЛИЧЕСТВО_РАБОЧИХ_ЧАСОВ является полностью зависимым от состав­ного ключа (НОМЕР_ПРОГРАММИСТА, НОМЕР_ПРОГРАММЫ).

Вторая нормальная форма (2НФ). Отношение R задано во 2 НФ, если оно является отношением в 1 НФ, и каждый атрибут, не являющийся основным атрибутом в этом отношении, полностью зависим от любого возможного ключа этого отношения R. Отношение на фис7 4.3 задано во 2НФ, потому что атрибут КОЛИЧЕСТВО_РАБОЧИХ_ЧАСОВ -единственный атрибут, не являющийся основным, полностью зависит от каж­дого возможного ключа.

Следующее отношение (рис.4.4) не является отношением во 2НФ:

ИСТОЧНИК_СНАБЖЕНИЯ (НОМЕР_ПОСТАВЩИКА, НОМЕР_ПАРТИИ ТОВАРА,

ИМЯ_ПОСТАВЩИКА, СВЕДЕНИЯ_О_ПОСТАВЩИКЕ, ЦЕНА)

Рис. 4.4. Отношение "ИСТОЧНИК_СНАБЖЕНИЯ "

У этого отношения только один возможный ключ. ИМЯ_ПОСТАВЩИКА не входит в ключ, т.к. одной и той же форме в разных районах могут быть присвоены различные номера поставщика.

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

* Номер_поставщика * Номер_поставщика

Имя_поставщика * №партии_товара

Сведения_о_поставщике Цена

25

В общем случае каждый атрибут должен полностью зависеть от всего ключа; в противном случае его следует выделить в отдельное отношение.

Третья нормальная форма (3 НФ).На последнем шаге ликвидируется так называемая транзитивная зависимость. Пусть А, В и С - три атрибута. Если С зависит от В, а В - от А, то С зависит от А. Если при этом обратное соответствие неоднозначно, т.е. А не зависит от В или В не зависит от С, то говорят, что С транзитивно зависит от А.

Например, на рис.4.1 атрибут ДАТА_ОКОНЧАНИЯ зависит от атрибута НОМЕР_ПРОЕКТА, который, в свою очередь, зависит от атрибута НОМЕР_СЛУКЖАЩЕГО. Таким образом ДАТА_ОКОНЧАНИЯ транзитивно зависит от атрибута НОМЕР_СЛУЖАЩЕГО. Это отношение можно привести к ЗНФ (рис.4.5).

Рис.4.5. Отношения, представленные в ЗНФ

На рис.4.6 приведен пример ненормализованного отношения "Успеваемость студентов", включающего целую группу атрибутов, а на рис.4.7 - отношения после нормализации

*Код_группы

Число_студентов

*ФИО_студента

Год_рождения

Адрес

*Код_предмета

Наименование

Дата_сдачи

Оценка

Рис.4.6. Ненормализованное отношение “Успеваемость студентов”

26

26

Код_группы ФИО_студентов

Количествоо_студентов Год_рождения

Адрес

Группа

Код_предмета ФИО_студента

Наименование Код_предмета

Дата_сдачи

Оценка

Рис.4.7. Нормализация отношения “Успеваемость студентов”

Кроме приведенных трех нормальных форм существуют еще 4 и 5 - е нормаль­ные формы, но на практике они встречаются довольно редко и поэтому при разработке концептуальной модели процесс нормализации можно завершить получением ЗНФ (рис.4.8).

Все отношения (нормализованные и ненормализованные)

Рис.4.8. Уровни нормализации

При этом, если отношение находится в ЗНФ, то оно соответственно находится и во 2НФ и в 1НФ, если отношение находится во 2НФ, то оно находится и в 1НФ.

Процедура нормализации - обратима, т.е. всегда можно использовать ее результат для обратного преобразования, т.к. в процессе нормализации информация не утрачивается. 27

Соседние файлы в папке лабы 2