
- •Понятие банка данных.
- •Требование к банку данных.
- •Компоненты банков данных и их краткая характеристика.
- •Информационная компонента банков данных.
- •Программные средства банков данных.
- •Языковые средства банков данных.
- •Технические средства банков данных.
- •Организационно-методические средства банков данных.
- •Администраторы банка данных.
- •Понятие базы данных.
- •Этапы проектирования баз данных.
- •Функции администратора банка данных.
- •Система управления базой данных и её основные функции.
- •Модели представления данных
- •Иерархическая модель представления данных.
- •Сетевая модель представления данных.
- •Реляционная модель данных.
- •Понятие тип данных в реляционной модели данных.
- •Понятие отношения в реляционной модели данных.
- •Понятие домена в реляционной модели данных.
- •Понятие кортежа.
- •Понятие степени отношения.
- •Понятие мощности отношения.
- •Понятие потенциального ключа.
- •Фундаментальные свойства отношений.
- •Операции над отношениями.
- •Нормализация и её цель.
- •Виды нормальных форм.
- •Первая нормальная форма.
- •Вторая нормальная форма.
- •Третья нормальная форма.
- •Нормальная форма Бойса-Кодда.
- •Четвертая нормальная форма.
- •Пятая нормальная форма.
Виды нормальных форм.
Каждая ступень процесса нормализации приводит схему отношений в последовательные нормальные формы. Для каждой ступени имеются наборы ограничений. Выделяют следующую последовательность нормальных форм:
первая нормальная форма (1НФ);
вторая нормальная форма (2НФ);
третья нормальная форма (3НФ);
усиленная 3НФ или нормальная форма Бойса-Кодда (БКНФ);
четвертая нормальная форма (4НФ);
пятая нормальная форма (5НФ).
Первая нормальная форма.
Отношение находится в первой нормальной форме (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 |
Такое решение далеко от идеального, поскольку порождает очевидную избыточность данных – для каждой комбинации сотрудник-квалификация приходится хранить все характеристики сотрудника.
Вторая нормальная форма.
Отношение находится во второй нормальной форме (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 |