Реляционная алгебра. Объединение, пересечение, вычитание и декартово произведение. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Реляционная алгебра. Объединение, пересечение, вычитание и декартово произведение.



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

К бинарным односхемным операциям относят объединение, разность и пересечение отношений.

Объединением (union) односхемных отношений R и S называется отношение T = R U S, которое включает в себя все строки обоих отношений без повторов. (SQL-запрос: SELECT Имя, Возраст, Вес FROM Персоны UNION SELECT Имя, Возраст, Вес FROM Персонажи)

Разностью (difference) односхемных отношений R и S (R – S) называется множество строк R, не входящих в S. (SQL-запрос: SELECT Имя, Возраст, Вес FROM Персоны

EXCEPT SELECT Имя, Возраст, Вес FROM Персонажи)

Пересечение (intersection) двух односхемных отношений R и S есть подмножество строк, принадлежащих обоим отношениям. Это вспомогательная операция, её можно выразить через разность: R ∩ S = R – (R – S). (SQL-запрос: SELECT Имя, Возраст, Вес FROM Персоны INTERSECT SELECT Имя, Возраст, Вес FROM Персонажи)

Ключевое слово INTERSECT может отсутствовать в некоторых СУБД, однако оно включено в стандарт.

Декартово произведение – это все возможные комбинации элементов доменов. (SQL-запрос: Так, для получения декартова произведения Вид_блюд и Трапезы надо выдать запрос SELECT Вид_блюд.*, Трапезы.*

FROM Вид_блюд, Трапезы;)


Реляционная алгебра. Выборка, проекция, соединение и деление.

Реляционная алгебра — формальная система манипулирования отношениями в реляционной модели данных.

Выборка. Операция выборки — унарный оператор, записываемый как σaθb(R) или σaθv(R), где: a, b — имена атрибутов. θ — оператор сравнения из множества {<; ≤; =; ≥; >}. v — константа. R — отношение (в оригинале — relation, однако как видно из примера, подразумевается не столько взаимосвязь таблиц, сколько взаимосвязь/соотношение различных фактов в рядах этих таблиц). Выборка σaθb(R) (или σaθv(R)) выбирает все наборы значений R, для которых функция a θ b (или a θ v) будет истинна. (Пример σВозраст ≥ 34 или Эквивалентный SQL-запрос: SELECT * FROM Персоны WHERE Возраст >= 34).

Проекция. Операция выборки — унарный оператор, записываемый как πa1,…,an(R) где a1,…,an — спиоск полей, подлежащих выборке. Результатом такой выборки будет набор последовательностей значений отношения R, в котором будут присутствовать только поля, перечисленные в списке a1,…,an с естественным уничтожением потенциально возникающих кортежей-дубликатов. (Пример: πВозраст,Вес или эквивалентный SQL-запрос: SELECT DISTINCT Возраст, Вес FROM Персоны)

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

Соединение. Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать. (SQL-запрос: SELECT * FROM Мультфильмы, Каналы WHERE Название_канала = Код_канала)

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


Реляционное исчисление.

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

В реляционной модели определяются два базовых механизма манипулирования данными: * основанная на теории множеств реляционная алгебра; * основанное на математической логике реляционное исчисление.

Формулы реляционного исчисления определяются над отношениями реляционных баз данных, и результатом вычисления является отношение.

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

Пример: Пусть даны два отношения:

СОТРУДНИКИ (СОТР_НОМЕР, СОТР_ИМЯ, СОТР_ЗАРПЛ, ОТД_НОМЕР)

ОТДЕЛЫ(ОТД_НОМЕР, ОТД_КОЛ, ОТД_НАЧ)

Необходимо узнать имена и номера сотрудников, являющихся начальниками отделов с количеством работников более 10.

(1).выполнить соединение отношений СОТРУДНИКИ и ОТДЕЛЫ по условию СОТР_НОМ = ОТДЕЛ_НАЧ.

С1 = СОТРУДНИКИ [СОТР_НОМ = ОТД_НАЧ] ОТДЕЛЫ

(2).из полученного отношения произвести выборку по условию ОТД_КОЛ > 10

С2 = С1 [ОТД_КОЛ > 10].

(3).спроецировать результаты предыдущей операции на атрибуты СОТР_ИМЯ, СОТР_НОМЕР

С3 = С2 [СОТР_ИМЯ, СОТР_НОМЕР]

На языке реляционного исчисления данный запрос может быть записан как:

Выдать СОТР_ИМЯ и СОТР_НОМ для СОТРУДНИКИ таких, что

существует ОТДЕЛ с таким же, что и СОТР_НОМ значением ОТД_НАЧ

и значением ОТД_КОЛ большим 50.

 

Указываются только характеристики результирующего отношения, но не указываем о способе его формирования. СУБД сама должна решить какие операции и в каком порядке надо выполнить над отношениями СОТРУДНИКИ и ОТДЕЛЫ.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 789; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.24.134 (0.005 с.)