Способ определения функциональной зависимости

Способ определения функциональной зависимости

Если даны два атрибута X и Y некоторого отношения, то говорят, что Y функционально зависит от X , если в любой момент времени каждому значению X соответствует ровно одно значение Y .

Функциональная зависимость обозначается X -> Y . Отметим, что X и Y могут представлять собой не только единичные атрибуты, но и группы, составленные из нескольких атрибутов одного отношения.

Можно сказать, что функциональные зависимости представляют собой связи типа «один ко многим», существующие внутри отношения.

Некоторые функциональные зависимости могут быть нежелательны.

Избыточная функциональная зависимость — зависимость, заключающая в себе такую информацию, которая может быть получена на основе других зависимостей, имеющихся в базе данных.

Корректной считается такая схема базы данных, в которой отсутствуют избыточные функциональные зависимости. В противном случае приходится прибегать к процедуре декомпозиции (разложения) имеющегося множества отношений. При этом порождаемое множество содержит большее число отношений, которые являются проекциями отношений исходного множества. (Операция проекции описана в разделе, посвященном реляционной алгебре). Обратимый пошаговый процесс замены данной совокупности отношений другой схемой с устранением избыточных функциональных зависимостей называется нормализацией .

Условие обратимости требует, чтобы декомпозиция сохраняла эквивалентность схем при замене одной схемы на другую, т.е. в результирующих отношениях:

  • не должны появляться ранее отсутствовавшие кортежи;
  • на отношениях новой схемы должно выполняться исходное множество функциональных зависимостей.

4.2.2. 1NF — первая нормальная форма.

Простой атрибут — атрибут, значения которого атомарны (неделимы).

Сложный атрибут — получается соединением нескольких атомарных атрибутов, которые могут быть определены на одном или разных доменах. (его также называют вектор или агрегат данных).

Теперь можно дать

Определение первой нормальной формы:

отношение находится в 1NF если значения всех его атрибутов атомарны.

Рассмотрим пример, заимствованный из уже упоминавшейся статьи Е.Ф.Кодда:

В базе данных отдела кадров предприятия необходимо хранить сведения о служащих, которые можно попытаться представить в отношении СЛУЖАЩИЙ(НОМЕР_СЛУЖАЩЕГО, ИМЯ, ДАТА_РОЖДЕНИЯ, ИСТОРИЯ_РАБОТЫ, ДЕТИ).

Из внимательного рассмотрения этого отношения следует, что атрибуты «история_работы» и «дети» являются сложными, более того, атрибут «история_работы» включает еще один сложный атрибут «история_зарплаты».
Данные агрегаты выглядят следующим образом:

  • ИСТОРИЯ_РАБОТЫ (ДАТА_ПРИЕМА, НАЗВАНИЕ, ИСТОРИЯ_ЗАРПЛАТЫ),
  • ИСТОРИЯ_ЗАРПЛАТЫ (ДАТА_НАЗНАЧЕНИЯ, ЗАРПЛАТА),
  • ДЕТИ (ИМЯ_РЕБЕНКА, ГОД_РОЖДЕНИЯ).

    Их связь представлена на рис. 4.3.

    Рис.4.3. Исходное отношение.

    Для приведения исходного отношения СЛУЖАЩИЙ к первой нормальной форме необходимо декомпозировать его на четыре отношения, так как это показано на следующем рисунке:
    Рис.4.4. Нормализованное множество отношений.

    Здесь первичный ключ каждого отношения выделен синей рамкой, названия внешних ключей набраны шрифтом синего цвета. Напомним, что именно внешние ключи служат для представления функциональных зависимостей, существующих в исходном отношении. Эти функциональные зависимости обозначены линиями со стрелками.

    Алгоритм нормализации описан Е.Ф.Коддом следующим образом:

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

    4.2.3. 2NF — вторая нормальная форма.

    неключевой атрибут функционально полно зависит от составного ключа если он функционально зависит от всего ключа в целом, но не находится в функциональной зависимости от какого-либо из входящих в него атрибутов.

    Пусть имеется отношение ПОСТАВКИ (N_ПОСТАВЩИКА, ТОВАР, ЦЕНА).
    Поставщик может поставлять различные товары, а один и тот же товар может поставляться разными поставщиками. Тогда ключ отношения — «N_поставщика + товар» . Пусть все поставщики поставляют товар по одной и той же цене. Тогда имеем следующие функциональные зависимости:

    • N_поставщика, товар -> цена
    • товар -> цена

    Неполная функциональная зависимость атрибута «цена» от ключа приводит к следующей аномалии: при изменении цены товара необходим полный просмотр отношения для того, чтобы изменить все записи о его поставщиках. Данная аномалия является следствием того факта, что в одной структуре данных объединены два семантических факта. Следующее разложение дает отношения во 2НФ:

    • ПОСТАВКИ (N_ПОСТАВЩИКА, ТОВАР)
    • ЦЕНА_ТОВАРА (ТОВАР, ЦЕНА)

    Таким образом, можно дать

    Определение второй нормальной формы:

    Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от ключа.

    4.2.4. 3NF — третья нормальная форма.

    Пусть X, Y, Z — три атрибута некоторого отношения. При этом X —> Y и Y —> Z, но обратное
    соответствие отсутствует, т.е. Z -/-> Y и Y -/-> X. Тогда Z транзитивно зависит от X.

    Пусть имеется отношение ХРАНЕНИЕ ( ФИРМА , СКЛАД, ОБЪЕМ), которое содержит информацию о фирмах, получающих товары со складов, и объемах этих складов. Ключевой атрибут — «фирма» . Если каждая фирма может получать товар только с одного склада, то в данном отношении имеются следующие функциональные зависимости:

    • фирма -> склад
    • склад -> объем

    При этом возникают аномалии:

    • если в данный момент ни одна фирма не получает товар со склада, то в базу данных нельзя ввести данные о его объеме (т.к. не определен ключевой атрибут)
    • если объем склада изменяется, необходим просмотр всего отношения и изменение кортежей для всех фирм, связанных с данным складом.

    Для устранения этих аномалий необходимо декомпозировать исходное отношение на два:

    • ХРАНЕНИЕ ( ФИРМА , СКЛАД)
    • ОБЪЕМ_СКЛАДА ( СКЛАД , ОБЪЕМ)

    Определение третьей нормальной формы:

    Отношение находится в 3НФ, если оно находится во 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.

    4.2.5. BCNF — нормальная форма Бойса-Кодда.

    Эта нормальная форма вводит дополнительное ограничение по сравнению с 3НФ.

    Определение нормальной формы Бойса-Кодда:

    Отношение находится в BCNF, если оно находится во 3НФ и в ней отсутствуют зависимости атрибутов первичного ключа от неключевых атрибутов.

    Ситуация, когда отношение будет находится в 3NF, но не в BCNF, возникает при условии, что отношение имеет два (или более) возможных ключа, которые являются составными и имеют общий атрибут. Заметим, что на практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны.

    4.2.6. Многозначные зависимости и четвертая нормальная форма (4NF).

    Многозначная зависимость является обобщением функциональной зависимости и рассматривает соответствия между множествами значений атрибутов.

    В качестве примера рассмотрим отношение ПРЕПОДАВАТЕЛЬ (ИМЯ, КУРС, УЧЕБНОЕ_ПОСОБИЕ), хранящее сведения о курсах, читаемых преодавателем, и написанных им учебниках. Пусть профессор N читает курсы «Теория упругости» и «Теория колебаний» и имеет соответствующие учебные пособия, а профессор K читает курс «Теория удара» и является автором учебников «Теория удара» и «Теоретическая механика». Тогда наше отношение будет иметь вид: Это отношение имеет значительную избыточность и его использование приводит к возникновению аномалии обновления . Например, добавление информации о том, что профессор K будет также читать лекции по курсу «Теория упругости» приводит к необходимости добавить два кортежа (по одному для каждого написанного им учебника) вместо одного. Тем не менее, отношение ПРЕПОДАВАТЕЛЬ находится в NFBC (ключевой атрибут — ИМЯ).

    Заметим, что указанные аномалии исчезают при замене отношения ПРЕПОДАВАТЕЛЬ его проекциями: Аномалия обновления возникает в данном случае потому, что в отношении ПРЕПОДАВАТЕЛЬ имеются:

    1. зависимость множества значений атрибута КУРС от множества значений атрибута ИМЯ
    2. зависимость множества значений атрибута УЧЕБНОЕ_ПОСОБИЕ от множества значений атрибута ИМЯ.

    Такие зависимости и называются многозначными и обозначаются как Нетрудно показать, что многозначные зависимости всегда образуют связанные пары, поэтому их часто обозначают Очевидно, что каждая функциональная зависимость является многозначной, но не каждая многозначная зависимость является функциональной.

    Определение четвертой нормальной формы:

    Отношение находится в 4NF если оно находится в BCNF и в нем отстутсвуют многозначные зависимости, не являющиеся функциональными зависимостями.

    4.2.7. Зависимости по соединению и пятая нормальная форма (5NF).

    До сих пор мы предполагали, что единственной операцией, необходимой для устранения избыточности в отношении, была декомпозиция его на две проекции. Однако, существуют отношения, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции без потерь на три (или более) проекций. Этот факт получил название зависимости по соединению , а такие отношения называют 3-декомпозируемые отношения (ясно, что любое отношение можно назвать «n-декомпозируемым», где n >= 2 ).

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

    Определение пятой нормальной формы:

    Отношение находится в 5НФ тогда и только тогда, когда любая зависимость по соединению в нем определяется только его возможными ключами.

    Источник

    BestProg

    Нормализация. Функциональные зависимости атрибутов. Примеры. Построение схем функциональных зависимостей

    Перед изучением данной темы рекомендуется ознакомиться с темой:

    Содержание

    Поиск на других ресурсах:

    1. Понятие функциональной зависимости. Определение. Примеры

    После того, как таблица приведена к первой нормальной форме 1НФ, нужно определить функциональную зависимость между атрибутами (полями, столбцами) таблицы. Это необходимо для обеспечения максимально-возможной рациональности в построении таблиц базы данных.

    Функциональная зависимость — это связь, которая может возникнуть между сущностями, хранящимися в базе данных. Если сущность A функционально определяет сущность B , то такую зависимость принято обозначать следующим образом:

    A → B

    • A – детерминант отношения;
    • B – зависимая часть.

    Пример 1. Пусть дано отношение, которое определяет должностные оклады работников некоторого предприятия.

    В вышеприведенной таблице оклад работника определяется должностью, которую он занимает. Если работник переходит на другую должность, то меняется и его оклад. Итак, атрибут Должность функционально определяет атрибут Оклад . В символической форме такая зависимость обозначается следующим образом

    Должность → Оклад

    здесь Должность – детерминант, Оклад – зависимая часть.

    Пример 2. Демонстрируется зависимость атрибута от составного (композитного) ключа. На рисунке 1 изображена таблица выпуска различных моделей автомобилей в разные годы.

    Ключом отношения являются атрибуты Марка — Модель — Год выпуска . Атрибут «Количество выпущенных моделей» зависит от ключа.

    Рисунок 1. Функциональная зависимость атрибута « Количество выпущенных моделей » от ключа

    2. Степени функциональной зависимости. Классификация

    Различают следующие степени функциональной зависимости между атрибутами:

    • частичная зависимость. Эта зависимость может возникать в случаях, когда таблица содержит составной ключ. Составной ключ — это ключ таблицы, который состоит из нескольких атрибутов. Если ключ состоит из одного атрибута, то этот ключ является простым. При частичной зависимости один атрибут таблицы является зависимым от части ключа, то есть от отдельного атрибута, входящего в ключ отношения;
    • полная зависимость. Это случай, когда между атрибутами существует зависимость друг от друга;
    • транзитивная зависимость. Это зависимость, когда два атрибута связаны между собой через третий атрибут. Этот третий атрибут выступает посредником;
    • многозначная зависимость. Это случай, когда одному значению одного атрибута соответствует несколько значений другого атрибута.
    3. Частичная зависимость. Примеры

    Пример 1. Пусть дана следующая таблица.

    Пусть в таблице первичным ключом выбрано комбинацию атрибутов Номер работника — Должность . Этот ключ является составным. Между составным ключом Номер работника — Должность и атрибутом Оклад существует функциональная зависимость. Это объясняется тем, что оклад работника зависит от занимаемой должности. Символически такую зависимость можно обозначить так: Должность → Оклад .

    Поскольку атрибут Оклад зависит только от части ключа (атрибута Должность ) а не от всего ключа ( Номер работника — Должность ), то эта функциональная зависимость является частичной.

    Вывод: отдельный атрибут Оклад зависит от определенной части составного ключа, которым является пара атрибутов Номер работника — Должность .

    Рисунок 2 схематически отображает частичную зависимость.

    Рисунок 2. Частичная зависимость атрибута Оклад от ключа отношения

    Пример 2. Пусть дана таблица учета проведенных занятий в учебном заведении.

    Для обеспечения уникальности, ключом отношения выбрано атрибуты «Номер аудитории» — « Номер занятия » — « Дата » — « Преподаватель «. Поскольку, за преподавателем закреплена конкретная дисциплина, то атрибут Дисциплина является зависимым от атрибута Преподаватель . Это значит, что атрибут Дисциплина зависим от части ключа отношения, так как атрибут Преподаватель является частью ключа отношения. На рисунке 3 показана эта зависимость.

    Рисунок 3. Частичная зависимость атрибута Дисциплина от ключа отношения

    4. Полная функциональная зависимость. Примеры

    Полная функциональная зависимость между двумя атрибутами — это случай, когда между двумя атрибутами A и B является прямая ( A → B ) и обратная ( B → A ) зависимость. При полной функциональной зависимости одному значению атрибута A соответствует только одно значение атрибута B . И, наоборот, одному значению атрибута B соответствует значение атрибута A .
    Полная функциональная зависимость между двумя атрибутами A и B обозначается A ↔ B .

    Пример 1. Пусть дана база данных учета учебного процесса, таблица которой содержит атрибуты

    • Год — учебный год;
    • Курс — курс обучения, на котором учится некоторый студент (группа).

    Фрагмент таблицы базы данных следующий

    Между этими атрибутами существует полная зависимость. Это означает, что за учебным годом можно определить курс, на котором учится студент. И, наоборот, по курсу обучения можно определить учебный год (при условии, что студент успешно сдал все сессии и не имеет задолженности по дисциплине «Организация баз данных и знаний» 🙂.

    На схеме зависимостей такая связь обозначается следующим образом

    Рисунок 4. Полная зависимость между атрибутами Год и Курс

    Пример 2. Связь между идентификационным номером и именем гражданина. По имени гражданина можно определить идентификационный номер. И, наоборот, по идентификационному номеру можно определить имя гражданина.

    5. Примеры транзитивной зависимости

    Пример 1. Задана база данных, содержащая информацию о ходе учебного процесса в учебном заведении. В отношении (таблице) используются атрибуты (поля), имеющие транзитивные зависимости.

    Между атрибутами Преподаватель и Группа существует транзитивная зависимость (рисунок 5).

    Рисунок 5. Транзитивная зависимость между атрибутами Преподаватель и Группа

    Рассуждения. За каждым преподавателем закреплена дисциплина. То есть атрибут Дисциплина функционально зависим от атрибута Преподаватель . Согласно учебному плану, каждая группа имеет перечень дисциплин, которые она должна изучить. По дисциплине можно определить группу (или несколько групп), в которых эта дисциплина преподается. Например, дисциплины компьютерного цикла (Базы данных) будут изучать группы компьютерных специальностей. Поэтому, между дисциплиной и группой также существует функциональная зависимость.

    Поскольку, за каждой дисциплиной закреплен конкретный преподаватель, то между атрибутами Преподаватель и Группа существует транзитивная зависимость (Преподаватель преподает дисциплину в группе).

    Пример 2. Пусть задана таблица начислений стипендии для студентов некоторой группы. Студенты могут учиться на госзаказе (бюджет) или по контракту.

    От студента зависит вид договора на обучение: бюджет или контракт. Поэтому возникает функциональная зависимость между атрибутами Студент и Вид договора (рисунок 6).

    Рисунок 6. Функциональная зависимость между атрибутами Студент и Вид договора

    Вид договора влияет на размер стипендии. Если студент учится по контракту, то стипендия не начисляется. По размеру стипендии нельзя определить вид договора, поскольку студент может учиться на бюджете и не получать стипендию в связи с плохой успеваемостью. Поэтому, между атрибутами Вид договора и Стипендия существует следующая функциональная зависимость (рисунок 7).

    Рисунок 7. Функциональная зависимость между атрибутами Вид договора и Стипендия

    Значит между атрибутами Студент и Стипендия существует транзитивная зависимость (рисунок 8).

    Рисунок 8. Транзитивная зависимость между атрибутами Студент и Стипендия

    6. Примеры многозначной зависимости

    Пример 1. В учебном заведении преподаватель может преподавать не одну а несколько родственных дисциплин.

    Между атрибутами Преподаватель и Дисциплина существует многозначная зависимость, потому что одному значению атрибута Преподаватель соответствует несколько значений атрибута Дисциплина . В данном примере принимается договоренность что одну дисциплину не может преподавать несколько преподавателей.

    Пример 2. Задана таблица стоимости новых автомобилей.

    Между атрибутами Марка и Модель существует многозначная зависимость. Это объясняется тем, что для одной марки (Renault) может существовать несколько значений моделей (Logan, Megane, Koleos).

    7. Задача. Построить схему функциональных зависимостей между атрибутами отношения

    Условие задачи. Задана таблица базы данных «Учет товаров в автомагазине», которая приведена к первой нормальной форме 1НФ. Таблица определяет товары, поступающие на склад и имеет следующую структуру

    Нужно построить схему зависимостей между атрибутами.

    Решение. Схема зависимостей между атрибутами таблицы учета поступивших товаров на складе изображена на рисунке 9.

    Рисунок 9. Схема зависимостей между атрибутами

    8. Задача. Построить схему функциональных зависимостей между атрибутами отношения

    Задано таблицу базы данных магазина, которая отображает учет автозапчастей (товаров). Структура таблицы следующая

    Атрибуты Код , Товар , Группа , Номер и Дата определяют ключ отношения. Поскольку товар с тем же кодом может быть получен несколько раз (в разные даты и в разные номера заказов), то выбор ключа с одним атрибутом Код нецелесообразен.

    Последовательность рассуждений при построении схемы функциональных зависимостей следующая.
    Товар поступает в магазин на основании заказа для которого фиксируется номер и дата. Каждый поступивший товар идентифицируется кодом и названием поступления. Значит, имеем зависимость атрибутов Код , Товар от атрибутов Номер , Дата .
    Товары группируются в группы (категории). Например, для магазина автозапчастей такими категориями товаров могут быть Шины , Аккумуляторы , Трансмиссия и тому подобное. Следовательно, возникает функциональная зависимость Группа → Название .
    Полученный товар поступает в определенном количестве и имеет стоимость. Значит, атрибуты Количество и Стоимость функционально зависимы от заказанного товара (пары атрибутов Код — Товар ).
    С учетом изложенных соображений, схема функциональных зависимостей изображена на рисунке 10.

    Рисунок 10. Схема функциональных зависимостей. Учет автозапчастей в магазине

    9. Понятие независимых атрибутов. Примеры

    Между отдельными атрибутами базы данных могут отсутствовать какие-либо функциональные зависимости. Такие атрибуты называются независимыми друг от друга.

    Пример. Задана таблица с данными о преподавателе.

    В вышеприведенной таблице нет функциональной зависимости между следующими атрибутами:

    • Стаж и Дисциплина . Обозначается как Стаж ¬= Дисциплина ;
    • Адрес — Дисципліна . Обозначается Адрес ¬= Дисциплина ;
    • Стаж — Адрес . Обозначается Стаж ¬= Адрес .

    Источник

    Читайте также:  Способ передвижения у улиток
  • Оцените статью
    Разные способы