С Семинар 9 Многозначные зависимости и 4НФ 9.1. Пусть в некоторой базе данных содержится информация о торговых агентах, регионах сбыта и самой продукции. 1 Каждый 1. К й агент отвечает за сбыт б в одном или нескольких регионах. 2. В каждом регионе имеется один или несколько торговых агентов. 3. Каждый агент отвечает за сбыт одного или более видов продукции. 4 Каждый вид продукции распространяется одним или несколькими 4. торговыми агентами. 5. Каждый вид продукции продается в каждом регионе. 6 Два торговых агента не могут продавать один и тот же продукт в 6. одном и том же регионе. 7. Каждый торговый агент продает один и тот же набор продукции в каждом регионе, регионе за который он отвечает отвечает. Спроектируйте набор переменных-отношений, отвечающий указанным требованиям к данным. Решение Решение. Сначала введем три переменные-отношения, первичными ключами которых будут имена торговых агентов, названия регионов и названия товаров соответственно. REP { REP#, ... } AREA { AREA# AREA#, ... } PRODUCT { PROD#, ... } KEY { REP# } KEY { AREA# } KEY { PROD# } 2 Затем представим связь между торговыми агентами и регионами с помощью следующей переменной-отношения RA {REP#, AREA#} KEY {REP#, AREA#} Связь между торговыми агентами и продукцией представим с помощью переменной-отношения RP. RP {REP# {REP#, PROD#} KEY {REP#, {REP# PROD#} Эти переменные-отношения представляют связи типа "многие ко многим". Далее для описания того, что каждый вид продукции продается в каждом регионе, необходимо ввести следующую переменную-отношение. AP {AREA#, PROD#} KEY {AREA#, PROD#} Для представления связей, существующих между регионами и продукцией, установим ограничение С. AP = AREA {AREA#} TIMES PRODUCT {PROD#} в ограничении С подразумевается, что переменная-отношение АР не находится в четвертой нормальной форме. На самом деле переменнаяотношение АР не дает никакой й дополнительной й информации, ф которая не может быть получена из других переменных-отношений AP Project [AREA#] = AREA Project [AREA#] AP Project [PROD#] = PRODUCT Project [PROD#] 3 Тем не менее пока будем считать, что переменная-отношение АР включена в проект создаваемой базы данных. Условие, что никаких два торговых агента не продают один и тот же вид Условие продукции в одном и том же регионе, означает, что заданной комбинации атрибутов {AREA#, PROD#} соответствует только одно значение номера торгового агента (атрибут REP#). Исходя из этого, можно ввести следующую переменную-отношение. APR {AREA#, {AREA# PROD#, PROD# REP#} КЕУ { AREA#, AREA# PROD# } Здесь реализована следующая ФЗ {AREA#, PROD#}→REP# Определение р д комбинации ц атрибутов р у { AREA#,, PROD#} } в качестве потенциального ключа переменной-отношения APR является достаточным условием для выражения этой ФЗ. Теперь переменные-отношения RA, RP и AP оказались избыточными, избыточными поскольку они являются проекциями переменной-отношения АРК, а потому могут быть опущены. Вместо ограничения C теперь необходимо ввести следующее ограничение C1. APR Project [AREA#, PROD#]= AREA Project [ AREA#] TIMES PRODUCT Project [ PROD#] Оно также должно быть задано отдельно и явным образом, поскольку оно не предполагается существующими потенциальными ключами. 4 Кроме того, поскольку каждый торговый агент продает весь свой набор товаров в каждом из обслуживаемых им регионов, для переменнойотношения APR необходимо установить дополнительное ограничение C2 (оно представляет нетривиальную МЗЗ, следовательно, переменнаяотношение APR не находится в 4НФ). REP#→→ AREA#|PROD# Таким образом, в окончательном виде проект базы данных состоит из переменных-отношений REPS, AREAS, PRODUCTS и APR вместе с заданными явным образом б ограничениями C1 и C2. C2 | В общем случае порядок нормализации адекватно представляет некоторые семантические аспекты заданной проблемы. проблемы В основном, основном зависимости, которые определяются потенциальными ключами, где под "зависимостями" имеются в виду ФЗ и МЗЗ, а также ЗС Однако может также потребоваться явное указание дополнительных зависимостей для некоторых особых аспектов, а отдельные аспекты могут быть и вовсе непредставимы с помощью подобных типов зависимостей. зависимостей Задача 8.2 показывает, что не всегда желательно "полностью" нормализовать некоторую переменную-отношение переменную отношение (в примере переменная-отношение APR находится в НФБК, но не в 4НФ). 5