Проектирование реляционных баз данных

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    31,13 Кб
  • Опубликовано:
    2016-06-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование реляционных баз данных












Контрольная работа

Проектирование реляционных баз данных

Содержание

 

Проектирование реляционных баз данных

Нормализация отношений

Функциональные зависимости

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

Нормальная форма Бойса-Кодда

Нормальные формы, обоснованные более сложными зависимостями

Процедура нормализации и проектирования

Литература

Проектирование реляционных баз данных

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

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

1. Аномалии обновления - из-за избыточности данных при их обновлении необходимо просматривать все данные, тем не менее, может возникнуть ситуация, когда не все данные будут обновлены (потенциальная противоречивость данных).

2. Аномалии включения - возможна ситуация, когда в базу нельзя ввести данные, прежде чем не будут получены и введены некоторые дополнительные сведения.

3. Аномалии удаления - обратная проблема может возникнуть при удалении некоторых данных (возможна потеря полезной информации).

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

Первые три проблемы разрешаются в процессе нормализации отношений.

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

Нормализация отношений


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

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

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

Теперь в дополнение к 1НФ можно определить дальнейшие уровни нормализации - вторую нормальную форму (2НФ), третью нормальную форму (3НФ) и т.д. Считается, что таблица находится во 2НФ, если она находится в 1НФ и удовлетворяет, кроме того, некоторому дополнительному условию, суть которого будет рассмотрена ниже. Таблица находится в 3НФ, если она находится в 2НФ и, помимо этого, удовлетворяет другому дополнительному условию и т.д.

Таким образом, каждая нормальная форма является в некотором смысле более ограниченной, но и более желательной, чем предшествующая. Это связано с тем, что (n+1) - я нормальная форма не обладает некоторыми непривлекательными особенностями, свойственными n-й нормальной форме. Общий смысл дополнительного условия, налагаемого на (n+1) - ю нормальную форму по отношению к n-й нормальной форме, состоит в исключении этих непривлекательных особенностей.

Процедура нормализации отношений обратима. Например, множество отношений, находящихся в 3НФ, можно преобразовать в отношения, находящиеся в 2НФ. Это очень важное свойство нормализации означает, что в процессе нормализации информация не утрачивается.

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

Функциональные зависимости


Пусть X и Y - произвольные подмножества множества атрибутов отношения R. Y функционально зависит от X тогда и только тогда, когда каждое значение множества X связано в точности с одним значением множества Y. Обозначение: X®Y (читается как "X функционально определяет Y"). Левая и правая части символической записи называются детерминантом и зависимой частью соответственно.

П№

Гор

Д№

Кол

П1

Брест

Д1

100

П1

Брест

Д2

100

П2

Минск

Д1

200

П2

Минск

Д2

200

П3

Гродно

Д2

300

П4

Минск

Д2

400

П4

Минск

Д4

400

П4

Минск

Д5

400

Рис. 1. Таблица поставок ПОС

Иначе говоря, если два кортежа отношения R совпадают по значению X, то они также совпадают и по значению Y. Для пояснения рассмотрим приведенную на рис. 1 несколько измененную версию таблицы поставок, изображенной на рис. 2.

Все кортежи отношения ПОС с одинаковым значением атрибута П№ имеют одинаковые значения атрибута Гор. Значит, атрибуты Гор функционально зависят от атрибутов П№: {П№}®{Гор}. Более того, в этом отношении присутствуют и другие постоянные функциональные зависимости: {П№, Д№}®{Кол}, {П№, Д№}®{Гор}, {П№, Д№}®{Гор, Кол}, {П№, Д№}®{П№}, {П№, Д№}®{П№, Д№, Гор, Кол}, а также зависимости, которые являются функциональными в любой данный момент, но не все время, например, {П№}®{Кол}.

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

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

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

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

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


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


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

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

Например, этим требованиям не удовлетворяет таблица, изображенная на рис.3 (данные в поле Д№ не атомарные):

П№

Гор

Д№

Кол

П4

Минск

Д2, Д4, Д5

400

Рис. 3. Пример таблицы, которая не является реляционным отношением

Такие таблицы даже не рассматриваются в реляционных моделях.

Если мы разрабатываем реляционную базу данных, то на первом этапе может быть создана таблица, объединяющая все рассматриваемые данные, например, Поставщики, Детали, Поставки. Таблица на рис.3 представляет собой корректное реляционное отношение. Его называют универсальным отношением проектируемой базы данных. В одно универсальное отношение включаются все представляющие интерес атрибуты и оно может содержать все данные, которые предполагается размещать в базе данных в будущем. Для малых баз данных универсальное отношение может использоваться в качестве отправной точки при их проектировании. Первичным ключом таблицы является комбинация полей П№ и Д№. Эта таблица удовлетворяет всем требованиям 1НФ.

П№

Статус

Гор_П

Д№

Имя_Д

Цв

Вес

Гор_Д

Кол

П1

20

Брест

Д1

Тестер

Черный

250

Борисов

300

П1

20

Брест

Д2

Дозиметр

Серый

700

Минск

200

П1

20

Брест

Д3

Радиометр

Черный

1400

Минск

400

П1

20

Брест

Д4

Часы

Желтый

140

Брест

200

П1

20

Брест

Д5

Рулетка

Красный

200

Пинск

100

П1

20

Брест

Д6

Лом

Черный

5000

Могилев

100

П2

10

Минск

Д1

Тестер

Черный

250

Борисов

300

П2

10

Минск

Д2

Дозиметр

Серый

700

Минск

400

П3

30

Гродно

Д2

Дозиметр

Серый

700

Минск

200

П4

10

Минск

Д2

Дозиметр

Серый

700

Минск

200

П4

10

Минск

Д4

Часы

Желтый

140

Брест

300

Рис. 4. Отношение в первой нормальной форме

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

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

-       Вставка (Insert). Нельзя вставить данные о поставщике (П5), не указав деталь (Null-значение в ключевом поле недопустимо).

-       Удаление (Delete). При удалении некоторого кортежа приходится удалять слишком много другой информации (удаление информации о поставке удаляет информацию о поставщике).

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

Эти аномалии могут быть устранены путем приведения отношения ко второй нормальной форме, разбив его на два.

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

Функциональные зависимости отношений нашей базы данных, приведенных ко 2НФ, показаны на рис. 4, а соответствующие таблицы - на рис. 5.

Сейчас в базу данных можно вводить сведения о поставщиках без сведений об их товаре, при удалении сведений о товаре остаются остальные данные (о поставщиках, например), сведения о городе встречаются один раз и это снимает проблему, связанную с избыточностью информации. Т.е., благодаря декомпозиции мы избавились от многих проблем, присутствовавших в отношении в 1НФ. В то же время, отношения, приведенные на рис.5, могут быть объединены и тогда мы вернемся к отношению, изображенному на рис.3 - значит декомпозиция проведена без потери данных.

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

П№

Статус

Гор_П

П1

20

Брест

П2

10

Минск

П3

30

Гродно

П4

10

Минск

П5

20

Брест


П№

Д№

Кол

П1

Д1

300

П1

Д2

200

П1

Д3

400

П1

Д4

200

П1

Д5

100

П1

Д6

100

П2

Д1

300

П2

Д2

400

П3

Д2

200

П4

Д2

200

П4

Д4

300


Д№

Имя_Д

Цв

Вес

Гор_Д

Д1

Тестер

Черный

250

Борисов

Д2

Дозиметр

Серый

700

Минск

Д3

Радиометр

Черный

1400

Минск

Д4

Часы

Желтый

140

Брест

Д5

Рулетка

Красный

200

Пинск

Д6

Лом

Черный

5000

Могилев

Рис. 7. Отношения в 2НФ

Однако структура отношений, показанных на рис.7, может создать некоторые проблемы, связанные с отношением Поставщик, в котором неключевые атрибуты не являются взаимно независимыми. Зависимость атрибута Статус от атрибута П№ является функциональной и неприводимой, но эта зависимость также транзитивна через атрибут Город - каждое значение П№ определяет значение Город, а каждое значение Город определяет значение Статус. Но если выполняются зависимости А®В и В®С, то выполняется также зависимость А®С. Транзитивные зависимости могут опять привести к аномалиям обновления:

-       Вставка - нельзя включить данные о некотором городе и его статусе, пока в нем нет поставщика.

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

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

Проблема решается приведением отношения Поставщик к третьей нормальной форме через его декомпозицию:

Эта процедура исключает транзитивную зависимость и разрешает все трудности.

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

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

Таким образом, вторым этапом нормализации является создание проекций для исключения транзитивных зависимостей.

В процессе выполнения процедуры нормализации часто возникают ситуации, когда отношение может быть подвергнуто операции декомпозиции несколькими способами. Например, отношение Поставщик (рис.7) с функциональными зависимостями П№®Город и Город®Статус и, следовательно, транзитивной зависимостью П№® Статус. Возможны варианты декомпозиции этого отношения на две проекции, находящиеся в 3НФ:

А: (П№, Город) и (Город, Статус) (так было предложено ранее) и В: (П№, Город) и (П№, Статус)

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

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

В декомпозиции А обе проекции независимы друг от друга в том смысле, что обновления в каждой из проекций могут быть выполнены совершенно независимо друг от друга. В декомпозиции В обновление любой из двух проекций должно контролироваться, чтобы не нарушить исходную зависимость Город®Статус. Т.е., проекции декомпозиции В не являются независимыми друг от друга.

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

-       каждая функциональная зависимость в отношении R является логическим следствием функциональных зависимостей в проекциях R1 и R2;

-       общие атрибуты проекций R1 и R2 образуют потенциальный ключ, по крайней мере, для одной из них.

В рассматриваемом примере в декомпозиции А две проекции независимы, поскольку их общий атрибут Город является потенциальным ключом для второй проекции и каждая функциональная зависимость исходного отношения сохраняется в проекциях. Наоборот, в декомпозиции В две проекции не являются независимыми, т.к. зависимость Город®Статус не может быть получена из функциональных зависимостей этих проекций, хотя их общий атрибут П№ является потенциальным ключом для обеих проекций.

Идея нормализации с декомпозицией на независимые проекции предложена Риссаненом (Rissanen) и называется декомпозицией с сохранением зависимости.

Нормальная форма Бойса-Кодда


До сих пор мы предполагали для простоты, что каждое отношение имеет только один потенциальный ключ - первичный ключ. Данное выше определение 3НФ не совсем подходит, если

-       отношение имеет два или более потенциальных ключа;

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

Поэтому определение 3НФ было дополнено нормальной формой Бойса-Кодда (Boyce-Codd) - НФБК. Его можно сформулировать так:

Отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты являются потенциальными ключами.

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

Комбинация таких условий не часто встречается на практике, поэтому для отношений без таких условий 3НФ и НФБК эквиваленты.

Дадим еще одно определение: Таблица находится в нормальной форме Бойса-Кодда (НФБК), тогда и только тогда, когда любая функциональная зависимость между ее полями сводится к неприводимой функциональной зависимости от потенционального ключа.

Рассмотрим пример, включающий два неперекрывающихся потенциальных ключа:

Поставщик (П№, Имя_П, Статус, Город),

где атрибуты П№ и Имя_П являются потенциальными ключами, а атрибуты Статус и Город совершенно независимы. Диаграмма функциональных зависимостей изображена на рис. 8. Это отношение находится в НФБК. Здесь все детерминанты являются потенциальными ключами, а все стрелки начинаются с потенциальных ключей.

Приведем примеры отношений, в которых потенциальные ключи перекрываются.

Первый пример: Отношение Поставки (П№, Имя_П, Д№, Кол-во).

В этом отношении содержится некоторая избыточность, которая обуславливает аномалии обновления. Потенциальными ключами здесь являются {П№, Д№} и {Имя_П, Д№}, а П№ и Имя_П взаимно определяют друг друга. Это отношение не находится во второй нормальной форме и может быть разделено на две проекции (П№, Имя_П) и (П№, Д№, Кол-во) для получения неприводимых функциональных зависимостей. Но такую же декомпозицию можно предложить исходя из того, что отношение не находится в НФБК, т.к. содержит два детерминанта, которые не являются потенциальными ключами (П№ и Имя_П - детерминанты, поскольку определяют друг друга):

Поставщик (П№, Имя_П) и Поставки 1 (П№, Д№, Кол-во).

Второй пример: Отношение СДП (С, Д, П),

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

-       Каждый студент изучает данный предмет у одного преподавателя;

-       Каждый преподаватель ведет только один предмет (но каждый предмет может преподаваться несколькими преподавателями).

Из первого ограничения следует зависимость {С, Д}®П, из второго - П®Д. На рис.9 показан пример таблицы и диаграммы функциональных зависимостей такого отношения. В рассматриваемом примере есть два перекрывающихся потенциальных ключа - {С, Д} и {С, П}. Отношение находится в 3НФ (присутствующая здесь транзитивная зависимость касается ключевого атрибута), но не находится в НФБК и характеризуется некоторыми аномалиями обновления. Например, если удалить информацию о том, что Олег изучает физику, то мы потеряем информацию о том, что Петров преподает физику. Эта проблема вызвана тем, что П является детерминантом, но не является потенциальным ключом. Для решения этой проблемы исходное отношение надо разбить на две проекции: СП и ПД.

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

Нормальные формы, обоснованные более сложными зависимостями


Д

П

У

Физика

Петров Иванов

Механика Оптика

Математика

Иванов

Геометрия Мат. анализ

Рис. 10. Ненормализованное отношение ДПУ

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

Д

П

У

Петров

Механика

Физика

Петров

Оптика

Физика

Иванов

Механика

Физика

Иванов

Оптика

Математика

Иванов

Геометрия

Математика

Иванов

Мат. анализ

Рис. 11. Нормализованное отношение ДПУ

Рис. 12. Проекции {Д,П} и {Д,У} отношения ДПУ

Очевидно, что отношение ДПУ характеризуется значительной избыточностью и приводит к возникновению аномалий обновления, например, при добавлении нового преподавателя надо вводить по кортежу на каждый учебник. Тем не менее, отношение является полностью ключевым и поэтому находится в НФБК. Возникающие проблемы вызваны тем, что преподаватели и учебники полностью независимы друг от друга. Проблема нормализованного отношения ДПУ не возникла бы, если бы первоначально были разделены все независимые повторяющиеся группы. В нашем случае можно было улучшить ситуацию, заменив отношение ДПУ проекциями {Д, П} и {Д, У} (рис.12). При этом обе проекции являются полностью ключевыми и находятся в НФБК, а их соединение дает исходную таблицу, то есть, декомпозиция выполнена без потерь. Такая декомпозиция не может быть выполнена на основе функциональных зависимостей, которых нет в этом примере. Ее можно осуществить на основе многозначной зависимости. Многозначные зависимости - это обобщение функциональных зависимостей в том смысле, что каждая функциональная зависимость является многозначной, у которой зависимая часть является одноэлементным множеством.

В отношении ДПУ есть две многозначные зависимости: Д®®П и Д®®У.

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

Вторая многозначная зависимость интерпретируется аналогично.

Пусть А, В, С являются произвольными подмножествами множества атрибутов отношения R. В многозначно зависит от А (А®®В) тогда и только тогда, когда множество значений В, соответствующее заданной паре значений (А, С) отношения R, зависит только от А, но не зависит от С.

Очевидно, что многозначная зависимость А®®В выполняется только тогда, когда выполняется многозначная зависимость А®®С. Многозначные зависимости всегда образуют связанные пары: A®®B||C.

Возвращаясь к проблемам отношения ДПУ, можно сказать, что они связаны с существованием многозначных зависимостей, которые не являются функциональными (именно наличие таких зависимостей требует вставлять два кортежа, когда надо добавить данные еще об одном преподавателе физики). Проекции {Д, П} и {Д, У} не содержат многозначных зависимостей и поэтому являются более желательными. Прежде чем дать определение четвертой нормальной формы, познакомимся с теоремой Фейгина (R. Fagin):

Пусть А, В, С являются множествами атрибутов отношения R{А, В, С}. Отношение R будет равно соединению его проекций {А, В} и {А, С} тогда и только тогда, когда для отношения R выполняются многозначные зависимости А®®В и А®®С.

Отношение R находится в четвертой нормальной форме (4НФ) тогда и только тогда, когда в случае существования многозначной зависимости A®®B все остальные атрибуты R функционально зависят от A.

Другими словами:

Отношение R находится в 4НФ, если оно находится в НФБК и все многозначные зависимости отношения R фактически являются функциональными зависимостями от потенциальных ключей.

Отношение ДПУ не находится в 4НФ, поскольку содержит многозначную зависимость, не являющуюся функциональной зависимостью. Однако обе проекции {Д, П} и {Д, У} находятся в 4НФ, которая по сравнению с НФБК позволяет создать улучшенную структуру.

Отметим, что концепция независимых проекций Риссанена, основанная на функциональных зависимостях (отношение R{A,B,C}, удовлетворяющее функциональным зависимостям A→B и B→C, следует разбивать на проекции {A,B} и {B,C}, а не {A,B} и {A,C}), применима и к выбору пути декомпозиции, если вместо функциональных зависимостей присутствуют многозначные зависимости A→→B и A→→C. В Этом случае следует провести декомпозицию на отношения {A,B} и {A,C}.


Во всех рассмотренных до этого момента процедурах нормализации производилась декомпозиция одного отношения на два. Иногда это сделать не удается, но возможна декомпозиция на большее число отношений, каждое из которых обладает лучшими свойствами. Такое отношение называется n-декомпозируемым отношением, для которого n>2.

Рассмотрим, например, отношение П-Д-Пр (Поставщики-Детали-Проекты) (рис.13). Один и тот же поставщик может поставлять несколько типов деталей для разных проектов. Первичным ключом этого отношения является полная совокупность его атрибутов, отсутствуют функциональные и многозначные зависимости (многозначной зависимости нет, т.к. для П1 набор деталей зависит от проекта). Поэтому отношение находится в 4НФ. Однако в нем могут существовать аномалии (не всегда очевидные), которые можно устранить путем декомпозиции на три отношения (декомпозиция на два отношения невозможно, так как обратная операция не позволяет вернуться к исходному отношению). Причем, степень декомпозиции зависит от кортежей. Например, если в исходном отношении убрать один из первых трех кортежей или добавить кортеж (П2, Д1, Пр2), то его можно разделить на две проекции. Если же в исходном отношении убрать последний кортеж или заменить его кортежем (П2, Д1, Пр2), то его нельзя разделить ни на две, ни на три проекции без нарушения целостности данных. Декомпозируемость этого отношения может быть фундаментальным и независящим от времени свойством, если добавить дополнительное ограничение.

Утверждение, что ПДПр равно соединению трех проекций ПД, ДПр, ПрП эквивалентно следующему утверждению:

ЕСЛИпара (П1, Д1) принадлежит отношению ПД

Ипара (Д1, Пр1) принадлежит отношению ДПр

Ипара (Пр,1П1) принадлежит отношению ПрП,

ТОтройка (П1, Д1, Пр1) принадлежит отношению ПДПр.

Это очевидно, так как тройка П1, Д1, Пр1 находится в соединении проекций ПД, ДПр, ПрП. Обратное утверждение также является истинным всегда.

С другой стороны, справедливо утверждение, что пара (П1, Д1) присутствует в отношении ПД, если тройка (П1, Д1, Пр2) присутствует в отношении ПДПр, пара (П1, Пр1) - в отношении ППр, если (П1, Д2, Пр1) есть в ПДПр, а пара (Д1, Пр1) - в отношении ДПр, если (П2, Д1, Пр1) есть в ПДПр. Тогда, если учесть наше первое утверждение, то в таком отношении должен присутствовать и кортеж (П1, Д1, Пр1)! Значит, чтобы обеспечить корректность отношения ПДПр в любой момент времени, необходимо ввести следующее ограничение:

Если кортежи (П1, Д1, Пр2), (П2, Д1, Пр1) и (П1, Д2, Пр1) принадлежат отношению ПДПр, то и кортеж (П1, Д1, Пр1) также принадлежит этому отношению.

Если это утверждение верно всегда, то есть, для всевозможных дополнительных кортежей отношения ПДПр, то будет получено независящее от времени ограничение на данное отношение, которое называется 3D-ограничением. Поскольку 3D-ограничение удовлетворяется тогда, когда отношение равносильно соединению некоторых его проекций, то такое ограничение называется зависимостью соединения.

Можно обратить внимание на то, что в рассматриваемом нами примере существует некоторая цикличность в данных. Критерием n-декомпозиции отношения для n>2 является некоторое циклическое ограничение. Что означает циклическое ограничение? Пусть в нашем примере последний кортеж означает, что Смитт поставляет гаечные ключи для Манхеттенского проекта. Первые три кортежа несут информацию о том, что Смитт поставляет гаечные ключи, Смитт является поставщиком для Манхеттенского проекта и гаечные ключи используются в Манхеттенском проекте. Но из этих утверждений не следует, что именно Смитт поставляет ключи для данного проекта. Если декомпозировать отношение ПДПр, состоящее из этих трех кортежей, на три проекции, то их соединение не будет равно исходному - появится "лишний" четвертый кортеж (П1, Д1, Пр1), о чем было сказано выше. Чтобы избежать такое несоответствие и вводится дополнительное ограничение, которое может быть легко реализовано декомпозицией отношения. Такая декомпозиция возможна без потерь информации только в случае существования зависимости соединения:

Отношение R (X,Y,.,Z) удовлетворяет зависимости соединения * (X,Y,.,Z) в том и только в том случае, когда R восстанавливается без потерь путем соединения своих проекций на X, Y,., Z.

Рассмотрим два примера аномалий, которые существуют в отношении, на которое наложено 3D-ограничение.

П

Д

Пр

П1

Д1

Пр2

П1

Д2

Пр1

Рис. 14.

1. Если в отношение, показанное на рис.14, вставить кортеж (П2, Д1, Пр1), то необходимо вставить и кортеж (П1, Д1, Пр1). Но если вставить кортеж (П1, Д1, Пр1), то добавлять кортеж (П2, Д1, Пр1) не обязательно.

ПДПр



П1

Д1

Пр2

П1

Д2

Пр1

П2

Д1

Пр1

П1

Д1

Пр1

Рис. 15.

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

Сейчас теорему Фейгина можно сформулировать в таком виде:

Отношение R (А, В, С) удовлетворяет зависимости соединения * (АВ, АС) тогда и только тогда, когда оно удовлетворяет многозначным зависимостям А®®В и А®®С.

Зависимость соединения является обобщением понятия многозначной зависимости. Более того, это наиболее общая форма зависимости.

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

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

Менее строгое определение 5НФ:

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

Сейчас можно сказать, что после 3-декомпозиции отношения ПДПр его проекции ПД, ДПр и ППр находятся в 5 нормальной форме, так как для них вовсе нет зависимости соединения.

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

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

Пятая нормальная форма - это последняя нормальная форма, которую можно получить путем декомпозиции. Ее условия достаточно нетривиальны, но она практически не используется.

Процедура нормализации и проектирования


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

1 исключение некоторых типов избыточности;

2 устранение некоторых аномалий обновления, включения и удаления;

3 проектирование макета базы данных, который являлся бы "хорошим" представлением реального мира, был интуитивно понятен и служил хорошей основой для дальнейшего развития;

4 упрощение процесса наложения ограничений целостности.

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

.        Унифицированное отношение должно быть приведено к 1НФ.

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

Другими словами, если отношение имеет составной первичный ключ вида (К1, К2) и включает также поле F, которое функционально зависит от части этого ключа, например, от К2, но не от полного ключа, то в этом случае рекомендуется сформировать другое отношение, содержащее К2 и F (первичный ключ - К2), и удалить F из первоначального отношения:

В результате такого действия будет получен набор отношений в 2НФ.

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

В результате будет получен набор отношений в 3НФ.

.        Отношения в 3НФ рекомендуется разбить на проекции для исключения любых оставшихся функциональных зависимостей, в которых детерминанты не являются потенциальными ключами. В результате будет получен набор отношений в НФБК.

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

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

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

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

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

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

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

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

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

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

.        Указать ограничения целостности проектируемой базы данных и дать (если это необходимо) краткое описание полученных таблиц и их полей.

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

. Пример проектирования базы данных

Назначение и предметная область

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

В базе данных должна храниться следующая информация:

Для каждого отдела: уникальный номер отдела, бюджет и уникальный номер руководителя отдела;

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

для каждого проекта: уникальный номер проекта и бюджет;

для каждого кабинета: уникальный номер кабинета, площадь, номера всех телефонов.

Семантические утверждения (ограничения): Ни один сотрудник не является одновременно руководителем нескольких отделов; ни один сотрудник не работает одновременно более чем в одном отделе; ни один сотрудник не работает одновременно более чем с одним проектом; ни один сотрудник не имеет одновременно более одного кабинета; ни один сотрудник не имеет одновременно более одного телефона; ни один сотрудник не имеет одновременно более одного задания; ни один проект не дается одновременно более чем одному отделу; ни один кабинет не относится одновременно более чем к одному отделу.

Проектирование базы данных

Анализ определенных выше объектов и атрибутов позволяет выделить сущности проектируемой базы данных и построить ее инфологическую модель в виде "Таблицы-связи" (рис. 16).

Рис. 16. Информация о компании, которая должна храниться в базе данных

Исходную иерархическую структуру можно рассматривать как ненормализованное отношение:

ОТДЕЛЫ (ОТД№, БЮДЖЕТ_О, РУК№, СОТРУДНИКИ, ПРОЕКТЫ, КАБИНЕТЫ) CANDIDATE KEY (ОТД№) CANDIDATE KEY (РУК№)

Здесь смысл атрибутов ОТД№ (уникальный номер отдела), БЮДЖЕТ_О, РУК№ (номер руководителя) понятен из названий, а атрибуты СОТРУДНИКИ, ПРОЕКТЫ, КАБИНЕТЫ состоят из значений-отношений. Мы можем расписать их вложенные атрибуты:

ОТДЕЛЫ (ОТД№, БЮДЖЕТ, РУК№, СОТРУДНИКИ (СОТР№, ПРОЕКТ№, КАБ№, ТЕЛ№, РАБОТА (ТЕМА, ОПЛАТА (ДАТА, СУММА))), ПРОЕКТЫ (ПРОЕКТ№, БЮДЖЕТ_П), КАБИНЕТЫ (КАБ№, ПЛОЩАДЬ, ТЕЛЕФОН (ТЕЛ№))) CANDIDATE KEY (ОТД№) CANDIDATE KEY (РУК№)

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

ОТДЕЛЫ1 (ОТД№, БЮДЖЕТ_О, РУК№) PRIMARY KEY (ОТД№) ALTERNATE KEY (РУК№)

СОТРУДН1 (СОТР№, ОТД№, ПРОЕКТ№, КАБ№, ТЕЛ№) PRIMARY KEY (СОТР№)

РАБОТА1 (ТЕМА, СОТР№) PRIMARY KEY (ТЕМА, СОТР№)

ОПЛАТА1 (СОТР№, ТЕМА, ДАТА, СУММА) PRIMARY KEY (СОТР№, ТЕМА, ДАТА)

ПРОЕКТЫ1 (ПРОЕКТ№, БЮДЖЕТ_П, ОТД№) PRIMARY KEY (ПРОЕКТ№)

КАБИНЕТЫ1 (КАБ№, ПЛОЩАДЬ, ОТД№) PRIMARY KEY (КАБ№)

ТЕЛЕФОНЫ1 (ТЕЛ№, КАБ№) PRIMARY KEY (ТЕЛ№)

Далее, можно привести отношения, находящиеся в 1НФ, к эквивалентной совокупности отношений в 2НФ, исключая неприводимые зависимости.

Отношения ОТДЕЛЫ1, СОТРУДН1, ОПЛАТА1, ПРОЕКТЫ1, КАБИНЕТЫ1 и ТЕЛЕФОНЫ1 уже находятся в 2НФ.

Отношение РАБОТА1 является проекцией отношения ОПЛАТА1, следовательно, оно несет избыточную информацию и его можно удалить без потери данных. В то же время, отношение ТЕЛЕФОНЫ1 является проекцией отношения СОТРУДН1, но при его удалении появятся аномалии обновления - данные о телефонах не будут существовать без данных о конкретных сотрудниках.

Покажем сейчас структуру базы данных, отношения которой приведены к 2НФ, используя язык моделирования "Таблица-Связь", который применяется в СУБД MS ACCESS:

ОТДЕЛ2


СОТРУДН2


ОПЛАТА2


ПРОЕКТ2


КАБИНЕТ2


ТЕЛЕФОН2

ОТД№


СОТР№


СОТР№


ПРОЕКТ№


КАБ№


ТЕЛ№

БЮДЖЕТ_О


ОТД№


ДАТА


ОТД№


ПЛОЩАДЬ


КАБ№

РУК№


ПРОЕКТ№


ТЕМА


БЮДЖЕТ_П


ОТД№



КАБ№


СУММА







ТЕЛ№










Далее, исключая транзитивные зависимости, можно привести отношения к эквивалентной совокупности отношений в 3НФ. Единственным отношением, которое не находится в 3НФ, является отношение СОТРУДН, в котором атрибуты КАБ№ и ОТД№ транзитивно зависят от первичного ключа СОТР№ - КАБ№ через ТЕЛ№, а ОТД№ через ПРОЕКТ№ и, кроме того, через КАБ№ и ТЕЛ№. Тогда отношение СОТРУДН можно заменить совокупностью проекций, находящихся в 3НФ:

СОТРУДН3 (СОТР№, ПРОЕКТ№, ТЕЛ№) PRIMARY KEY (СОТР№)

X (ТЕЛ№, КАБ№) PRIMARY KEY (ТЕЛ№)(ПРОЕКТ№, ОТД№) PRIMARY KEY (ПРОЕКТ№)(КАБ№, ОТД№) PRIMARY KEY (КАБ№)

Но отношение X - аналог отношения ТЕЛЕФОН2, Y - проекции отношения ПРОЕКТ2, Z - проекции КАБИНЕТ2 и, значит, могут быть удалены из модели базы данных. Следовательно, модель базы данных, отношения которой приведены к 3НФ, будет выглядеть так:

ОТДЕЛЫ3 (ОТД№, БЮДЖЕТ_О, РУК№) PRIMARY KEY (ОТД№) ALTERNATE KEY (РУК№)

СОТРУДН3 (СОТР№, ПРОЕКТ№, ТЕЛ№) PRIMARY KEY (СОТР№)

ОПЛАТА3 (СОТР№, ТЕМА, ДАТА, СУММА) PRIMARY KEY (СОТР№, ТЕМА, ДАТА)

ПРОЕКТЫ3 (ПРОЕКТ№, БЮДЖЕТ_П, ОТД№) PRIMARY KEY (ПРОЕКТ№)

КАБИНЕТЫ3 (КАБ№, ПЛОЩАДЬ, ОТД№) PRIMARY KEY (КАБ№)

ТЕЛЕФОНЫ3 (ТЕЛ№, КАБ№) PRIMARY KEY (ТЕЛ№)

Каждое из этих отношений находится в НФБК. Более того, они находятся в 4НФ - от возможных многозначных зависимостей мы избавились на этапе приведения модели к 1НФ. Все отношения не содержат видимых аномалий и поэтому можно предполагать, что база данных сконструирована правильно.

Литература


1.      Бек, Кент Шаблоны реализации корпоративных приложений; М.: Вильямс, 2008. - 369 c.

2.      Веймаер, Р.; Сотел, Р. Освой самостоятельно Microsoft SQL Server 2000 за 21 день (+ CD-ROM); М.: Вильямс, 2013. - 549 c.

.        Гандерлой, Майк; Харкинз, Сьюзан Сейлз Автоматизация Microsoft Access с помощью VBA; М.: Вильямс, 2013. - 416 c.

.        Гетц, Кен; Джинберт, Майкл; Литвин, Пол Access 2000. Руководство разработчика. Том 1. Настольные приложения. том 1; Киев: BHV, 2008. - 576 c.

.        Голицына, О.Л. и др. Базы данных; Форум; Инфра-М, 2013. - 399 c.

.        Гринченко, Н.Н. и др. Проектирование баз данных. СУБД Microsoft Access; Горячая Линия Телеком, 2012. - 613 c.

.        Дейт, К. Дж. Введение в системы баз данных; К.: Диалектика; Издание 6-е, 2012. - 360 c.

.        Дэвидсон, Луис проектирование баз данных на SQL Server 2000; Бином, 2009. - 631 c.

.        Дюваль, Поль М. Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска; М.: Вильямс, 2008. - 497 c.

.        Каратыгин, С.; Тихонов, А. Работа в Paradox для Windows 5.0 на примерах; М.: Бином, 2011. - 512 c.

.        Каратыгин, Сергей Access 2000 на примерах. Руководство пользователя с примерами; М.: Лаборатория Базовых Знаний, 2012. - 376 c.

.        Кауфельд, Джон Microsoft Office Access 2003 для "чайников"; М.: Диалектика, 2013. - 439 c.

.        Каучмэн, Джейсон; Швинн, Ульрике Oracle 8i CertifiedProfessionaql DBA Подготовка администраторов баз данных; ЛОРИ, 2009. - 510 c.

.        Луни, Кевин; Брила, Боб Oracle 10g. Настольная книга администратора баз данных; М.: Лори, 2008. - 365 c.

.        Мак-Федрис, Пол Формы, отчеты и запросы в Microsoft Access 2003; М.: Вильямс, 2010. - 416 c.

.        Наумов, А. Н.; Вендров, А. М.; Иванов, В.К. и др. Системы управления базами данных и знаний; М.: Финансы и статистика, 2010. - 352 c.

.        Нимик, Ричард Дж Oracle9i. Оптимизация производительности. Советы и методы; М.: Лори, 2012. - 648 c.

.        Озкарахан, Э. Машины баз данных и управление базами данных; М.: Мир, 2009. - 551 c.

.        Постолит, Анатолий Visual Studio.net: разработка приложений баз данных; СПб: БХВ, 2009. - 544 c.

.        Редько, В. Н.; Бассараб, И.А. Базы данных и информационные системы; Знание, 2011. - 602 c.

.        Тимошок, Т.В. Microsoft Office Access 2007: самоучитель; Вильямс, 2008. - 464 c.

.        Тоу, Дэн Настройка SQL; СПб: Питер, 2009. - 539 c.

Похожие работы на - Проектирование реляционных баз данных

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!