- •Проектирование баз данных
- •Введение
- •1Задание и требования к типовому расчету
- •1.1Задание
- •1.2График выполнения
- •1.3Содержание пояснительной записки
- •1.4Защита типового расчета
- •2Теоретические сведения
- •2.1Термины и определения
- •2.2Теория нормальных форм
- •2.3Нормализация базы данных методом декомпозиции
- •2.4Проверка декомпозиции методом табло
- •2.5Нормализация базы данных с использованием модели er-диаграмм
- •2.6Основы реляционной алгебры.
- •3Пример выполнения типового расчета (с методическими указаниями и рекомендациями)
- •3.1Построить диаграмму функциональных зависимостей и найти минимальное покрытие отношения
- •3.2Нормализация базы данных
- •3.2.1Анализ предметной области
- •3.2.2Нормализация базы данных методом декомпозиции.
- •3.2.3Проверка нормализации методом табло.
- •3.2.4Нормализация базы данных с использованием модели er-диаграмм.
- •3.3Реляционная алгебра
- •Приложение а. Варианты заданий.
- •Приложение б. Титульный лист
- •Пояснительная записка к типовому расчету
- •Приложение в. Типовые вопросы для защиты
- •Приложение г. Заполненная база данных Учебный процесс
2.6Основы реляционной алгебры.
Основная идея реляционной алгебры состоит в том, что поскольку отношения являются множествами, то средства манипулирования отношениями могут базироваться на традиционных теоретико-множественных операциях, дополненных некоторыми специальными операциями, специфичными для баз данных.
Начальный вариант реляционной алгебры был предложен Коддом. В этом варианте набор основных алгебраических операций состоит из восьми операций, которые делятся на два класса - теоретико-множественные операции и специальные реляционные операции. В состав теоретико-множественных операций входят операции:
объединения отношений;
пересечения отношений;
взятия разности отношений;
прямого произведения отношений.
Специальные реляционные операции включают:
ограничение отношения;
проекцию отношения;
соединение отношений;
деление отношений.
Кроме того, в состав алгебры включается операция присваивания, позволяющая сохранить в базе данных результаты вычисления алгебраических выражений, и операция переименования атрибутов, дающая возможность корректно сформировать заголовок (схему) результирующего отношения.
Объединением отношений R и S: RS является множество всех кортежей, содержащее кортежи из R и S. Отношения R и S должны иметь одинаковые заголовки, иначе объединение не будет выполнено. Дубликаты кортежей удаляются. При выполнении операции объединения двух отношений производится отношение, включающее все кортежи, входящие хотя бы в одно из отношений-операндов.
Пересечением отношений R и S: RS является множество кортежей, одновременно содержащихся как в отношении R так и в отношении S. Отношения R и S должны иметь одинаковые заголовки, иначе пересечение не будет выполнено. Операция пересечения двух отношений производит отношение, включающее все кортежи, входящие в оба отношения-операнда.
Разностью называется отношение R и S: R-S является множество всех кортежей, содержащее кортежи из R и не содержащее кортежи из S. Отношения R и S должны иметь одинаковые заголовки, иначе разность не будет выполнена. Отношение, являющееся разностью двух отношений включает все кортежи, входящие в отношение - первый операнд, такие, что ни один из них не входит в отношение, являющееся вторым операндом.
Декартовым произведением (прямым произведением) R*S отношений R, состоящем из N1 кортежей, и S, состоящем из N2 кортежей, является множество N1*N2 кортежей, полученных конкатенацией (соединением) кортежей первого и второго отношений. Декартово произведение состоит из всех возможных комбинаций кортежей отношения R с кортежами отношения S. Для выполнения декартова произведения не обязательно условие полного совпадения заголовков операндов.
Четыре перечисленные выше операции совпадают с обычными операциями над множествами. Операции объединения, разности и пересечения выполнимы лишь тогда, когда соответствующие атрибуты отношений R и S имеют одинаковые типы данных. Кроме того, для пересечения RS можно задать соотношение:
RS = R – (R – S)
Ограничением по условию _(R) отношения R является множество всех кортежей отношения R, для которых истинен предикат F, представляющий собой комбинацию условий на атрибуты отношения. Иными словами, ограничение по условию есть взятие горизонтальной выборки, то есть в результате остаются те кортежи отношения, которые удовлетворяют условию предиката F. Результатом ограничения отношения по некоторому условию является отношение, включающее кортежи отношения-операнда, удовлетворяющее этому условию.
Проекция. Пусть R=A1*A2*...*An – n-арное отношение. Проекцией (R) отношения на множество X={Ai,...,Aik} атрибутов называется такое множество всех кортежей t=<V1,V2,...,Vk>, что существует кортеж r=<r1,r2,...,rm>, отношения R , в котором rij=Vilj=1,2,...,k.
Другими словами, проекция представляет собой операцию создания множества кортежей путем отбора из каждого кортежа отношения R указанных атрибутов, то есть по сути проекция – взятие вертикальной выборки. При этом могут возникнуть кортежи, у которых все значения атрибутов полностью совпадают. Поскольку отношение определено как множество, все повторяющиеся кортежи в этом случае удаляются.
Операция соединения (называемая также соединением по условию) требует наличия двух операндов – соединяемых отношений и третьего операнда – простого условия. Пусть соединяются отношения R и S. Как и в случае операции ограничения, условие соединения comp имеет вид либо (a comp-op b), либо (a comp-op const), где a и b – имена атрибутов отношений R и S, const – литерально заданная константа, а comp-op – допустимая в данном контексте операция сравнения.
Тогда по определению результатом операции сравнения является отношение, получаемое путем выполнения операции ограничения по условию comp, применяемой к декартовому произведению отношений R и S.
В общем случае применение условия соединения существенно уменьшит мощность результата промежуточного прямого произведения отношений-операндов только в том случае, когда условие соединения имеет вид (a comp-op b), где a и b – имена атрибутов разных отношений-операндов. Поэтому на практике обычно считают реальными операциями соединения именно те операции, которые основываются на условии соединения приведенного вида.
В практических реализациях соединение обычно не выполняется именно как ограничение прямого произведения. Имеются более эффективные алгоритмы, гарантирующие получение такого же результата. Например, сначала выполняются ограничения отношений R и S, а потом декартово произведение.
Имеется важный частный случай соединения – эквисоединение и простое соединение, и важный с практической точки зрения частный случай операции эквисоединения – естественное соединение. Операция соединения называется операцией эквисоединения, если условие соединения имеет вид (a = b), где a и b – атрибуты разных операндов соединения. Для эквисоединения существуют эффективные алгоритмы реализации.
Операция естественного соединения применяется к паре отношений R и S, обладающих (возможно составным) общим атрибутом c (т.е. атрибутом с одним и тем же именем и имеющим полностью одинаковый тип данных). Пусть rs обозначает объединение заголовков отношений R и S, то есть в rs содержаться все атрибуты из R и S, причем дубликаты исключены. Тогда естественное соединение R и S – это спроектированный на rs результат эквисоединения R и S по условию R.c=S.c. Операция проекции необходима для того, чтобы исключить второй атрибут с (атрибутов с будет два, так как атрибут с таким именем содержится и в R, и в S).
Основной смысл операции естественного соединения – возможность восстановления сложной сущности по внешнему ключу. Операция естественного соединения не включается прямо в состав набора операций реляционной алгебры, но она имеет очень важное практическое значение.
Деление отношений. Пусть заданы два отношения – R с заголовком {a1, a2, ..., an, b1, b2, ..., bm} и S с заголовком {b1, b2, ..., bm}. Будем считать, что атрибут bi отношения R и атрибут bi отношения S не только обладают одним и тем же именем, но и имеют полностью одинаковые типы данных. Назовем множество атрибутов {aj} составным атрибутом a, а множество атрибутов {bj} – составным атрибутом b. После этого будем говорить о реляционном делении бинарного отношения R(a,b) на унарное отношение S(b).
Результатом деления R на S является унарное отношение Q(a), состоящее из кортежей v таких, что в отношении R имеются кортежи <v, w> такие, что множество значений {w} включает множество значений атрибута b в отношении S.
Операция переименования производит отношение, тело которого совпадает с телом операнда, но имена атрибутов изменены.
Операция присваивания позволяет сохранить результат вычисления реляционного выражения в существующем отношении БД.
Поскольку результатом любой реляционной операции (кроме операции присваивания) является некоторое отношение, можно образовывать реляционные выражения, в которых вместо отношения-операнда некоторой реляционной операции находится вложенное реляционное выражение.