Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Информационные технологии в экономике и управлении
Посмотреть оригинал

ЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ

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

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

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

Пример 2.1. Отношение: Поставка (Название_фирмы, Адрес, Товар, Кол-во, Цена).

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

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

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

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

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

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

Функциональная зависимость - в отношении R атрибут Y функционально зависит от атрибута X (X и Y могут быть составными) в том и только в том случае, если каждому значению X соответствует в точности одно значение Y: R.X —>R. Y, например: Табельный номер—Фамилия; Должность—>3арплата.Определение 2.Полная функциональная зависимость.

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

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

Взаимонезависимые атрибуты - два или более атрибута взаимо- независимы, если ни один из этих атрибутов не является функционально зависимым от других.

Отношение находится в 1NF тогда и только тогда, когда все входящие в него атрибуты являются атомарными (неделимыми), например: Сотрудник (ТабНомер, Фамилия, Имя, Отчество, Дети); Дети имеет внутреннюю структуру.

Отношение находится в 2NF, если оно находится в 1NF и каждый неключевой атрибут функционально полно зависит от первичного ключа, например: Сотрудник (ТабНомер, Фамилия, Имя, Отчество, Ребенок); Ребенок не зависит функционально полно от первичного ключа (у одного сотрудника может быть несколько Детей и каждый из них не определяется табельным номером сотрудника).

Действия:

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

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

Действия:

  • 1) исключаем транзитивно зависимые атрибуты. В данном случае получаем Сотрудник (ТабНомер, Фамилия, Имя, Отчество, Кабинет);
  • 2) строим одно или несколько дополнительных отношений, в которое войдут транзитивно зависимые атрибуты. В данном случае РабочееМесто (Кабинет, ВнутрТелефон).

Отношение находится в нормальной форме Бойса-Кодда (BCNF), если оно находится в 3NF и в нем отсутствуют зависимости ключей или их частей от неключевых атрибутов.

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

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

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

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

Значение внешнего ключа должно либо быть равным значению первичного ключа отношения, с которым он связан, либо быть полностью неопределенным (NULL).

Что должно случиться при попытке УДАЛЕНИЯ или ОБНОВЛЕНИЯ экземпляра целевой сущности, на которую ссылается внешний ключ? Существует три возможности:

  • 1) операция каскадируется — сущности, ссылающиеся на данную, тоже удаляются (обновляются);
  • 2) операция ограничивается — разрешается применять операцию только для тех сущностей, на которые нет ссылок;
  • 3) устанавливается неопределенное значение всех внешних ключей.
 
Посмотреть оригинал
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Популярные страницы