Управление данными / Исходная ненормализованная таблица
.docx
Исходная ненормализованная таблица (нарушение условия атомарности)
|
Личный № сотрудника |
Фамилия |
Звание |
Мероприятия, в которых участвовал сотрудник |
Кабинет |
Сл. тел. |
|||
|
Условное название |
Награда |
|
|
|||||
|
001 |
Пронин |
Майор |
Операция «Ы» |
Оклад |
110 |
11 22 33 |
||
|
Операция «Бриллинантовая рука» |
Отпуск |
|||||||
|
002 |
Исаев |
Полковник |
Операция «Берн» |
- |
110 |
11 22 33 |
||
|
007 |
Бонд |
Капитан |
Операция «Золотой глаз» |
Ягуар |
С-110 |
33 22 11 |
||
|
Операция «Багамы» |
Феррари |
|||||||
Таблица в первой нормальной форме
|
Личный № сотрудника |
Условное наименование мероприятий, в которых участвовал сотрудник |
Награда |
Фамилия |
Звание |
Кабинет |
Сл. тел. |
|
001 |
Операция «Ы» |
Оклад |
Пронин |
Майор |
110 |
11 22 33 |
|
001 |
Операция «Бриллинантовая рука» |
Отпуск |
Пронин |
Майор |
110 |
11 22 33 |
|
002 |
Операция «Берн» |
- |
Исаев |
Полковник |
110 |
11 22 33 |
|
007 |
Операция «Золотой глаз» |
Ягуар |
Бонд |
Капитан |
С-110 |
33 22 11 |
|
007 |
Операция «Багамы» |
Феррари |
Бонд |
Капитан |
С-110 |
33 22 11 |
Что выбрать в качестве первичного ключа (PK)?
Из приведенного примера видно, что таблицы в первой нормальной форме могут содержать многочисленные ситуации дублирования данных (в приведенном примере по полям «Фамилия», «Звание», «Кабинет», «Сл. Тел.»). Кроме того, в таблице, находящейся в первой нормальной форме, могут встречаться и другие аномалии схемы таблиц-отношений. В частности, в приведенном примере нельзя образовать запись для сотрудника, не участвовавшего ни в одной операции. Удаляя запись об участии определенного сотрудника в определенной операции, можно удалить информацию о том, что он вообще работает в определенном подразделении. При переводе сотрудника в другое подразделение или при его перемещении в другой кабинет приходится изменять все записи-кортежи с данным сотрудником по различным операциям.
Приведение таких таблиц к первой нормальной форме осуществляется путем образования составных ключей, при которых устраняются ситуации с множественными значениями полей.
Таблица-отношение находится во второй нормальной форме, если она находится в первой нормальной форме и все ее неключевые атрибуты функционально полно зависят от составного ключа. Для перевода таблицы из первой нормальной формы во вторую необходимо:
• образовать проекцию (вертикальное подмножество) исходной таблицы на составной ключ и на поля, находящиеся в полной функциональной зависимости от составного ключа;
• построить еще одну или несколько проекций на часть составного ключа с полями, функционально зависящими от этой части ключа.
Проекция на составной ключ с полями, находящимися в полной функциональной зависимости от него
|
Личный № сотрудника |
Условное наименование мероприятий, в которых участвовал сотрудник |
Награда |
|
001 |
Операция «Ы» |
Оклад |
|
001 |
Операция «Бриллинантовая рука» |
Отпуск |
|
002 |
Операция «Берн» |
- |
|
007 |
Операция «Золотой глаз» |
Ягуар |
|
007 |
Операция «Багамы» |
Феррари |
Проекция на поле ключа с полями, находящимися с данным полем в функциональной зависимости
|
Личный № сотрудника |
Фамилия |
Звание |
Кабинет |
Сл. тел. |
|
001 |
Пронин |
Майор |
110 |
11 22 33 |
|
002 |
Исаев |
Полковник |
110 |
11 22 33 |
|
007 |
Бонд |
Капитан |
С-110 |
33 22 11 |
В таблицах, находящихся во второй нормальной форме, большинство аномалий, присущих первой скорме, устранено. Вместе с тем по определенным атрибутам также могут сохраняться многочисленные ситуации дублирования данных. Так, например, в приведенном на рис. 3.5 примере происходит неоправданное дублирование информации о служебном телефоне «11 22 33», так как атрибут «Сл. тел.» фактически зависит не от атрибута «Лич.№ сотр.»», а от атрибута «Кабинет».
* Иначе говоря, наблюдается цепочка функциональной зависимости атрибутов «Лич. № сотр.» — «Кабинет» — «Сл. тел.», а функциональная зависимость атрибута «Сл.тел.» от атрибута «Лич. № сотр.» является лишь логическим следствием такой цепочки зависимостей. В таких ситуациях говорят о транзитивной зависимости атрибута «Сл. тел.» от атрибута «Лич. № сотр.».
* В большинстве жизненных ситуаций в одной комнате для сотрудников установлен один общий телефон.
По определению таблица-отношение находится в третьей нормальной форме, если она находится во второй нормальной скорме и каждое ее не ключевое поле-атрибут нетранзитивно зависит от первичного ключа. Легко увидеть, что альтернативным определением третьей нормальной формы является взаимная независимость неключевых атрибутов и их полная функциональная зависимость от первичного ключа.
Для преобразования из второй в третью нормальную форму таблицу-отношение разделяют на две или более проекции так, чтобы конечные поля-атрибуты в цепочках транзитивной зависимости вынести в отдельные таблицы, связав разделившиеся части таблицы внешними ключами по полям-атрибутам, находящимся внутри цепочек транзитивной зависимости. На рис. 3.6 проиллюстрирован процесс приведения таблицы из второй в третью нормальную форму путем разделения цепочки транзитивной зависимости «Лич.№ сотр.» — «Кабинет» — «Сл. тел.». Внутреннее в этой цепочке поле-атрибут «Кабинет» стало соответственно внешним ключом в первой таблице и первичным ключом во второй таблице.
Декомпозированная таблица в третью нормальную форму
|
Личный № сотрудника |
Фамилия |
Звание |
Кабинет |
|
001 |
Пронин |
Майор |
110 |
|
002 |
Исаев |
Полковник |
110 |
|
007 |
Бонд |
Капитан |
С-110 |
|
Кабинет |
Сл. тел. |
|
110 |
11 22 33 |
|
С-110 |
33 22 11 |
На практике третья нормальная форма устраняет большинство аномалий схем таблиц-отношений, а также ситуации дублирования данных, и после декомпозиции исходных таблиц-отношений до третьей нормальной формы процесс нормализации заканчивается.
