
152
2. Таблица имеет первичный (возможный) ключ К, атрибут А1, ко-
торый не является возможным ключом, но функционально зависит от К,
и другой не ключевой атрибут А2, который функционально зависит от
А1. Решение здесь, по существу, то же самое, что и прежде - формирует-
ся другая таблица, содержащая атрибуты А1 и А2, с первичным ключом
А1, а атрибут А2 удаляется из первоначальной таблицы.
Таким образом, повторяя применение двух рассмотренных правил,
для любой заданной таблицы почти во всех реальных практических си-
туациях можно получить в конечном счете множество таблиц, которые
находятся в НФБК и не содержат каких-либо функциональных зависи-
мостей вида, отличного от А→К.
Применим приведенные правила для полной нормализации уни-
версального отношения «Сессия» (рис. 6.2).
1. Определение первичного ключа таблицы.
Предположим, что каждый студент сдает один раз экзамен (зачет)
по дисциплине учебного плана и получает оценку. Дисциплина учебного
плана однозначно характеризуется наименованием, номером семестра,
за который отчитывается студент, и формой отчетности (т.к. учебный
план предусматривает сдачу и экзамена, и зачета по одной и той же дис-
циплине в рамках одного семестра). Тогда в качестве первичного ключа
отношения «Сессия» можно использовать следующий набор атрибутов:
ФИО студента, Дисциплина, Семестр, Форма отчетности.
2. Выявление атрибутов, функционально зависящих от части со-
ставного ключа.
Каждый из атрибутов - ФИО преподавателя и Количество часов -
функционально зависит только от атрибутов Дисциплина, Семестр и
Форма отчетности, т.е. этот атрибут вместе с совокупностью атрибутов
первичного ключа составит вторую таблицу:
Учебный план (Дисциплина, Семестр, Форма отчетности
, Количе-
ство часов, ФИО преподавателя).
Из исходной таблицы при этом удаляются атрибуты Количество
часов и ФИО преподавателя:
Результаты сессии (ФИО студента, Дисциплина, Семестр, Форма
отчетности, Оценка).
Составной первичный ключ, повторяющийся в обеих таблицах,
приводит к избыточности при дублировании информации сразу трех
столбцов, поэтому кажется целесообразным ввести дополнительный ат-
рибут - № (порядковый номер) – в таблицу «Учебный план» и использо-
вать именно его в качестве первичного ключа. Тогда таблицы примут
следующий вид:
Учебный план (№ Уч. план
, Дисциплина, Семестр, Форма отчет-
ности, Кол-во часов, ФИО преподавателя).
Результаты сессии (ФИО студента, № Уч. план
, Оценка).