關係代數 除運算

2021-10-13 09:14:36 字數 1936 閱讀 4072

已知關係r(x,y)x

yx1y1x2

y2x2

y3x2

y1和關係s(y,f)y

fy1f1y2

f3r÷s其實就是判斷關係r中x各個值的像集y是否包含關係s中屬性y的所有值

第一步:找出關係r和關係s中相同的屬性,即y屬性。在關係s中對y做投影(即將y列取出);所得結果如下yy1

y2第二步:被除關係r中與s中不相同的屬性列是x ,關係r在屬性(x)上做取消重複值的投影為;

第三步:求關係r中x屬性對應的像集yxy

x1y1 x

yx2y1y2

y3對比即可發現:

x1的像集只有y1,不能包含關係s中屬性y的所有值,所以排除掉x1;

而x2的像集包含了關係s中屬性y的所有值,所以r÷s的最終結果就是x2

s:學生資訊表

snosname

age***1李強

23男2劉麗

22女5張友

22男sc:學生選課成績表

snocno

grade1k1

832k1855k1

922k5905k5

845k880

c:課程資訊表

cno(課號)

cname(課名)

teacher

k1c語言

王華k5

資料庫原理

程軍k8

編譯原理

程軍檢索至少選修程軍老師所授全部課程的學生姓名sname:

πsname(s⋈(πsno,cno(sc)÷πcno(σteacher=「程軍」(c ))))

檢索選修全部課程的學生姓名:

πsname(s⋈(πsno,cno(sc)÷πcno( c)))

檢索選修課程包含學號為2的同學所修課程的學生學號:

πsno,cno(sc)÷πcno(σsno=「2」(sc))

將除運算用sql語句表示,可以使用not exists

例如:檢索至少選修程軍老師所授全部課程的學生姓名sname,可以表達為,查詢名字為x的學生,對所有的課程y,只要是程軍老師授課,則x選修了y;等價轉換為,不存在這樣的課程y,是程軍老師授課,但學生x沒有選修,sql語言表示如下:

select sname

from s

where

notexists

(select

*from c

where teacher=

'程軍'

andnot

exists

(select

*from sc

where sc.sno=s.sno and sc.cno=c.cno)

);

同理有檢索選修課程包含學號為2的同學所修課程的學生學號,可以表達為,查詢學號為x的學生,對所有的課程y,只要學號為2的同學選修了課程y,那麼x也選修了課程y;等價轉換為,不存在這樣的課程y,學號為2的同學選修了y,而學號x的同學沒有選,sql語言表示如下:

select sno

from s

where

notexists

(select

*from sc a

where sc.sno=

'2'and

notexists

(select

*from sc b

where b.sno=s.sno and b.cno=a.cno)

);

關係代數運算除

1.關係運算的分類 1 基本運算操作 並 差 笛卡爾積 投影和選擇。2 組合運算操作 交 聯接 自然聯接和除。另外,還有幾種擴充的關係代數操作 外聯接 左外聯接和右外聯接 外部並和半聯接。2.除法定義的理解 設兩個關係r和s的元數分別為r和s r s 0 那麼r s是乙個 r s 元的元組的集合。r...

關係代數 除

1.關係運算的分類 1 基本運算操作 並 差 笛卡爾積 投影和選擇。2 組合運算操作 交 聯接 自然聯接和除。另外,還有幾種擴充的關係代數操作 外聯接 左外聯接和右外聯接 外部並和半聯接。2.除法定義的理解 設兩個關係r和s的元數分別為r和s r s 0 那麼r s是乙個 r s 元的元組的集合。r...

資料庫關係代數之除運算

除運算的 含義 給定關係r x,y 和s y,z 其中x,y,z為屬性組。r中的y與s中的y可以有不同的屬性名,但必須出自相同的域集。r與s的除運算得到乙個新的關係p x p是r中滿足下列條件的 元組在x屬性列上的投影 元組在x上分 量值x的象集yx包含s在y上投影的集合。解釋 有關係 r x,y ...