Все шпаргалки / Базы данных / 

Реализация реляционной алгебры средствами оператора SELECT (Реляционная полнота SQL)

Для того, чтобы показать, что язык SQL является реляционно полным, нужно показать, что любой реляционный оператор может быть выражен средствами SQL. На самом деле достаточно показать, что средствами SQL можно выразить любой из примитивных реляционных операторов. Оператор декартового произведенияРеляционная алгебра: Оператор SQL: SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … FROM A, B;Оператор проекцииРеляционная алгебра: Оператор SQL: SELECT DISTINCT X, Y, …, Z FROM A;Оператор выборкиРеляционная алгебра: , Оператор SQL: SELECT * FROM A WHERE c;Оператор объединенияРеляционная алгебра: Оператор SQL: SELECT * FROM A UNION SELECT * FROM B;Оператор вычитанияРеляционная алгебра: Оператор SQL:SELECT * FROM A EXCEPT SELECT * FROM BРеляционный оператор переименования RENAME выражается при помощи ключевого слова AS в списке отбираемых полей оператора SELECT. Таким образом, язык SQL является реляционно полным. Остальные операторы реляционной алгебры (соединение, пересечение, деление) выражаются через примитивные, следовательно, могут быть выражены операторами SQL. Тем не менее, для практических целей приведем их. Оператор соединенияРеляционная алгебра: Оператор SQL: SELECT A.Поле1, A.Поле2, …, B.Поле1, B.Поле2, … FROM A, B WHERE c;Оператор пересеченияРеляционная алгебра: Оператор SQL: SELECT * FROM A INTERSECT SELECT * FROM B;Оператор деленияРеляционная алгебра: Оператор SQL: SELECT DISTINCT A.X FROM A WHERE NOT EXIST (SELECT * FROM B WHERE NOT EXIST (SELECT * FROM A A1 WHERE A1.X = A.X AND A1.Y = B.Y));