SQL語句實現關係代數中的“除法”
阿新 • • 發佈:2019-02-04
1. 除法運算的定義:
給定關係R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算可以得到一個新的關係P(X),P是R中滿足下列條件的元組在X 屬性列上的投影: 元組在X上的分量值x的像集Y(x)包含S在Y上的投影的集合。
2.求解步驟過程:
第一步:找出關係R和關係S中相同的屬性,即Y屬性。在關係S中對Y做投影(即將Y列取出);
第二步:被除關係R中與S中不相同的屬性列是X,關係R在屬性X上做取消重複值的投影;
第三步:求關係R中X屬性對應的像集Y;
第四步:判斷包含關係,R÷S其實就是判斷關係R中X各個值的像集Y是否包含關係S中屬性Y的所有值。
3.SQL中除法運算的實現
R(X,Y)÷S(Y,Z)的運算用結構化語言SQL 語句可表達為下列形式:
select distinct R.X from R R1
where not exists
(
select S.Y from S
where not exists
(
select * from R R2
where R2.X=R1.X and R2.Y=S.Y
)
)