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

ЦЕЛИ ПРОЕКТИРОВАНИЯ

Основные цели:

  • • понизить избыточность данных;
  • • повысить надежность и достоверность данных (т.е. устранить некоторые аномалии).

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

  • • какие отношения включать в состав базы данных;
  • • сколько отношений включить в состав базы данных.

Почему это важно?

Рассмотрим некоторый искусственный пример. Использовавшаяся ранее в примерах база данных ПОСТАВКА ТОВАРОВ включала информацию о поставщиках (Номер поставщика — sld, Имя поставщика — sName, Место дислокации — city), товарах (Номер товара — pld, Название — pName, Стоимость — price) и поставках (какой поставщик поставляет тот или иной товар и в каком Количестве — qty).

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

ПОСТАВКА ИЗДЕЛИЙ (sld. sName, city, old. pName, price, qty). Но тогда возникают определенные проблемы:

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

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

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

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

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

Реляционная модель данных поддерживает следующие внутренние ограничения:

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

Явные ограничения, в свою очередь, можно разбить на две группы:

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

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

 
< Пред   СОДЕРЖАНИЕ     След >