
- •Новосибирская государственная академия экономики и управления
- •«Базы данных»
- •Введение
- •Основные понятия реляционной модели данных Реляционные таблицы
- •Пустые значения
- •Внешние ключи
- •Категорная целостность
- •Целостность на уровне ссылок
- •Функциональные зависимости.
- •Нормализации отношений
- •Первая нормальная форма
- •Функциональные зависимости
- •Вторая нормальная форма
- •Третья нормальная форма
- •Знф влечет 2нф влечет 1нф.
- •Четвертая нормальная форма
- •Другие нормальные формы
- •3. Методика проектирования реляцтонной бд на основе декомпазиционного алгоритма
Знф влечет 2нф влечет 1нф.
По этой причине, для того чтобы привести таблицы ко второй и третьей нормальным формам, достаточно пользоваться критерием третьей нормальной формы. Если мы проверим, что каждый детерминант в таблице является ключом этой таблицы - критерий третьей нормальной формы - то все таблицы будут удовлетворять первой, второй и третьей нормальным формам. Это значительно упрощает процесс нормализации, поскольку нам нужно проверять только один критерий.
Наша версия третьей нормальной формы часто называется нормальной формой Бойса-Кодда (НФБК). Критерий третьей нормальной формы, используемый многими авторами, логически несколько слабее критерия НФБК, которым мы пользуемся. Этот критерий утверждает, что таблица удовлетворяет ЗНФ, если в ней нет транзитивных зависимостей.
Транзитивная зависимость возникает, если неключевой атрибут функционально зависит от одного или более неключевых атрибутов.
Этот критерий не учитывает следующие два случая:
1. Неключевой атрибут зависит от ключевого атрибута, входящего в составной ключ (критерий нарушения 2НФ).
2. Ключевой атрибут, входящий в составной ключ, зависит от неключевого атрибута.
Нормальная форма Бойса-Кодда (НФБК). Любой детерминант, является ключом.
Транзитивная зависимость. Возникает, когда неключевой атрибут функционально зависит от одного или более неключевых атрибутов.
НФБК учитывает оба эти случая. Таким образом, если таблица удовлетворяет НФБК, то она также удовлетворяет ЗНФ в смысле транзитивных зависимостей и 2НФ. Мы увидим, что наше определение ЗНФ упрощает процесс нормализации.
Задание 2.
Привести к 3НФ
A. EMPLOYEE (SS#, NAME, ADDRESS, PHONE, FATHER, SKILL)
ФЗ: ADDRESS -> PHONE
B. WORKER (W-ID, W-NAME, SPOUSE-SS#, SPOUSE-NAME)
ФЗ: SPOUSE-SS# -> SPOUSE-NAME
C. SALE (DATE, CUSTOMER, PRODUCT, VENDOR, VENDOR-CITY, SALESREP)
ФЗ: CUSTOMER -> SALESREP
D. EMPLOYEE (SS#, NAME, ADDRESS, PHONE, FATHER, FATHER-ADDRESS) ФЗ: FATHER -> FATHER-ADDRESS
E. WORKER (W-ID, W-NAME, SPOUSE-NAME, CHILDREN)
F. SALE (DATE, CUSTOMER, PRODUCT, VENDOR, VENDOR-CITY, SALESREP
ФЗ: VENDOR -> VENDOR-CITY, ФЗ: PRODUCT -> VENDOR
G. STUDENT (STUDENT-#, NAME, BLDG, FLOOR,-SENIOR-RESIDENT)
ФЗ: BLDG, FLOOR -> SENIOR-RESIDENT
Четвертая нормальная форма
Первая нормальная форма запрещает таблицам иметь неатомарные, или многозначные, атрибуты. Однако существует множество ситуаций моделирования, требующих многозначных атрибутов. Например, в групповой системе медицинского страхования необходимо отслеживать нескольких людей, находящихся на иждивении каждого работника. В колледже преподаватель факультета занят в нескольких комиссиях и отвечает за преподавание нескольких предметов. Подобные примеры можно приводить довольно долго.
Как можно их смоделировать в реляционной базе данных, запрещающей многозначные атрибуты?
Рис. 9. Представление многозначных атрибутов в одной таблице
На рис. 9 представлены четыре возможных подхода к решению проблемы участия преподавателей факультета в комиссиях и ведении предметов. Каждое решение имеет определенные недостатки. Все они требуют лишнего места либо из-за наличия пустых значений, либо из-за необходимости вводить избыточные данные. Те из них, в которых есть пустые значения, нарушают категорную целостность, поскольку все атрибуты вместе составляют ключ таблицы. Кроме того, предположим, что Джоунс назначен в аттестационную комиссию, и в базу данных требуется внести изменение. Нужно ли добавлять новую строку или исправлять старые данные? Наконец, не очевидно, что атрибуты COMMITTEE (КОМИССИЯ) и COURSE (ПРЕДМЕТ) не зависят друг от друга. Например, нельзя ли из рис. 9а сделать вывод, что зачетная комиссия каким-то образом зависит от предмета ИМ101?
Эти кажущиеся связи между независимыми атрибутами можно исключить, потребовав, чтобы каждое значение атрибута сочеталось с каждым значением другого атрибута как минимум в одной строке. Это проиллюстрировано рис. 10, где и зачетная комиссия, и стипендиальная встречаются в строках с ИМ101, ИМ102 и ИМ103.
Рис. 10. Таблица FACULTY с многозначной зависимостью
Условие, обеспечивающее независимость атрибутов путем обязательного повторения значений, называется многозначной зависимостью (МЗЗ). МЗЗ является таким же ограничительным условием, как и ФЗ. Очевидно, что поскольку они требуют огромного числа повторений значений данных, важный этап процесса нормализации состоит в избавлении от многозначных зависимостей.
Многозначная зависимость (МЗЗ). Условие, обеспечивающее взаимную независимость многозначных атрибутов.
Таблица имеет четвертую нормальную форму (4НФ), если она имеет ЗНФ и не содержит многозначных зависимостей. Поскольку проблема многозначных зависимостей возникает в связи с многозначными атрибутами, то мы можем решить проблему, поместив каждый многозначный атрибут в свою собственную таблицу вместе с ключом, от которого атрибут зависит.
Рис. 11 иллюстрирует этот принцип. FNAME (ИМЯ-ПРЕПОДАВАТЕЛЯ) — ключ в некоторой другой таблице, идентифицирующей преподавателя, к которому относится информация. Мы перечисляем комиссии, в которых участвует Джоунс, включив в таблицу по одной строке для каждой комиссии. Имя Джоунс повторяется в каждой строке. То же самое и для предметов, которые ведет Джоунс. Обе таблицы рис. 11 имеют четвертую нормальную форму (4НФ), так как все многозначные атрибуты (в нашем случае COMMITTEE и COURSE) были помещены в отдельные таблицы. Более того, такой подход преодолевает недостатки разных решений, представленных на рис. 9. Наконец, заметим, что ключом каждой нашей 4НФ-таблицы являются оба атрибута таблицы. Таким образом, ключ таблицы FAC-COMM — (FNAME, COMMITTEE), а ключ таблицы FAG-COURSE — (FNAME, COURSE).
Четвертая нормальная форма (4НФ). Таблица, находящаяся в третьей нормальной форме и не содержащая многозначных зависимостей.
Рис. 11. Таблицы FAC-COMM и FAG-COURSE, обе в 4НФ