Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы БД 1-34.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
668.16 Кб
Скачать
  1. Виды нормальных форм.

Каждая ступень процесса нормализации приводит схему отношений в последовательные нормальные формы. Для каждой ступени имеются наборы ограничений. Выделяют следующую последовательность нормальных форм:

  • первая нормальная форма (1НФ);

  • вторая нормальная форма (2НФ);

  • третья нормальная форма (3НФ);

  • усиленная 3НФ или нормальная форма Бойса-Кодда (БКНФ);

  • четвертая нормальная форма (4НФ);

  • пятая нормальная форма (5НФ).

  1. Первая нормальная форма.

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

В столбце Квалификация ненормализованной табл. 13 содержатся списки значений (С, Java и т. д.). Чтобы привести схему к 1НФ, необходимо разместить в этом столбце атомарные значения. Самый простой способ заключается в выделении по одной строке на каждый элемент квалификации (табл. 14).

Таблица 14

Код сотрудника

ФИО

Должность

Номер

отдела

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

отдела

Квалификация

7513

Иванов И.И.

Программист

128

Отдел проектирования

C

7513

Иванов И.И.

Программист

128

Отдел проектирования

Java

9842

Сергеева С.С.

Администратор БД

42

Финансовый отдел

DB2

6651

Петров П.П.

Программист

128

Отдел проектирования

VB

6651

Петров П.П.

Программист

128

Отдел проектирования

Java

9006

Николаев Н.Н.

Системный администратор

128

Отдел проектирования

Windows

9006

Николаев Н.Н.

Системный администратор

128

Отдел проектирования

Linux

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

  1. Вторая нормальная форма.

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

Таблица Квалификации_сотрудников (табл. 14) находится в 1НФ, но не удовлетворяет 2НФ. Первичный ключ должен уникальным образом идентифицировать каждую строку. Единственным вариантом является использование в качестве первичного ключа комбинации Код сотрудника и Квалификация. Это порождает схему: Квалификации_сотрудников (Код сотрудника, ФИО, Должность, Номер отдела, Наименование отдела, Квалификация).

Одной из имеющихся здесь функциональных зависимостей будет: Код сотрудника, Квалификация ’ ФИО, Должность, Номер отдела, Наименование отдела. Но, кроме того, мы также имеем: Код сотрудникаФИО, Должность, Номер отдела, Наименование отдела. Другими словами, можно определить имя, должность и отдел, используя только код сотрудника. Это значит, что указанные атрибуты функционально зависимы только от части первичного ключа, а не от всего первичного ключа. Следовательно, указанная схема не находится в 2НФ.

Для приведения этой схемы в 2НФ необходимо декомпозировать исходное отношение на два, в которых все неключевые атрибуты будут полностью функционально зависеть от ключа: сотрудники (Код сотрудника, ФИО, Должность, Номер отдела, Наименование отдела) и Квалификации_сотрудников (Код сотрудника, Квалификация) (табл. 15–16).

Таблица 15

Код сотрудника

ФИО

Должность

Номер

отдела

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

отдела

7513

Иванов И.И.

Программист

128

Отдел проектирования

9842

Сергеева С.С.

Администратор БД

42

Финансовый отдел

6651

Петров П.П.

Программист

128

Отдел проектирования

9006

Николаев Н.Н.

Системный администратор

128

Отдел проектирования

Таблица 16

Код сотрудника

Квалификация

7513

C

7513

Java

9842

DB2

6651

VB

6651

Java

9006

Windows

9006

Linux

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]