суббота, 15 августа 2009 г.

ервая, вторая и третья нормальные формы

3.3.4. П
Отношение находится в 1 НФ тогда и только тогда, когда все используемые в нем домены содержат только скалярные значения.
Иными словами:
Украинские новости науки, статьи и публикации.
Отношение находится в 1 НФ тогда и только тогда, когда значения всех полей неделимы.
НАПРИМЕР, если в отношении есть поле ФИО, отношение не находится в 1 НФ.
Отношение находится во 2 НФ тогда и только тогда, когда оно находится в 1 НФ и каждый неключевой атрибут неприводимо зависит от первичного ключа.
НАПРИМЕР, рассмотрим отношение Успеваемость (№зачетки, Фамилия, Имя, Отчество, Дисциплина, Оценка).
Если первичным ключом здесь назначить №зачетки, то от этого ключа не будет зависеть атрибут Дисциплина. Т.е. отношение не находится во 2 НФ.
Можно тогда в качестве первичного ключа взять множество атрибутов {№зачетки, Дисциплина}. В этом случае от такого ключа зависят все атрибуты, НО атрибуты Фамилия, Имя, Отчество зависят приводимо, т.к. из детерминанта следующей ФЗ можно убрать атрибут Дисциплина:
{№зачетки, Дисциплина} → {Фамилия, Имя, Отчество}
То есть это отношение не находится во 2 НФ.
Отношение находится в 3 НФ тогда и только тогда, когда оно находится во 2 НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Иными словами:
Отношение находится в 3 НФ тогда и только тогда, когда каждый кортеж отношения состоит из значения первичного ключа, которое идентифицирует некоторый объект, и набора взаимно независимых (или пустых) значений атрибутов, описывающих этот объект.
НАПРИМЕР, добавим в отношение Студенты атрибут СтаростаГруппы. Тогда в отношении будут следующие ФЗ:
{№зачетки} → {Группа}, {Группа} → {СтаростаГруппы}
То есть атрибут СтаростаГруппы зависит от первичного ключа (№зачетки) транзитивно через атрибут Группа, а не напрямую.
Значит, это отношение не находится в 3 НФ.
Таким образом, если отношение находится только в 1 НФ, но не находится ни во 2 НФ, ни в 3 НФ, существует избыточность, которая приводит к так называемым аномалиям обновления, т.е. нарушении целостности при вставке, удалении или изменении данных.
ПРИМЕР: рассмотрим отношение, которое не находится ни во 2 НФ, ни в 3 НФ.
Успеваемость (№зачетки, Фамилия, Имя, Отчество, Группа, СтаростаГруппы, Дисциплина, Оценка).
Изобразим диаграмму ФЗ этого отношения:











Какие могут произойти аномалии при обновлении?
Например, такие:
• При добавлении нового студента при правильном указании группы, в которой он учится, может быть ошибочно указан староста группы.
• При удалении одной из записей будет удалена не только информация об оценке соответствующего студента, но и информация о том, в какой группе он учится.
• При изменении старосты группы необходимо вручную изменить его для всех записей студентов этой группы – при этом можно ошибиться.
Для этого отношения можно произвести декомпозицию. Это удобно сделать, руководствуясь схемой. Например, на три следующие проекции:










Полученные отношения все находятся во2 НФ и в 3 НФ.
Но без потерь ли произведена эта декомпозиция? Да, т.к. после соединения этих трех отношений получим первоначальное.
Полученные отношения являются независимыми проекциями.
Проекции R1 и R2 отношения R независимы тогда и только тогда, когда выполняются два условия:
1) каждая ФЗ в отношении R является логическим следствием ФЗ в проекциях R1 и R2;
2) общие атрибуты проекций R1 и R2 образуют потенциальный ключ хотя бы для одной из них.
Для наших трех проекций первое условие выполняется, т.к. все их ФЗ (обозначенные стрелками) обеспечивают ФЗ первоначального отношения (сравнить стрелки).
Выполняется и второе условие: для проекций (1) и (2) общий атрибут – Группа, он первичный ключ для (2); для (1) и (3) общий атрибут - №зачетки, он первичный ключ для (1).
А вот если разбить отношение Успеваемость на следующие проекции:










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

3.3.5. Общие цели нормализации отношений
В общем случае можно выделить следующие четыре цели процедуры нормализации:
1. Исключение избыточности.
2. Устранение аномалий обновления.
3. Проектирование макета данных, который соответствовал бы реальному миру, был интуитивно понятен и служил основой для дальнейшего развития.
4. Упрощение процесса наложения ограничений целостности. Эта цель связана с потенциальными ключами, т.е. если соблюдать условие уникальности потенциальных ключей и организовывать связи только через них, то эта цель будет достигнута.