РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ

РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ

Реляционные модели данных в настоящее время приобрели наибольшую популярность, и практически все современные СУБД ориентированы именно на такое представление данных.

Реляционную модель можно представить как особый метод рассмотрения данных, содержащий и собственно данные (в виде таблиц), и способы работы и манипуляции с ними (в виде связей). Реляционная модель предполагает три концептуальных элемента: структура, целостность и обработка данных, как, впрочем, и большинство не реляционных моделей. В этих элементах есть свои специальные понятия, которые для дальнейшего изложения необходимо кратно пояснить [38].

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

Отношение содержит две части: заголовок и собственно содержательную часть. Заголовок содержит конечное множество атрибутов, а содержательная часть (тело отношения) — множество пар имени атрибута и его значения. Например, на рис. 16.1 KOD, NAME и SUMM, содержащиеся в заголовке, являются атрибутами, а, скажем, пары SUMM — 25.50 или KOD — 5216 являются элементами тела отношения.

Б.1. Пояснение понятий реляционных БД

Рис. 1Б.1. Пояснение понятий реляционных БД

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

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

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

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

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

Если отношение С связывают отношения А и Б, то оно должно включать внешние ключи, соответствующие первичным ключам отношений А и Б. Таким образом, при рассмотрении проблемы выбора способа связи отношений в БД возникает вопрос о том, каковы же должны быть внешние ключи. При этом для каждого внешнего ключа необходимо решить проблему, связанную с возможностью (или невозможностью) появления во внешних ключах неопределенных значений (NULL — значений — значений атрибута для отсутствующей информации). Другими словами, может ли существовать некоторый кортеж в отношении, для которого неизвестен кортеж в связанном с ним отношении.

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

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

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

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

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

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

Основных операторов в реляционной алгебре восемь:

  • • выборка отношений;
  • • проекция отношения;
  • • объединения отношений;
  • • пересечение отношений;
  • • вычитание отношений;
  • • произведение отношений;
  • • соединение отношений;
  • • деление отношений.

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

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

Основная идея реляционной алгебры состоит в том, что средства манипулирования отношениями, рассматриваемыми как множества, основаны на традиционных множественных операциях, дополненных некоторыми специфичными операциями для БД [39].

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >