русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Реляционная алгебра


Дата добавления: 2015-07-09; просмотров: 653; Нарушение авторских прав


Поскольку отношение в реляционной алгебре определяется как множество кортежей, то на отношения распространяются основные операции над множествами – объединение, пересечение, разность и декартово произведение. Операции объединения, пересечения и разности определены для отношений, схемы которых могут отличаться только именами атрибутов (т.е. отношения имеют одинаковую степень и атрибуты определены на одних и тех же доменов).

1. Объединение R3= R1ÈR2

В результат R3 помещаются все кортежи, которые есть в R1 или в R2, причем кортежи, которые одновременно присутствуют в R1 и R2, помещаются в результат один раз.

 

R1 R2

A   C
B   D
C   E

Результат R3

A
B
C
D
E

2. Пересечение R3=R1Ç R2

В R3 помещаются кортежи, которые есть в R1 и в R2.

Для R1 и R2 из предыдущего примера результатом будет единственный кортеж (3,С).

3. Разность R3=R1-R2

В R3 попадут кортежи, которые есть в R1, но нет в R2

R1 R2

A   C
B   D
C   E

Результат R3

A
B

 

Заметим, что операция пересечения может быть вычислена через операции разности R3=R1Ç R2=R1-(R1-R2)

4. Декартово произведение R3=R1´R2

Результат получается путем склейки каждого кортежа отношения R1 с каждым кортежем R2.

c=a*b

a- количество кортежей в R1

b- количество кортежей в R2

c- количество кортежей в R3

При этом степень R3 равна сумме степеней R1 и R2

 

R1 R2

A   C
B   D
C   E

 

Результат R3

A C
B C
C C
A D
B D
C D
A E
B E
C E

 



Кроме перечисленных операций над множествами, Кодд ввел ряд дополнительных операций над отношениями. Операции проекции и выборки определены над одним отношением R1 (унарные операции).

5. Проекция – отбор атрибутов отношения

R2=pI (R1)

I – подмножество атрибутов отношения R1

Степень результата R2 равна½I½ - количество элементов в подмножестве I и может принимать целые значения от 1 до степени R1.

 

пример: проекция R1 из предыдущих примеров по 2-му атрибуту

Результат R2 содержит всего один атрибут.

А
В
С

 

6. Операция выборки (селекции) – отбор кортежей

R2=sq (R1)

q - любое логическое выражение (условие отбора кортежей), в состав которого входят имена атрибутов, операции и константы.

В R2 включают все кортежи из R1, для которых q - истинно. При этом отношение R2 может не содержать ни одного кортежа или совпадать с отношением R1. Например, при условии отбора

первый атрибут > 0

в R2 попадут все кортежи R1, а при условии

перый атрибут > 2

только один кортеж (3,C)

На практике операции выборки и проекции часто сочетаются в одном запросе.

7. Операция соединения R3= R1Q R2

Данная операция определена над двумя отношениями, у которых есть общее подмножество атрибутов (на практике это чаще всего один общий атрибут, по которому и выполняется операция соединения). В отличие от операции декартова произведения при соединении склеиваются только те кортежи R1 и R2, которые имеют одно и то же значение общего атрибута (а не каждый кортеж с каждым). При этом общий атрибут попадает в результат один раз.

Пример. Пусть выполняется операция соединения по первому из атрибутов (содержащему числовые значения)

R1 R2

A   C
B   D
C   E
      F

 

Результат R3

B C
B D
C E

 

Операция соединения эквивалентна операции выборки из декартова произведения отношений R1 и R2.

R3= R1QR2=sq (R1´R2)

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

Следует отметить, что в результат операции соединения не входят кортежи отношений R1 и R2, для которых не находится одинаковых значений в общем атрибуте. Так, в предыдущем примере в результат не вошел кортеж (1,A) из отношения R1 и (4,F) из отношения R2. Ввиду этой особенности данную операцию называют операцией внутреннего соединения.

В языке SQL поддерживается три операции внешнего соединения – левое, правое и полное.

В левом внешнем соединении результат внутреннего соединения дополняется оставшимися кортежами отношения, стоящего слева (в примере это кортеж (1,A) из отношения R1). Поскольку в результате должно быть 3 атрибута, незаполненный атрибут принимает значение NULL, т.е. в результат R3 добавляется кортеж (1,A,NULL).

В правом внешнем соединении результат внутреннего соединения дополняется оставшимися кортежами отношения, стоящего справа (в примере кортеж (4,F) из отношения R2 дополняется значением NULL и получается кортеж (4,NULL,F) отношения R3).

Наконец, в полном внешнем соединении в результат добавляются все несвязанные кортежи, дополненные неопределенными значениями (в примере это два упомянутых выше кортежа).

8. Операция деления R3= R1¸ R2

Для выполнения операции деления отношения R1 и R2 должны иметь общее подмножество атрибутов (обычно один атрибут), причем в отношении R2 это подмножество является множеством его атрибутов (обычно R2 является унарным отношением). Смысл операции поясним на примере.

R1 R2

A   A
B   B
C    
A    
B    
A    

 

В результате получаем отношение

R3

 

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



<== предыдущая лекция | следующая лекция ==>
Манипуляционная часть реляционной модели | Реляционное исчисление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.666 сек.