Дополнительные реляционные операции
Дополнительные реляционные операции были предложены Дейтом (C.J. Date). Они предназначены для расширения возможностей реляционной алгебры с точки зрения описания запросов к базе данных.
Операция переименования позволяет разрешать конфликт имен атрибутов путём изменения имени атрибута.
Возможная форма записи:
RENAME R A AS B,
где R – имя отношения;
A – старое имя атрибута;
B – новое имя атрибута.
Операция расширения позволяет добавить к существующему отношению, как правило, вычисляемый атрибут. Возможная форма записи:
EXTEND R ADD F AS B,
где R – исходное отношение;
F – вычисляемое выражение;
B – новое имя.
В выражении можно использовать обычные арифметические операции и некоторые агрегатные функции, такие как: COUNT (количество), SUM (сумма), AVG (среднее), MAX (максимальное), MIN (минимальное). Например:
EXTEND (R JOIN S) ADD (вес * количество) AS Общий_вес,
где к отношению, полученному в результате операции естественного соединения отношений R и S, добавляется в качестве нового атрибута результат произведения значений атрибутов вес и количество.
Операции переименования и расширения можно распространить на несколько новых атрибутов.
Операция подведения итогов предназначена для выполнения вычислений по группе кортежей и может быть описана следующим образом:
SUMMARISE R BY (M) ADD F AS B,
где R – исходное отношение;
M – подмножество атрибутов отношения R;
F – вычисляемое выражение (см. операцию расширения);
B – имя нового атрибута.
Результатом операции является новое отношение, атрибутами которого становятся атрибуты множества М и вычисляемый атрибут В. Кортежи отношения являются результатом выполнения проекции отношения R на множество М и вычисления атрибута В.
Например:
SUMMARISE ЭКЗАМЕН BY (Номер студента) ADD AVG Оценка AS Средний_балл.
Операция присваивания позволяет сохранить результат операций над отношениями:
R := S.
Примеры записи запросов
Запрос 1. По какой дисциплине получено максимальное количество двоек?
(SUMMARISE (ЭКЗАМЕН WHERE Оценка = 2) BY (Код дисциплины) ADD COUNT Оценка AS Количество_двоек) JOIN ДИСЦИПЛИНА.
Запрос 2. Вывести сведения о студентах, которые сдавали экзамен по базам данных 11.01 2006 г.
(ЭКЗАМЕН JOIN ДИСЦИПЛИНА) WHERE Дата = "11.01.2006" AND Название дисциплины = "Базы данных".
Реляционное исчисление
Реляционное исчисление позволяет описывать запросы, не указывая, с помощью каких операций может быть получен ожидаемый результат, но, определяя, свойства, которыми должно обладать искомое отношение.
В основе реляционного исчисления лежит аппарат логики предикатов первого порядка.
Различают: исчисление кортежей и исчисление доменов.
Достаточно подробное описание аппарата реляционного исчисления приведено в учебнике.
Рассмотрим пример записи операции объединения средствами исчисления кортежей:
{t │ R(t) V S(t)},
где t – кортеж;
R(t) и S(t) – предикаты, проверяющие принадлежность кортежа соответствующему отношению.
Пример записи запроса:
{t │ЭКЗАМЕН(t) Λ Оценка(t) = 5},
где t – кортеж;
ЭКЗАМЕН(t) – предикат проверки принадлежности кортежа отношению ЭКЗАМЕН;
Оценка(t) – значение атрибута Оценка в кортеже t.
Проектирование реляционной модели
Нормализация модели
Нормализация – это представление данных в виде двумерных таблиц, удовлетворяющих определённым ограничениям.
Нормализация осуществляется путём разбиения одного отношения на два или более отношений.
Критерий нормализации – каждый неключевой атрибут встречается в отношениях не более одного раза, т.е. "каждый факт фиксируется один раз".
Цель нормализации – разрешение проблем вставки, обновления, удаления и избыточности данных при минимально возможном числе отношений в модели.
Проблема вставки: необходимо вставить в отношение кортеж, в котором не все значения на момент вставки известны. Наличие пустых полей (⊔, 0 или 0.0) может привести к ошибочным результатам при выполнении запросов, например, при подсчёте средних значений.
Проблема обновления: если в базе содержится много избыточных данных, то необходимо одновременно обновлять все данные.
Проблема удаления: необходимость удаления кортежа по какому-то атрибуту может привести к удалению объекта, к которому это поле относится, если объект не встречался в других кортежах. Например, отношение ПОСТАВКА (код поставщика, название поставщика, телефон поставщика, №партии товара) содержит следующий кортеж:
<101, ОАО "Щит", 22-22-22, 2099>.
Пусть реальной поставки партии товара не произошло, и возникла необходимость удалить информацию о данной партии. При удалении кортежа будет удалена и справочная информация о поставщике и, если данный поставщик был описан только в этом кортеже, то вся информация о данном поставщике будет потеряна.
Проблема избыточности связана с проблемой обновления и удаления и может быть сформулирована следующим образом: дублирование данных не должно быть избыточным.
Нормализация позволяет снять все перечисленные проблемы. Основным недостатком нормализации является увеличение числа отношений в модели, поэтому на физическом уровне проектирования базы данных может быть осуществлена денормализация.
Функциональная зависимость
Нормализация реляционной модели основана на понятии функциональной зависимости.
Пусть дано отношение R.
Атрибут А функционально определяет атрибут В (А ® В), если каждому значению атрибута А в проекции R [A, B] соответствует единственное значение атрибута В. Например, в отношении СТУДЕНТ (№ зачётной книжки, Фамилия, Имя, Отчество, Дата рождения) можно выделить следующие функциональные зависимости: № зачётноё книжки ® Фамилия, № зачётной книжки ® Имя, № зачётной книжки ® Отчество, № зачётной книжки ® Дата рождения. В то же время, Фамилия функционально не определяет № зачётной книжки, так как одной и той же фамилии могут соответствовать несколько зачётных книжек.
Если А ® В и В ® А, то имеет место взаимно-однозначная зависимость (А « В), например, ИНН « № зачётной книжки.
Определение функциональной зависимости можно распространить на любое число атрибутов в левой части: А1, А2, … ,Аn ® В, если каждому сочетанию значений атрибутов А1, А2,…, Аn соответствует единственное значение атрибута В.
Например, в отношении ЭКЗАМЕН (№ студента, код дисциплины, дата, код преподавателя, оценка) можно выявить следующие функциональные зависимости: № студента, код дисциплины® оценка; № студента, код дисциплины, дата® оценка; № студента, код дисциплины, дата, код преподавателя® оценка; № студента, дата, код преподавателя® оценка; код преподавателя, дата® код дисциплины и др. Условием существования данных функциональных зависимостей являются следующие утверждения: по указанной дисциплине данному студенту может быть поставлена только одна оценка за всё время существования базы данных; на одну дату преподаватель может принимать только один экзамен.
Таким образом, в отношении можно выявить несколько функциональных зависимостей.
Если спроектированная реляционная модель удовлетворяет критерию нормализации, то единственными функциональными зависимостями в отношениях должны быть зависимости вида К ® В, где К – первичный ключ отношения.
Из предыдущего утверждения можно дать такое определение ключа:
ключ – минимальное множество атрибутов, которое функционально определяет все атрибуты отношения по отдельности.