Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 4 проек-ние БД.doc
Скачиваний:
2
Добавлен:
26.11.2018
Размер:
429.57 Кб
Скачать

Существует 6 нормальных форм, на практике ограничиваются 4-мя. 1,2,3 нф и форма Бойса-Кодда (нфбк).

Первая нормальная форма. Реляционная таблица приведена к первой нормальной форме тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто. Так, если из таблицы Сотрудник требуется получать сведения по имени сотрудника, то поле ФИО следует разбить на части Фамилия, Имя, Отчество.

Таблица находится в 1НФ, но присутствует дублирование данных.

Для приведения к 1НФ можно использовать следующий алгоритм:

  1. Определить поле, которое можно назначить первичным ключом. Если такого поля нет, то добавить новое уникальное ключевое поле.

  2. Определить группы повторяющихся полей.

  3. Вынести группы повторяющихся полей в отдельные таблицы, в основной таблице остается одно поле для организации связи между таблицами.

  4. Назначить первичные ключи в новых таблицах. В качестве ключевых полей можно использовать поля таблицы или добавить новое поле. Если ключевое поле имеет большой размер, предпочтительней добавлять новое поле.

  5. Определить тип отношения между таблицами.

Вторая нормальная форма. Реляционная таблица задана во второй нормальной форме, если она удовлетворяет требованиям 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом. Чтобы привести таблицу ко второй нормальной форме, необходимо определить функциональную зависимость полей. Функциональная зависимость полей — это зависимость, при которой каждый неключевой атрибут функционально полно зависит от ключа. 2НФ применяется к таблицам, которые имеют составной ключ.

Для приведения к 2НФ необходимо:

  1. Вынести все частичнозависимые поля в отдельную таблицу.

  2. Определить ключевые поля.

  3. Установить отношения между таблицами.

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

Переведем отношение во 2НФ. Отношение во 2НФ., если каждый неключевой атрибут функционально полно зависит от первичного ключа. Здесь ключ составной - ФИО Предм Группа.

1. этого строим проекцию отношения без атрибутов находящихся в частичной ФЗ от первичного ключа.

2. построим проекции на части составного первичного ключа с атрибутами зависимыми от этих частей.

R1

ФИО

Предм

Группа

ВидЗан

Иванов И.П.

СУБД

256

Практ

Иванов И.П.

VBA

123

Практ

Петров М.И.

СУБД

256

Лекция

Петров М.И.

ОС

256

Практ

Сидоров Н.Г

VBA

123

Лекция

Сидоров Н.Г

ОС

256

Лекция

Егоров В.Н..

ПЭВМ

244

Лекция

R2

ФИО

Долж

Оклад

Стаж

Д_Стаж

Каф

Иванов И.П.

препод

500

5

100

25

Иванов И.П.

препод

500

5

100

25

Петров М.И.

Ст.препод

800

7

100

25

Петров М.И.

Ст.препод

800

7

100

25

Сидоров Н.Г

препод

500

10

150

25

Сидоров Н.Г

препод

500

10

150

25

Егоров В.Н.

препод

500

5

100

24

Во 2-й таблице избавились от явного дублирования, повторение строк с ФИО, но осталось неявное дублирование остальных данных.

Третья нормальная форма. Таблица находится в 3НФ, если она удовлетворяет требованиям 2НФ, ни одно из ее неключевых полей не зависит функционально от любого другого неключевого поля. Другими словами в таблице нет полей, которые не зависят от ключа.

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

Перейдем к 3НФ. Отношение в 3НФ, если каждый неключевой атрибут нетранзитивно зависит от первичного ключа или все неключевые отношения взаимно независимы и полностью зависят от первичного ключа.

Транзитивными зависимостями являются:

ФИО à Долж à Оклад

ФИО à Оклад à Долж

ФИО à Стажà Д_Стаж

R3

ФИО

Долж

Стаж

Каф

Иванов И.П.

препод

5

25

Иванов И.П.

препод

5

25

Петров М.И.

Ст.препод

7

25

Петров М.И.

Ст.препод

7

25

Сидоров Н.Г

препод

10

25

Сидоров Н.Г

препод

10

25

Егоров В.Н.

препод

5

24

R4 R5

Долж

Оклад

препод

500

Ст.препод

800

Стаж

Д_Стаж

5

100

7

100

10

150

Здесь можно закончить нормализацию, но если этого недостаточно, то переходят к НФБК.

Нормальная форма Бойса-Кодда – усиленная 3НФ. Таблица находится в НФБК тогда и только тогда, когда любая функциональная зависимость между ее атрибутами сводится е полной функциональной зависимости от возможного первичного ключа. Т.е. единственной ФЗ в любой таблице должна быть зависимость вида АК , К- первичный ключ, а А – некий атрибут.

Итог: БД состоит из 4-х таблиц R1, R3,R4,R5.