
- •2. Основные модели данных
- •2.1. Понятие модели данных
- •2.1.1. Типы структур данных
- •2.1.2. Операции над данными
- •2.1.3. Ограничения целостности
- •2.2. Сетевая модель данных (смд)
- •2.3. Иерархическая модель данных (имд)
- •2.4. Реляционная модель данных (рмд)
- •2.4.2. Свойства отношений
- •2.4.3. Достоинства и недостатки рмд
- •2.4.4. Операции реляционной алгебры
- •2.4.5. Преобразования операций реляционной алгебры
- •2.5. Другие модели данных
- •2.5.1. Объектно-реляционные модели данных
- •2.5.2. Объектно-ориентированные модели данных
2.4.5. Преобразования операций реляционной алгебры
Операндами операций реляционной алгебры являются отношения, поэтому для их выполнения необходимо просмотреть все кортежи исходного отношения (или отношений). Следствием этого является большая размерность реляционных операций. Уменьшения размерности операций можно достичь, изменяя последовательность выполняемых операций. В качестве примера приведём отношения R1 и R2, содержащие по 1000 кортежей, причём только 10 кортежей в каждом отношении удовлетворяют условию F. Если выполнять следующую последовательность операций:
F (R1 U R2),
то после выполнения объединения получится 2000 кортежей (если отношения не содержат одинаковых кортежей), а после селекции останется 20 записей. Если изменить последовательность выполнения операций:
F (R1) U F (R2),
то после селекции останется по 10 записей из каждого отношения, объединение которых даст 20 требуемых кортежей. Следовательно, не потребуется хранить промежуточный результат в 2000 кортежей и просматривать его для поиска кортежей, удовлетворяющих условию.
Оптимизация выполнения запросов реляционной алгебры основана на понятии эквивалентности реляционных выражений. Операндами выражений являются переменные-отношения Ri и константы. Каждое выражение реляционной алгебры определяет отображение кортежей переменных-отношений Ri (i=1,…,n) в кортежи единственного отношения, которое получается в результате подстановки кортежей каждого Ri и выполнения всех определяемых выражением вычислений.
Два выражения реляционной алгебры считаются эквивалентными, если они описывают одно и то же отображение.
Существуют законы, которые в соответствии с этим определением позволяют выполнять эквивалентные преобразования выражений реляционной алгебры:
Закон коммутативности для декартовых произведений:
R1 R2 = R2 R1
Закон коммутативности для соединений (F – условие соединения):
R1F R2 = R2 F R1
Закон ассоциативности для декартовых произведений:
(R1 R2 ) R3 = R1 (R2 R3)
Закон ассоциативности для соединений (F1,F2 – условия):
(R1F R2 ) F R3 = R1 F (R2 F R3)
Комбинация селекций (каскад селекций):
F1 (F2 (R)) = F1/\F2(R)
Комбинация проекций (каскад проекций):
A1,A2,...,Am ( B1,B2,...,Bn(R)) = A1,A2,...,Am (R)
где {Am} {Bn}.
Перестановка селекции и проекции:
F ( A1,A2,...,Am (R)) = A1,A2,...,Am (F (R))
Перестановка селекции с объединением:
F (R1 U R2)=F (R1) U F (R2)
Перестановка селекции с разностью:
F (R1 - R2)=F (R1) - F (R2)
Перестановка проекции с декартовым произведением:
A1,A2,...,Am ( R1 R2 ) = C1,C2,...,Cn(R1) B1,B2,...,Bk(R2)
где {Cn} {Am}, {Bk} {Am} и атрибуты Cn представлены в отношении R1, а атрибуты Bk - в отношении R2.
Перестановка проекции с объединением:
A1,A2,...,Am ( R1 U R2 ) = A1,A2,...,Am (R1) U A1,A2,...,Am (R2)
Перестановка селекции с декартовым произведением:
F (R1 R2) = F (R1) R2
если F содержит атрибуты, присутствующие только в R1;
F (R1 R2) = R1 F (R2)
если F содержит атрибуты, присутствующие только в R2;
F (R1 R2) = F1(R1) F2 (R2)
если F=F1/\F2, и F1 содержит атрибуты, присутствующие только в R1, а F2 содержит атрибуты, присутствующие только в R2;
F ( R1 R2 ) = F2 (F1( R1) R2 )
если F=F1/\F2, и F1 содержит атрибуты, присутствующие только в R1, а F2 содержит атрибуты, присутствующие и в R1, и в R2.