4 Реляционная модель данных. Определение модели. Целостность базы данных.
Реляционная модель данных некоторой предметной области представляет собой набор отношений, изменяющихся во времени. При создании информационной системы совокупность отношений позволяет хранить данные об объектах предметной области и моделировать связи между ними. Элементы реляционной модели:
Отношение представляет собой двумерную таблицу, содержащую некоторые данные.
Сущность есть объект любой природы, данные о котором хранятся в базе данных. Данные о сущности хранятся в отношении.
Атрибуты представляют собой свойства, характеризующие сущность. В структуре таблицы каждый атрибут именуется и ему соответствует заголовок некоторого столбца таблицы.
Домен представляет собой множество всех возможных значений определенного атрибута отношения.
Схема отношения (заголовок отношения) представляет собой список имен атрибутов.
Контроль целостности связей обычно означает анализ содержимого двух таблиц на соблюдение следующих правил:
• каждой записи основной таблицы соответствует нуль или более записей дополнительной таблицы;
• в дополнительной таблице нет записей, которые не имеют родительских записей в основной таблице;
• каждая запись дополнительной таблицы имеет только одну родительскую запись основной таблицы.
Опишем действие контроля целостности при манипулировании данными в таблицах. Рассмотрим три основные операции над данными двух таблиц:
• ввод новых записей;
• модификация записей;
• удаление записей.
При вводе новых записей возникает вопрос определения последовательности ввода записей в таблицы, такой, чтобы не допустить нарушение целостности. Исходя из приведенных правил, логичной является схема, при которой данные сначала вводятся в основную таблицу, а потом - в дополнительную. Очередность ввода может быть установлена на уровне целых таблиц или отдельных записей (случай одновременного ввода в несколько открытых таблиц).
В процессе заполнения основной таблицы контроль значений полей связи ведется, как контроль обычного ключа (на совпадение со значениями тех же полей других записей). Заполнение полей связи дополнительной таблицы контролируется на предмет совпадения со значениями полей связи основной таблицы. Если вновь вводимое значение в поле связи дополнительной таблицы не совпадет ни с одним соответствующим значением в записях основной таблицы, то ввод такого значения должен блокироваться.
Модификация записей. Изменение содержимого полей связанных записей, не относящихся к полям связи, должно происходить обычным образом.
При редактировании полей связи дополнительной таблицы требованием является то, чтобы новое значение поля связи совпадало с соответствующим значением какой-либо записи основной таблицы.
В операциях удаления записей связанных таблиц большую свободу имеют записи дополнительной таблицы. Удаление их должно происходить практически бесконтрольно.
5 Языки запросов в реляционных субд.
Операции, выполняемые над отношениями, можно разделить на две группы. Первую группу составляют операции над множествами к которым относятся операции: объединения, пересечения, разности, деления и декартова произведения. Вторую группу составляют специальные операции над отношениями, к которым, в частности, относятся операции проекции, соединения, выбора.
В различных СУБД реализована некоторая часть операций над отношениями, определяющая в какой-то мере возможности данной СУБД и сложность реализации запросов к БД.
В реляционных СУБД для выполнения операций над отношениями используются две группы языков, имеющие в качестве своей математической основы теоретические языки запросов, предложении Э. Коддом:
• реляционная алгебра;
• реляционное исчисление.
Эти языки представляют минимальные возможности реальных языков манипулирования данными в соответствии с реляционной моделью и эквивалентны друг другу по своим выразительным возможностям.
В реляционной алгебре операнды и результаты всех действий являются отношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемых к отношениям. Операторы состоят из операндов, в роли которых выступают отношения, и реляционных операций. Результатом реляционной операции является отношение.
Языки исчислений, в отличие от реляционной алгебры, являются непроцедурными (описательными, или декларативными) и позволяют выражать запросы с помощью предиката первого порядка (высказывания в виде функции), которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате. Для этих языков характерно наличие наборов правил для записи запросов. В частности, к языкам этой группы относится SQL.
Запрос представляет собой специальным образом описанное требование, определяющее состав производимых над БД операций по выборке, удалению или модификации хранимых данных.
Для подготовки запросов с помощью различных СУБД чаще всего используются два основных языка описания запросов:
• язык QBE (Query By Example) - язык запросов по образцу;
• SQL (Structured Query Language) - структурированный язык запросов.
По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Главное отличие между ними заключается в способе формирования запросов. Язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.