bbd_lect_norm.ppt
- Количество слайдов: 57
Информационная безопасность баз данных Тема: Нормальные формы
План лекции • • • Процесс нормализации Понятие функциональных зависимостей Правила вывода ФЗ Декомпозиция без потерь Первая, вторая и третья нормальные формы Нормальная форма Бойса-Кодда
Избыточность данных Недостатки: • Требуется больше места для хранения • Могут возникать аномалии: вставки модификации удаления
Процесс нормализации • Процесс нормализации основывается на концепции нормальных форм • Отношение находится в определенной нормальной форме, если оно удовлетворяет заданному набору условий
Процесс нормализации Отношения в 1 НФ Отношения во 2 НФ Отношения в 3 НФ Отношения в НФБК Отношения в 4 НФ Отношения в 5 НФ
Процесс нормализации • Первые три нормальные формы были описаны Э. Коддом • Следующую формулу вывели Р. Бойс и Э. Кодд (НФБК – нормальная форма Бойса-Кодда) • Четвёртую и пятую нормальные формы определил Р. Фейгин
Процесс нормализации • Отношение в некоторой нормальной форме предусматривает приведение его к предыдущей нормальной форме • Понятия первых нормальных форм основано на функциональных зависимостях (ФЗ) и процессе декомпозиции
Понятие функциональных зависимостей • Пусть R – переменная отношения • X и Y – произвольные подмножества атрибутов R • Тогда Y функционально зависит от X (X → Y, «X функционально определяет Y» ) тогда и только тогда, когда для любого допустимого значения R каждое значение X связано точно с одним значением Y • X называют детерминантом ФЗ, а Y – зависимой частью ФЗ
Понятие функциональных зависимостей Пример: • Пусть R – это отношение Students, X – код студента, а Y – множество всех атрибутов студента • Тогда X → Y, т. к. X представляет собой первичный ключ, который уникально идентифицирует запись в таблице Students
Понятие функциональных зависимостей • Такое утверждение будет верно и для более общего случая: если X – это потенциальный ключ, то множество всех атрибутов R всегда функционально зависит от X
Понятие функциональных зависимостей Если в R имеется ФЗ, левая часть которой не включает потенциальный ключ, то R обладает избыточностью, что затрудняет обеспечение целостности данных и занимает лишние ресурсы системы
Понятие функциональных зависимостей Если ни один атрибут не может быть опущен из левой части, то такая функциональная зависимость называется неприводимой (точнее неприводимой слева)
Понятие функциональных зависимостей Множество функциональных зависимостей называется неприводимым тогда и только тогда, когда оно обладает тремя свойствами: • зависимая часть каждой ФЗ содержит только один атрибут • детерминант каждой ФЗ является неприводимым • ни одна ФЗ из множества не может быть удалена без потери информации о связях
Понятие функциональных зависимостей Выделяют два вида функциональных зависимостей: • тривиальные ФЗ • нетривиальные ФЗ
Понятие функциональных зависимостей • Тривиальные ФЗ – это ФЗ, в которых правая часть (Y) является подмножеством левой части (X) • С практической точки зрения они не представляют значительного интереса, однако с точки зрения формальной теории зависимостей необходимо учитывать их наличие
Понятие функциональных зависимостей • Нетривиальные ФЗ. Они действительно являются ограничениями целостности данных, поэтому в дальнейшем мы будем рассматривать именно нетривиальные ФЗ
Правила вывода ФЗ • Для определения того, в какой нормальной форме находится отношение, требуется найти все ФЗ • Существуют три правила Армстронга, позволяющие из начальное множества ФЗ вывести возможные ФЗ
Правила вывода ФЗ • Пусть A, B, C – это подмножества атрибутов отношения R, AB – объединение этих подмножеств
Правила вывода ФЗ 1. Правило рефлексивности Если множество B является подмножеством множества А, то А → В (по сути, это определение тривиальной зависимости)
Правила вывода ФЗ 2. Правило дополнения Если А → B, то АС → ВС 3. Правило транзитивности Если А → B и B→C, то А → С
Правила вывода ФЗ • В целях упрощения получения всех ФЗ можно вывести еще несколько дополнительных правил • Пусть D – это еще одно произвольное подмножество множества атрибутов R
Правила вывода ФЗ 4. Правило самоопределения А → А 5. Правило декомпозиции Если А → ВС, то А → B и A → C. 6. Правило объединения Если А → В и А → С, то А → ВС
Правила вывода ФЗ 7. Правило композиции Если А → B и С → D, то АС → BD 8. Теорема всеобщего объединения Если А→ B и C → D, то А ( С – В ) → BD
Правила вывода ФЗ • Однако, следует иметь в виду, что эти правила не обеспечивают чёткого алгоритма получения всех ФЗ • Более того, такого алгоритма не существует • Единственный путь – это перебор всех вариантов
Декомпозиция без потерь • Существенным аспектом процедуры нормализации является декомпозиция – разбиение отношения на производные • При этом такое разбиение не должно повлечь за собой потерю информации • Если отношение разбито на два без потерь, то это разбиение можно назвать обратимым, т. е. можно произвести обратное соединение
Декомпозиция без потерь Пример • Рассмотрим отношение Students:
Декомпозиция без потерь Продолжение примера • 1 й вариант декомпозиции. Разобьем Students на 2 следующих отношения:
Декомпозиция без потерь Продолжение примера • При таком варианте разбиения некоторая информация утрачивается: невозможно определять верную дату рождения (Birth. Date) каждого студента
Декомпозиция без потерь Продолжение примера • 2 й вариант декомпозиции. Разобьем Students на 2 следующих отношения:
Декомпозиция без потерь Продолжение примера • Это декомпозиция без потерь, поскольку эти два отношения можно объединить и получится исходное отношение Students
Декомпозиция без потерь • Можно заметить, что процесс декомпозиции фактически представляет собой операции проекции, т. к. каждое полученное при декомпозиции отношение состоит из подмножества полей исходного отношения
Декомпозиция без потерь • Чтобы гарантировать, что после декомпозиции обратное соединение отношений даст исходное, существует теорема Хита
Декомпозиция без потерь Теорема Хита • Пусть R{А, B, С} – это отношение, где А, B и C – множества атрибутов этого отношения • Если R удовлетворяет ФЗ А→ B, то R равна соединению ее проекций по атрибутам {А, В} И {А, С}
Первая, вторая и третья нормальные формы Первая нормальная форма (1 НФ) • Отношение находится в 1 НФ тогда и только тогда, когда все используемые домены содержат только скалярные значения, т. е. значения всех полей отношения должны быть неделимы
Первая, вторая и третья нормальные формы • Пример: пусть дано следующее отношение Students:
Первая, вторая и третья нормальные формы • Продолжение примера: поле Name содержит одновременно фамилию, имя и отчество. Это поле можно разделить на три, тогда получим отношение в 1 НФ:
Первая, вторая и третья нормальные формы Вторая нормальная форма (2 НФ) • Отношение находится во 2 НФ тогда и только тогда, когда оно находится в 1 НФ и каждый неключевой атрибут неприводимо зависит от первичного ключа
Первая, вторая и третья нормальные формы • Пример: рассмотрим следующее отношение:
Первая, вторая и третья нормальные формы • Продолжение примера: первичным ключом здесь будет {Student. ID, Course} • Проанализируем ФЗ этого отношения, где детерминантом является первичный ключ, а в правой части неключевой атрибут
Первая, вторая и третья нормальные формы • Продолжение примера: рассмотрим следующую ФЗ: {Student. ID, Course} → {Last. Name} • Очевидно, что она является приводимой, т. к. фамилия зависит только от Student. ID, а значит существует ФЗ: {Student. ID} → {Last. Name}
Первая, вторая и третья нормальные формы • Продолжение примера: следовательно данное отношение не находится во 2 НФ • Произведем декомпозицию исходного отношения на следующие два:
Первая, вторая и третья нормальные формы n Продолжение примера:
Первая, вторая и третья нормальные формы Третья нормальная форма (3 НФ) • Отношение находится в 3 НФ тогда и только тогда, когда оно находится во 2 НФ и каждый неключевой атрибут не является транзитивно зависимым от первичного ключа (это означает, что в отношении отсутствуют какие-либо взаимные зависимости)
Первая, вторая и третья нормальные формы • Пример: рассмотрим следующее отношение Students:
Первая, вторая и третья нормальные формы • Продолжение примера: так как существуют ФЗ: Student. ID → Group. ID и Group. ID → Supervisor, то атрибут Supervisor транзитивно зависит от первичного ключа Student. ID • Следовательно отношение не находится в 3 НФ • Приведем отношение к 3 НФ
Первая, вторая и третья нормальные формы • Продолжение примера:
Нормальная форма Бойса-Кодда • Нормальная форма Бойса-Кодда (НФБК) – это уточнение третьей нормальной формы • При определении 3 НФ было сделано допущение о том, что отношение имеет только один потенциальный ключ, который и является первичным
Нормальная форма Бойса-Кодда • Если рассмотреть более общий случай, то первоначальное определение, данное Э. Коддом для ЗНФ, оказывается не во всех случаях удовлетворительным • В частности, оно неадекватно при выполнении следующих условий: отношение имеет два (или больше) потенциальных ключа эти потенциальные ключи являются составными они перекрываются (т. е. имеют по крайней мере один общий атрибут)
Нормальная форма Бойса-Кодда • Поэтому впоследствии исходное определение ЗНФ было заменено более строгим определением Бойса-Кодда • На практике комбинация всех трёх условий встречается редко, и для отношений, в которых не выполняются все эти три условия, 3 НФ и НФБК полностью эквивалентны
Нормальная форма Бойса-Кодда • Отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда каждая ее нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ
Нормальная форма Бойса-Кодда • Пример: рассмотрим следующее отношение:
Нормальная форма Бойса-Кодда • Продолжение примера: каждый кортеж означает, что некоторый студент изучает определенную дисциплину у указанного преподавателя • При этом существуют следующие ограничения: каждый преподаватель ведет только одну дисциплину может вести несколько преподавателей для некоторого студента одну дисциплину ведет только один преподаватель
Нормальная форма Бойса-Кодда • Продолжение примера: в данном отношении есть два потенциальных ключа {Student. ID, Course. ID} и {Student. ID, Teacher. ID} • Оба ключа являются составными и они имеют общий атрибут Student. ID, т. е. перекрываются • Таким образом выполнены все три условия, которые могут привести к ситуации, когда отношение может находиться в 3 НФ, но не находится в НФБК
Нормальная форма Бойса-Кодда Продолжение примера: очевидно, что отношение находится в 3 НФ: • значения всех атрибутов неделимы (1 НФ) • каждый неключевой атрибут неприводимо зависит от первичного ключа (2 НФ) • все неключевые атрибуты нетранзитивно зависят от потенциального ключа (3 НФ)
Нормальная форма Бойса-Кодда • Продолжение примера: однако, в данном отношении существует ФЗ Teacher. ID → Course. ID и Teacher. ID при этом не является потенциальным ключом, следовательно отношение не находится в НФБК
Нормальная форма Бойса-Кодда • Продолжение примера: если произвести декомпозицию этого отношения на два: {Student. ID, Course. ID} и {Course. ID, Teacher. ID}, то потеряем информацию о том, какой именно преподаватель ведет дисциплину для конкретного студента • Это объясняется тем, что исходное отношение является атомарным, т. е. его нельзя разбить на две независимые проекции
Выводы Таким образом, в процессе нормализации не всегда есть смысл стремиться к атомарным отношениям, но, тем не менее, для основных объектов базы данных рекомендуется добиваться атомарности
bbd_lect_norm.ppt