Лекция 3. Нормализация отношений.pptx
- Количество слайдов: 26
Нормализация отношений
Цель нормализации Основная цель нормализации – создание набора отношений с заданными свойствами: • между атрибутами не должно быть нежелательных функциональных зависимостей. • группировка атрибутов должна обеспечивать минимум дублирования данных. Нормализация отношений - пошаговый, обратимый процесс анализа отношений на основе их первичного ключа (или потенциальных ключей) и функциональных зависимостей с последующей декомпозицией (разложением) исходных отношений.
Необходимость использования только нормализованных отношений Явная избыточность. Одни и те же значения одного или нескольких атрибутов могут появляться в отношении несколько раз. Неявная избыточность встречается там, где есть неявная зависимость между атрибутами. Аномалия добавления связана с отсутствием некоторой информации при включении в БД кортежа с нулевыми значениями некоторых атрибутов записи. Пример неявной избыточности Аномалия удаления в ненормализованных таблицах Номер гостя Комната Телефон может привести к тому, что при 1 12 23 -12 удалении информации об одном 2 13 21 -13 объекте будет удалена также 3 14 24 -14 информация о каких-то других 4 12 23 -12 объектах
Типы функциональных зависимостей Декомпозиция – процесс разбиения исходного отношения на новые меньшие отношения для уменьшения вероятности возникновения аномалий добавления, обновления и удаления. Атрибут В функционально зависит от А (А В), если каждое значение атрибута А связано только с одним значением атрибута В в любой момент времени. Частичная зависимость – функциональная зависимость неключевого атрибут только от части составного ключа. Полная функциональная зависимость – зависимость неключевого атрибута В от всего составного ключа А и отсутствие частичной зависимости от его частей. В этом случае А носит название детерминанта В.
Типы функциональных зависимостей Транзитивная зависимость. Если для атрибутов А, В, С выполняются условия А В и В С, но обратная зависимость отсутствует, то говорят, что С зависит от А транзитивно при условии, что атрибут А функционально не зависит ни от атрибута В, ни от атрибута С. Многозначная зависимость. В отношении R атрибут В многозначно зависит от А (А –>> В), если каждому значению А соответствует множество значений В, никак не связанных с другими атрибутами из R. Тривиальная зависимость. Тогда и только тогда, когда ее правая (зависимая) часть является подмножеством ее левой части (детерминанта). Функциональные зависимости позволяют определить все потенциальные ключи данного отношения.
Первая нормальная форма (1 НФ) Ненормализованная форма (ННФ) – это таблица, содержащая одну или несколько повторяющихся групп данных. Отношение находится в первой нормальной форме (1 НФ) только тогда, когда все входящие в него домены содержат атомарные (неделимые) значения – на пересечении каждой строки и каждого столбца содержится только одно значение.
Пример приведения к 1 НФ Исходные данных Первоначальная обработка данных Ненормализованная форма (ННФ) Kл. No Кл. Имя Coб. No Адрес Сдана Осв Цена Bл. No Ск 76 ЖЖ 36 Иван Ключов ЖЖ 21 ул. М-2 11 -09 -02 ул. D-18 ЖЖ 16 Ск 56 Лина Жильц ова Вл. И 6 -10 -02 400 Вл 46 Дмитрий 10 -01 -01 11 -11 -01 700 Вл 87 Кирилл ул. N-5 1 -08 -01 1 -10 -01 560 Вл 93 Антон ЖА 14 ул. Н-16 1 -10 -01 1 -11 -01 700 Вл 46 Дмитрий ЖЖ 36 ул. М-2 10 -01 -01 11 -11 -01 400 Вл 46 Дмитрий
Варианты приведения к 1 НФ • разделить одну запись на несколько частей, продублировав при этом значения атрибутов «Kл. No» и «Кл. Имя» на все соответствующие записи, т. е. добиться, чтобы на пересечении каждой строки и каждого столбца находилось единственное значение. • Второй вариант предполагает, что повторяющаяся группа (в нашем примере код клиента и его имя) удаляется из данного отношения (остается только ключевой атрибут) и помещается в другое отношение вместе с копией исходного ключевого атрибута. Отношение "Сделки" в 1 НФ Kл. No Кл. Имя Coб. No Адрес Сдана Осв Цена Bл. No Вл. И Ск 76 Иван Ключов ЖЖ 36 ул. М-2 11 -09 -02 6 -10 -02 400 Вл 46 Дмитрий Ск 76 Иван Ключов ЖЖ 21 ул. D-18 10 -01 -01 11 -11 -01 700 Вл 87 Кирилл Ск 56 Лина Жильцова ЖЖ 16 ул. N-5 1 -08 -01 1 -10 -01 560 Вл 93 Антон Ск 56 Лина Жильцова ЖА 14 ул. Н-16 1 -10 -01 1 -11 -01 700 Вл 46 Дмитрий Ск 56 Лина Жильцова ЖЖ 36 ул. М-2 10 -01 -01 11 -11 -01 400 Вл 46 Дмитрий
Вторая нормальная форма (2 НФ) Отношение представлено во второй нормальной форме (2 НФ), когда оно находится в 1 НФ, и каждый атрибут отношения, не входящий в состав первичного ключа, характеризуется полной функциональной зависимостью от этого первичного ключа. Отношение с первичным ключом на основе единственного атрибута всегда находится, по крайней мере, в 2 НФ. Нормализация 1 НФ с образованием 2 НФ-отношений предполагает устранение частичных зависимостей. Если в отношении между атрибутами существует частичная зависимость, то функционально-зависимые атрибуты удаляются из него и помещаются в новое отношение вместе с копией их детерминанта.
Функциональные зависимости (ФЗ) в отношении «Сделки» Ф 31: (Kл. No, Соб. No) (Сдана, Осв); Ф 32: Kл. No Кл. Имя; Ф 33: Соб. No (Адрес, Цена, Вл. No, Вл. И); Ф 34: Соб. No Вл. И; Ф 35: (Kл. No, Сдана) (Соб. No, Адрес, Осв, Цена, Вл. No, Вл. И); • Ф 36: (Соб. No, Сдана) (Kл. No, Кл. Имяб Осв); Потенциальные ключи – (Kл. No, Соб. No), (Kл. No, Сдана), (Соб. No, Сдана). Ф 34 – транзитивная зависимость. ФЗ 3 указывает, что Соб. No Вл. No, т. е. Соб. No Вл. No, Вл. No Вл. И. • • •
Граф функциональных зависимостей В качестве первичного ключа выберем Kл. No и Соб. No. Из графа видно, что существуют две частичные зависимости ФЗ 2 и ФЗ 3. Это говорит о том, что отношение «Сделки» не находится в 2 НФ и должно быть к ней преобразовано.
Приведение отношения к 2 НФ Для этого необходимо создать такие новые отношения, чтобы атрибуты, не входящие в первичный ключ, были перемещены в них вместе с копией части первичного ключа, от которого они функционально зависят.
Третья нормальная форма (3 НФ) Отношение находится в третьей нормальной форме (3 НФ), если оно находится в 2 НФ, и неключевой атрибут транзитивно не зависит от первичного ключа. Процесс преобразования отношения к 3 НФ сводится к поиску транзитивных зависимостей в отношении, и если такая зависимость существует, то транзитивнозависимые атрибуты удаляются из него и помещаются в новое отношение вместе с копией их детерминанта При решении практических задач в большинстве случаев третья нормальная форма является достаточной. Процесс проектирования реляционной базы данных, как правило, заканчивается приведением к 3 NF.
Функциональные зависимости Отношение «Съемщик» : • Ф 32: Kл. No Кл. Имя. Отношение «Аренда» : • Ф 31: (Kл. No, Соб. No) (Сдана, Осв); • Ф 35: (Kл. No, Сдана) (Соб. No, Адрес, Осв, Цена, Вл. No, Вл. И); • Ф 36: (Соб. No, Сдана) (Kл. No, Кл. Имяб Осв); Отношение «Собственник» : • Ф 33: Соб. No (Адрес, Цена, Вл. No, Вл. И); • Ф 34: Вл. No Вл. И; В отношении «Собственник» присутствует транзитивная зависимость: Соб. No Вл. No, Вл. No Вл. И.
Отношения в третьей нормальной форме (3 НФ) Устранение транзитивной зависимости в отношении «Собственник» достигается переносом в отдельное отношение пары атрибутов и оставлением копии детерминанта в отношении «Собственник» . В результате получим два новых отношения «Жилье» и «Владелец» , которые находятся в 3 НФ, поскольку в них нет транзитивных зависимостей
Процесс нормализации
Нормальная форма Бойса – Кодда (НФБК) Отношение находится в НФБК тогда и только тогда, когда каждая его нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ. Отношение находится в нормальной форме Бойса. Кодда тогда и только тогда, когда детерминанты всех ее функциональных зависимостей являются потенциальными ключами.
Различия между 3 НФ и НФБК Функциональная зависимость A B допускается в 3 НФ-отношении, если атрибут В является первичным ключом, а атрибут А необязательно является потенциальным ключом. В НФБК-отношении эта зависимость допускается только тогда, когда атрибут А является потенциальным ключом. Каждое НФБК-отношение является 3 НФ-отношением, но не всякое 3 НФ-отношение является НФБКотношением.
Пример НФБК Отношения Жилье, Владелец, Съемщик, очевидно, находятся в НФБК, поскольку каждое из них имеет один детерминант, который является потенциальным ключом этого отношения. В отношении Аренда имеется три детерминанта: • (Кл. No, Соб. No); • (Кл. No, Сдана); • (Соб. No, Сдана), которые являются потенциальными ключами. Поэтому отношение Аренда также находится в НФБК.
Отношение не удовлетворяющее требованиям НФБК • ФЗ 1: (Кл. No, Дата. Интервью) (Время. Интервью, Код. Сотрудника, Комната); • ФЗ 2: (Код. Сотрудника, Дата. Интервью, Время. Интервью) ( Кл. No ); • ФЗ 3: (Комната, Дата. Интервью, Время. Интервью) ( Код. Сотрудника, Кл. No ); • ФЗ 4: (Код. Сотрудника, Дата. Интервью) (Комната); Ключи: ФЗ 1 – первичный ключ, ФЗ 2, ФЗ 3 – потенциальные ключи. Детерминат ФЗ 4 Код. Сотрудника, Дата. Интервью не является потенциальным ключом и, тем самым, нарушает требование НФБК.
Преобразования отношения к НФБК Для преобразования отношения к НФБК отношение разбивается на отношения Интервью и Комнаты, выделив атрибуты, входящие в ФЗ 4 в отношение Комнаты.
Пример приведения к НФБК Таблица бронирования для теннисных кортов на день: {Номер корта, Время начала, Время окончания, Тариф, Член клуба} Тариф зависит от выбранного корта и членства в клубе. Возможны следующие составные первичные ключи: • {Номер корта, Время начала}. • {Номер корта, Время окончания}. • {Тариф, Время начала}. • {Тариф, Время окончания}. Данные отношения будут соответствовать НФБК: • {Номер корта, Время начала, Время окончания, Член клуба}. • {Тариф, Номер корта, Член клуба}.
Четвёртая нормальная форма (4 НФ) Отношение находится в 4 НФ, если оно находится в НФБК и не содержит нетривиальных многозначных зависимостей. То есть все многозначные зависимости являются, функциональными зависимостями от ключей отношения. Пример: Предприятия производят разные виды изделий, а службы доставки предприятий работают только в определенных районах города. Составной ключ такого отношения: {Предприятие, Вид изделия, Район доставки}. Такое отношение не соответствует 4 НФ, так как существует многозначная зависимость: {Предприятие} {Вид изделия} {Предприятие} {Район доставки} Для приведения отношения к 4 НФ нужно разбить многозначную зависимость – разместить независимые факты в разных таблицах – {Предприятие, Вид изделия} и {Предприятие, Район доставки}.
Пятая нормальная форма (5 НФ) Таблица находится в 5 NF, если она находится в 4 NF и любая многозначная зависимость соединения в ней является тривиальной. 5 НФ в большей степени является теоретическим исследованием и практически не применяется при реальном проектировании баз данных. Пример: Продавец может торговать продукцией нескольких фирм, ассортимент у фирм различен, причем продавец может предлагать только часть товаров конкретной фирмы. Отношение {Продавец, Фирма, Вид товара} соответствует 4 НФ, однако не отражает ограничения, связанного с ассортиментом продукции фирм. Может возникнуть кортеж, в котором фирме будет соответствовать вид товара, который она не выпускает. Для приведения к 5 НФ отношение должно быть разбито на три: {Продавец, Фирма}, {Фирма, Вид товара}, {Продавец, Вид товара}.
Доменно-ключевая нормальная форма Отношение в ДКНФ не имеет аномалий модификации. Другими словами, что бы ни менялось – ничего не потеряется, если соблюдены все ограничения относительно ключей и доменов. Суть заключается в том, что если выполнять некоторые правила, то при любых действиях с таблицей ее целостность не пострадает и вся необходимая информация сохранится. Пример: Правила действуют примерно так: нельзя просто удалить категорию из таблицы категорий, если с этой категорией связаны другие таблицы.
Шестая нормальная форма (6 НФ) Обобщение 5 НФ для темпоральной базы данных. Темпоральная база данных – это база данных, позволяющая хранить темпоральные данные. ТБД позволяют сохранить информацию об эволюции объектов предметной области: для любого объекта, созданного в момент времени tstart и закончившее свое существование в момент времени tend, в БД будут сохранены все его состояния на временном интервале [tstart, tend]. Таким образом, в ТБД при каждом изменении состояния объекта будет сохраняться запись в базе данных. Уникальный идентификатор такой записи состоит из ключа объекта и временного интервала, на котором данное состояние объекта было актуальным, и имеет следующий вид: {key, [tstart, tend]}, где key -- ключ записи, [tstart, tend] -- временная метка записи. Важной особенностью ТБД является то, что в них возможны запросы не только по ключу, но и по времени.


