Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭ-2013-анн-130515.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

1.2. Полная функциональная зависимость. Вторая нормальная форма (2нф). Приведение отношения к 2нф

Распространённая ошибка при проектировании баз данных – объявление первичным ключом суперключ (не минимальное множество атрибутов, однозначно определяющее кортеж). Такая практика приводит к значительным неприятностям.

Определение. Функциональная зависимость X=(A1,A2,...,Ak)B полная, если B зависит от всех Ai из X. Если существует X'B, где X' – собственное подмножество X, функциональная зависимость неполная.

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

Пример

Задано отношение со схемой поставки (Поставщик, Товар, Цена), для которого определены следующие ограничения:

  • Товар могут поставлять разные поставщики.

  • Цена одинаковых товаров одинакова.

  • Поставщик может поставлять разные товары.

Эти ограничения определяют следующие функциональные зависимости:

Поставщик, Товар Цена

Товар Цена

Здесь налицо неполная функциональная зависимость цены от ключа.

Аномалия включения: новый товар не включается в БД без поставки.

Аномалия удаления: поставки прекращаются – удаляются сведения о товаре.

Аномалия обновления: изменение цены влечет полный пересмотр.

Преобразование:

Поставки (поставщик, товар)

Цена товара (товар, цена)

Конец примера

1.3. Транзитивная зависимость. Третья нормальная форма (3нф). Приведение отношения к 3нф

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

Определение. Атрибут A транзитивно зависит от X, если существует такое Y, что выполняется условие (X Y & (Y X) & YA) => X A.

Определение. Отношение находится в 3НФ, если оно находится в 1НФ и в нем отсутствует транзитивная зависимость атрибутов от первичных атрибутов.

Пример

Решается задача, связанная с определением складов для отделений больницы. Задача ставится руководством отделения, для которого важно, чтобы за его отделением был закреплен склад определенного объема, причем только один. Тогда для отношения со схемой хранение (Отделение, Склад, Объем) существует единственная функциональная зависимость:

Отделение Склад

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

Склад Объем

Таким образом, отношение оказалось не в 3НФ, так как существует транзитивная зависимость объема от отделения через склад: (Отделение Склад) & (Склад Отделение) & (Склад Объем) & (Отделение Объем).

Аномалия включения: нет возможности добавить сведения о новом складе, для которого нет отделения.

Аномалия удаления: отделение ликвидируется – становятся недоступными данные о складе.

Аномалия обновления: изменение объема склада влечет полный пересмотр таблицы.

Преобразование:

хранение (Отделение, Склад)

объем склада (Склад, Объем)

Конец примера

1.4. Операции реляционной алгебры: булевы операции, операции выбора, проекции, соединения, деления

К булевым операциям относятся операции пересечения, объединения, разности. Пусть r, s – отношения со схемой R. Они могут рассматриваться как подмножества множества всех кортежей, определяемых этой схемой, поэтому к ним применимы булевские операции.

Пересечением называется отношение q(R) = r(R) s(R), содержащее кортежи, которые одновременно принадлежат и r, и s. Объединением называется отношение q(R) = r(R) s(R), содержащее кортежи, которые принадлежат либо r, либо s. Разностью называется отношение q(R) = r(R) - s(R), содержащее кортежи, которые принадлежат r, но не принадлежат s. Или формально:

rs ={t|(tr)&(ts)};

rs ={t|(tr)(ts)};

r–s ={t|(tr)&(ts)}.

Заметим, что r s = r – (r – s), то есть достаточно лишь двух операций.

Пусть r(R) – отношение со схемой R, XR, AR, adom(A) – элемент множества значений, которые может принимать кортеж t на этом атрибуте. Выберем из отношения r те кортежи, которые на A принимают значение a, результат обозначим через A = a(r). Это унарная операция (она применяется к одному отношению), в результате которой появляется отношение r (R).

Определение. ВыборомA = a(r) называется отношение r (R) = A = a(r){tr | t(A)=a}.

Определение. Проекцией X(r) называется отношение r(X) = X(r) {t(X) | tr }.

Это унарная операция, но в отличие от операции выбора, которая выдаёт строки по заданным условиям, она выдаёт столбцы, заголовки которых перечислены в X.

Определение. Пусть r(R) и s(S) – отношения. Тогда соединением r и s называется отношение r || s = q(RS) = {t(RS) | tr r, ts s : tr = t(R), ts = t(S)}.

Пусть RS = X . Тогда отношение r || s состоит из всех кортежей, в которых t(X)=tr(X)=ts(X). Оно называется декартовым произведением и обозначается r s.

Определение. Пусть r(R) и s(S) – отношения, SR. Положим R = R - S. Тогда r, разделенное на s – это отношение r(R)={t | tss trr: tr(R)=t & tr(S)=ts}.

Отношение r– частное от деления r на s, что обозначается r= rs. Иначе rs – это максимальное подмножество r множества R (r), такое, что r  s r. Соединение здесь – декартово произведение.