Дополнительные реляционные операции

Дополнительные реляционные операции были предложены Дейтом (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 соответствует единственное значение атрибута В.

Например, в отношении ЭКЗАМЕН (№ студента, код дисциплины, дата, код преподавателя, оценка) можно выявить следующие функциональные зависимости: № студента, код дисциплины® оценка; № студента, код дисциплины, дата® оценка; № студента, код дисциплины, дата, код преподавателя® оценка; № студента, дата, код преподавателя® оценка; код преподавателя, дата® код дисциплины и др. Условием существования данных функциональных зависимостей являются следующие утверждения: по указанной дисциплине данному студенту может быть поставлена только одна оценка за всё время существования базы данных; на одну дату преподаватель может принимать только один экзамен.

Таким образом, в отношении можно выявить несколько функциональных зависимостей.

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

Из предыдущего утверждения можно дать такое определение ключа:

ключ – минимальное множество атрибутов, которое функционально определяет все атрибуты отношения по отдельности.

Наши рекомендации