




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1
關(guān)係模型
22.1關(guān)係模型
關(guān)係模型就是用二維表格結(jié)構(gòu)來表示實(shí)體及實(shí)體之間聯(lián)繫的模型。關(guān)係模型是各個(gè)關(guān)係的框架的集合,即關(guān)係模型是一些表格的格式,其中包括關(guān)係名、屬性名、關(guān)鍵字等。例如,教學(xué)資料庫(kù)中教師與課程的關(guān)係模型如圖2.1所示。教師關(guān)係T課程關(guān)係C
授課關(guān)係SC圖2.1教師—課程資料庫(kù)的關(guān)係模型TNO教師號(hào)TN姓名SEX性別AGE年齡PROF職稱SAL工資COMM崗位津貼DEPT系別CNO課程號(hào)CN課程名CT課時(shí)
TNO教師號(hào)CNO課程號(hào)3從各個(gè)關(guān)係的框架中,我們可以很容易看出哪兩個(gè)關(guān)係之間有聯(lián)繫。例如:教師關(guān)係和授課關(guān)係有公共的屬性“教師號(hào)”,則表明這兩個(gè)關(guān)係有聯(lián)繫。而課程關(guān)係和授課關(guān)係有公共的屬性“課程號(hào)”,則表明這兩個(gè)關(guān)係也有聯(lián)繫。至於元組之間的聯(lián)繫,則與具體的數(shù)據(jù)有關(guān)。只有在公共屬性上具有相同屬性值的元組之間才有聯(lián)繫。4由上例可以看出,在一個(gè)關(guān)係中可以存放兩類資訊:一類是描述實(shí)體本身的資訊一類是描述實(shí)體(關(guān)係)之間的聯(lián)繫的資訊在層次模型和網(wǎng)狀模型中,把有聯(lián)繫的實(shí)體(元組)用指針鏈接起來,實(shí)體之間的聯(lián)繫是通過指針來實(shí)現(xiàn)的。而關(guān)係模型則採(cǎi)用不同的思想,即用二維表來表示實(shí)體與實(shí)體之間的聯(lián)繫,這就是關(guān)係模型的本質(zhì)所在。所以,在建立關(guān)係模型時(shí),只要把的所有的實(shí)體及其屬性用關(guān)係框架來表示,同時(shí)把實(shí)體之間的關(guān)係也用關(guān)係框架來表示,就可以得到一個(gè)關(guān)係模型。如上例中的教師—課程資料庫(kù)的關(guān)係模型就是這樣建立的。52.2關(guān)係的定義在關(guān)係模型中,數(shù)據(jù)是以二維表的形式存在的,這個(gè)二維表就叫做關(guān)係。關(guān)係理論是以集合代數(shù)理論為基礎(chǔ)的,因此,我們可以用集合代數(shù)給出二維表的“關(guān)係”定義。為了從集合論的角度給出關(guān)係的定義,我們先引入域和笛卡爾積的概念。62.2.1域(Domain)域是一組具有相同數(shù)據(jù)類型的值的集合,又稱為值域。(用D表示)例如整數(shù)、實(shí)數(shù)、字串的集合。域中所包含的值的個(gè)數(shù)稱為域的基數(shù)(用m表示)。關(guān)係中用域表示屬性的取值範(fàn)圍。例如:D1={李力,王平,劉偉} m1=3 D2={男,女} m2=2 D3={47,28,30} m3=3 其中,D1,D2,D3為功能變數(shù)名稱,分別表示教師關(guān)係中姓名、性別、年齡的集合。功能變數(shù)名稱無排列次序,如D2={男,女}={女,男}72.2.2笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Dn(它們可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡爾積為D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。由定義可以看出,笛卡爾積也是一個(gè)集合。其中:1.元素中的每一個(gè)di叫做一個(gè)分量(Component),來自相應(yīng)的域(di∈Di)2.每一個(gè)元素(d1,d2,d3,…,dn)叫做一個(gè)n元組(n-tuple),簡(jiǎn)稱元組(Tuple)。但元組不是di的集合,元組的每個(gè)分量(di)是按序排列的。如:(1,2,3)≠(2,3,1)≠(1,3,2);而集合中的元素是沒有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。83.若Di(i=1,2,……n)為有限集,Di中的集合元素個(gè)數(shù)稱為Di的基數(shù),用mi(i=1,2,……n)表示,則笛卡爾積D1×D2×……×Dn的基數(shù)M(即元素(d1,d2,……dn)的個(gè)數(shù))為所有域的基數(shù)的累乘之積,即
M=例如:上述表示教師關(guān)係中姓名、性別兩個(gè)域的笛卡爾積為:D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(劉偉,男),(劉偉,女)}其中:李力、王平、劉偉、男、女都是分量(李力,男),(李力,女)等是元組其基數(shù)M=m1×m2=3*2=6元組的個(gè)數(shù)為694.笛卡爾積可用二維表的形式表示。例如,上述的6個(gè)元組可表示成表2.1。表2.1D1和D2的笛卡爾積由上例可以看出,笛卡爾積實(shí)際是一個(gè)二維表,表的框架由域構(gòu)成,表的任意一行就是一個(gè)元組,表中的每一列來自同一域,如第一個(gè)分量來自D1,第二個(gè)分量來自D2。姓名性別李力男李力女王平男王平女劉偉男劉偉女102.2.3關(guān)係(Relation)笛卡爾積D1×D2×…×Dn的任一子集稱為定義在域D1,D2,…Dn上的n元關(guān)係(Relation),可用R(D1,D2……Dn)表示如上例D1×D2笛卡爾積的子集可以構(gòu)成教師關(guān)係T1,如下表:姓名性別李力男王平女劉偉男11幾點(diǎn)說明:1.
R為關(guān)係名,n稱為關(guān)係的目或度(Degree)。當(dāng)n=1時(shí),稱為單元關(guān)係。當(dāng)n=2時(shí),稱為二元關(guān)係?!?dāng)n=n時(shí),稱為n元關(guān)係。如上例為二元關(guān)係,關(guān)係名為T。122.該子集中的元素是關(guān)係中的元組,用r表示,關(guān)係中元組個(gè)數(shù)是關(guān)係的基數(shù)。如(李力,男),(王平,女),(劉偉,男)為三個(gè)元組,關(guān)係T的基數(shù)為3。如果一個(gè)關(guān)係的元組個(gè)數(shù)是無限的,則稱為無限關(guān)係;如果一個(gè)關(guān)係的元組個(gè)數(shù)是有限的,則稱為有限關(guān)係。由於電腦存儲(chǔ)系統(tǒng)的限制,我們一般不去處理無限關(guān)係,而只考慮有限關(guān)係。3.
同樣可以把關(guān)系看成一個(gè)二維表。其中,(1)表的框架由域Di(i=1,2,……n)構(gòu)成;(2)表的任意一行對(duì)應(yīng)一個(gè)元組;(3)表的每一列來自同一域;(4)域可以相同,為了加以區(qū)別,每列起一個(gè)名字,稱為屬性,n目關(guān)係有n個(gè)屬性,屬性的名字唯一,屬性的取值範(fàn)圍Di(i=1,2,…,n)稱為值域(5)具有相同關(guān)係框架的關(guān)係成為同類關(guān)係, 例如,有另一個(gè)關(guān)係T2,如表2.3所示:
T1和T2是同類關(guān)係。姓名性別張雪女張?zhí)m女134.數(shù)學(xué)上關(guān)係是笛卡爾積的任意子集,但在實(shí)際應(yīng)用中關(guān)係是笛卡爾積中所取的有意義的子集。例如在表2.1中選取一個(gè)子集構(gòu)成如下關(guān)係,顯然不符合實(shí)際情況在關(guān)係模型中,關(guān)係可進(jìn)一步定義為:定義在域D1,D2,……Dn(不要求完全相異)上的關(guān)係由關(guān)係頭(Heading)和關(guān)係體(Body)組成。關(guān)係頭:由屬性名A1,A2,…,An的集合組成,每個(gè)屬性Ai正好對(duì)應(yīng)一個(gè)域Di(i=1,2,…,n),關(guān)係頭,也稱關(guān)係框架,相對(duì)固定,是關(guān)係的數(shù)據(jù)結(jié)構(gòu)的描述。關(guān)係體:是指關(guān)係結(jié)構(gòu)中的內(nèi)容或者數(shù)據(jù),並非固定不變,它隨元組的建立、刪除或修改而變化。姓名性別李力男李力女14儘管關(guān)係與二維表格、傳統(tǒng)的數(shù)據(jù)檔是非常類似的,但它們之間又有重要的區(qū)別。
嚴(yán)格地說,關(guān)係是種規(guī)範(fàn)化了的二維表中行的集合,為了使相應(yīng)的數(shù)據(jù)操作簡(jiǎn)化,在關(guān)係模型中,對(duì)關(guān)係作了種種限制,關(guān)係具有如下特性:1.關(guān)係中不允許出現(xiàn)相同的元組。因?yàn)閿?shù)學(xué)上集合中沒有相同的元素,而關(guān)係是元組的集合,所以作為集合元素的元組應(yīng)該是唯一的。2.關(guān)係中元組的順序(即行序)是無關(guān)緊要的,在一個(gè)關(guān)係中可以任意交換兩行的次序。因?yàn)榧现械脑厥菬o序的,所以作為集合元素的元組也是無序的。根據(jù)關(guān)係的這個(gè)性質(zhì),可以改變?cè)M的順序使其具有某種排序,然後按照順序查詢數(shù)據(jù),可以提高查詢速度。2.3關(guān)係的性質(zhì)153.關(guān)係中屬性的順序是無關(guān)緊要的,即列的順序可以任意交換。交換時(shí),應(yīng)連同屬性名一起交換,否則將得到不同的關(guān)係。例如:關(guān)係T1作如下交換時(shí),無任何影響,如下表所示:性別姓名男李力女王平男劉偉16而作如下交換時(shí),不交換屬性名,只交換屬性列中的值,則得到不同的關(guān)係,如下表:
姓名性別男李力女王平男劉偉174.同一屬性名下的各個(gè)屬性值必須來自同一個(gè)域,是同一類型的數(shù)據(jù)。5.關(guān)係中各個(gè)屬性必須有不同的名字,不同的屬性可來自同一個(gè)域,即它們的分量可以取自同一個(gè)域。例如,有如下表中關(guān)係,職業(yè)與兼職是兩個(gè)不同的屬性,但它們?nèi)∽酝粋€(gè)域職業(yè)={教師,工人,輔導(dǎo)員}。
姓名職業(yè)兼職張強(qiáng)教師輔導(dǎo)員王麗工人教師劉寧教師輔導(dǎo)員186.關(guān)係中每一分量必須是不可分的資料項(xiàng)目,或者說所有屬性值都是原子的,即是一個(gè)確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”。滿足此條件的關(guān)係稱為規(guī)範(fàn)化關(guān)係,否則稱為非規(guī)範(fàn)化關(guān)係。例如,在表2.8中,籍貫含有省、市/縣兩項(xiàng),出現(xiàn)了“表中有表”的現(xiàn)象,則為非規(guī)範(fàn)化關(guān)係,而把籍貫分成省、市/縣兩列,將其規(guī)範(fàn)化,如表2.9所示。 表2.8表2.9姓名籍貫
姓名省市/縣省市/縣
張強(qiáng)吉林長(zhǎng)春
張強(qiáng)吉林長(zhǎng)春王麗山西大同
王麗山西大同192.4.1候選鍵與關(guān)係鍵能唯一標(biāo)識(shí)關(guān)係中元組的屬性或?qū)傩约瑒t稱該屬性或?qū)傩约癁楹蜻x鍵(CandidateKey),也稱候選關(guān)鍵字或候選碼。如:“學(xué)生關(guān)係”中的學(xué)號(hào)能唯一標(biāo)識(shí)每一個(gè)學(xué)生,則屬性學(xué)號(hào)是學(xué)生關(guān)係的候選鍵。在“選課關(guān)係”中,只有屬性的組合“學(xué)號(hào)+課程號(hào)”才能唯一地區(qū)分每一條選課記錄,則屬性集“學(xué)號(hào)+課程號(hào)”是選課關(guān)係的候選鍵。2.4關(guān)係的鍵
20下麵給出候選鍵的形式化定義:設(shè)關(guān)係R有屬性A1,A2,……An,其屬性集K=(Ai,Aj,……Ak),當(dāng)且僅當(dāng)滿足下列條件時(shí),K被稱為候選鍵:
1.唯一性(Uniqueness):關(guān)係R的任意兩個(gè)不同元組,其屬性集K的值是不同的。
2.最小性(Minimally):組成關(guān)係鍵的屬性集(Ai,Aj,……Ak)中,任一屬性都不能從屬性集K中刪掉,否則將破壞唯一性的性質(zhì)例如:“學(xué)生關(guān)係”中的每個(gè)學(xué)生的學(xué)號(hào)是唯一的,“選課關(guān)係”中“學(xué)號(hào)+課程號(hào)”的組合也是唯一的。對(duì)於屬性集“學(xué)號(hào)+課程號(hào)”去掉任一屬性,都無法唯一標(biāo)識(shí)選課記錄。
21如果一個(gè)關(guān)係中有多個(gè)候選鍵,可以從中選擇一個(gè)作為查詢、插入或刪除元組的操作變數(shù),被選用的候選鍵稱為主關(guān)係鍵(PrimaryKey),或簡(jiǎn)稱為主鍵、主碼、關(guān)係鍵、關(guān)鍵字。例如,假設(shè)在學(xué)生關(guān)係中沒有重名的學(xué)生,則“學(xué)號(hào)”和“姓名”都可作為學(xué)生關(guān)係的候選鍵。如果選定“學(xué)號(hào)”作為數(shù)據(jù)操作的依據(jù),則“學(xué)號(hào)”為主關(guān)係鍵。主關(guān)係鍵是關(guān)係模型中的一個(gè)重要概念。每個(gè)關(guān)係必需選擇一個(gè)主關(guān)係鍵,選定以後,不能隨意改變。每個(gè)關(guān)係必定有且僅有一個(gè)主關(guān)係鍵,因?yàn)殛P(guān)係的元組無重複,至少關(guān)係的所有屬性的組合可作為主關(guān)係鍵,通常用較小的屬性組合作為主關(guān)係鍵。222.4.2主屬性與非碼屬性主屬性(PrimeAttribute):包含在主碼中的的各屬性稱為主屬性。非碼屬性(Non-PrimeAttribute):不包含在任何候選碼中的屬性稱為非碼屬性。在最簡(jiǎn)單的情況下,一個(gè)候選碼只包含一個(gè)屬性,如學(xué)生關(guān)係中的“學(xué)號(hào)”,教師關(guān)係中的“教師號(hào)”。在最極終端的情況下,所有屬性的組合是關(guān)係的候選碼,這時(shí)稱為全碼(all-key)。23下麵是一個(gè)全碼的例子:假設(shè)有教師授課關(guān)係TCS,分別有三個(gè)屬性教師(T)、課程(C)和學(xué)生(S)。一個(gè)教師可以講授多門課程,一門課程可以為多個(gè)教師講授,同樣一個(gè)學(xué)生可以選聽多門課程,一門課程可以為多個(gè)學(xué)生選聽。在這種情況下,T,C,S三者之間是多對(duì)多關(guān)係,(T,C,S)三個(gè)屬性的組合是關(guān)係TCS的候選碼,稱為全碼,T,C,S都是主屬性。242.4.3外部關(guān)係鍵如果關(guān)係R2的一個(gè)或一組屬性X不是R2的主碼,而是另一關(guān)係R1的主碼,則該屬性或?qū)傩越MX稱為關(guān)係R2的外部關(guān)係鍵或外碼(Foreignkey)。並稱關(guān)係R2為參照關(guān)係(referencingrelation),關(guān)係R1為被參照關(guān)係(referencedrelation)。例2.1
假設(shè)在圖1.12所示的教學(xué)資料庫(kù)中增加一個(gè)系別關(guān)係D,包含兩個(gè)屬性系別(DEPT)和地址(ADDR),“系別”是此關(guān)係的主碼,而“系別”並不是學(xué)生關(guān)係和教師關(guān)係的主碼,所以“系別”是學(xué)生關(guān)係和教師關(guān)係的外部關(guān)係鍵。25例2.2
如圖1.12所示的選課關(guān)係中的“學(xué)號(hào)”屬性與學(xué)生關(guān)係的主碼“學(xué)號(hào)”相對(duì)應(yīng),“課程號(hào)”屬性與課程關(guān)係的主碼“課程號(hào)”相對(duì)應(yīng),因此,“學(xué)號(hào)”和“課程號(hào)”屬性是選課關(guān)係的外部關(guān)係鍵。學(xué)生關(guān)係和課程關(guān)係為被參照關(guān)係,選課關(guān)係為參照關(guān)係。由外部關(guān)係鍵的定義可知,被參照關(guān)係的主碼和參照關(guān)係的外碼必須定義在同一個(gè)域上。如選課關(guān)係中的“學(xué)號(hào)”與學(xué)生關(guān)係的主碼“學(xué)號(hào)”定義在同一個(gè)域上,“課程號(hào)”屬性與課程關(guān)係的主碼“課程號(hào)”定義在同一個(gè)域上。262.4.4關(guān)係模型的完整性為了維護(hù)資料庫(kù)中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,對(duì)關(guān)係資料庫(kù)的插入、刪除和修改操作必須有一定的約束條件,這就是關(guān)係模型的三類完整性:實(shí)體完整性參照完整性用戶定義的完整性1.實(shí)體完整性(EntityIntegrity)實(shí)體完整性是指主關(guān)係鍵的值不能為空或部分為空。關(guān)係模型中的一個(gè)元組對(duì)應(yīng)一個(gè)實(shí)體,一個(gè)關(guān)係則對(duì)應(yīng)一個(gè)實(shí)體集。例如,一條學(xué)生記錄對(duì)應(yīng)著一個(gè)學(xué)生,學(xué)生關(guān)係對(duì)應(yīng)著學(xué)生的集合。27現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。與此相對(duì)應(yīng),關(guān)係模型中以主關(guān)係鍵來唯一標(biāo)識(shí)元組。例如,學(xué)生關(guān)係中的屬性“學(xué)號(hào)”可以唯一標(biāo)識(shí)一個(gè)元組,也可以唯一標(biāo)識(shí)學(xué)生實(shí)體。如果主關(guān)係鍵中的值為空或部分為空,即主屬性為空,則不符合關(guān)係鍵的定義條件,不能唯一標(biāo)識(shí)元組及與其相對(duì)應(yīng)的實(shí)體。這就說明存在不可區(qū)分的實(shí)體,從而與現(xiàn)實(shí)世界中的實(shí)體是可以區(qū)分的事實(shí)相矛盾。因此主關(guān)係鍵的值不能為空或部分為空。例如,學(xué)生關(guān)係中的主關(guān)係鍵“學(xué)號(hào)”不能為空;選課關(guān)係中的主關(guān)係鍵“學(xué)號(hào)+課程號(hào)”不能部分為空,即“學(xué)號(hào)”和“課程號(hào)”兩個(gè)屬性都不能為空。282.
參照完整性(Referentialintegrity)如果關(guān)係R2的外部關(guān)係鍵X與關(guān)係R1的主關(guān)係鍵相符,則X的每個(gè)值或者等於R1中主關(guān)係鍵的某一個(gè)值,或者取空值。在例2.1系別關(guān)係中的屬性“系別”是學(xué)生關(guān)係外部關(guān)係鍵。如圖2.2所示,學(xué)生關(guān)係中某個(gè)學(xué)生(如s1或s2)“系別”的取值,必須在參照的系別關(guān)係中主關(guān)係鍵“系別”的值中能夠找到,否則表示把該學(xué)生分配到一個(gè)不存在的部門中,顯然不符合語(yǔ)義。如果某個(gè)學(xué)生(如s11)“系別”取空值,則表示該學(xué)生尚未分配到任何一個(gè)系。否則,它只能取專業(yè)關(guān)係中某個(gè)元組的專業(yè)號(hào)值。29S(學(xué)生關(guān)係)D(系別關(guān)係)圖2.2學(xué)生表和系別表
SNO學(xué)號(hào)SN姓名SEX性別AGE年齡DEPT所在系
DEPT所在系A(chǔ)DDR地址S1趙亦女17電腦
電腦1號(hào)樓S2錢爾男18資訊
資訊1號(hào)樓…
自動(dòng)化2號(hào)樓S11王威男19
30在例2.2中,如果按照參照完整性規(guī)則,選課關(guān)係中的外部關(guān)係鍵“學(xué)號(hào)”和“課程號(hào)”可以取空值或者取被參照關(guān)係中已經(jīng)存在的值。但由於“學(xué)號(hào)”和“課程號(hào)”是選課關(guān)係中主屬性,根據(jù)實(shí)體完整性規(guī)則,兩個(gè)屬性都不能為空。所以選課關(guān)係中的外部關(guān)係鍵“學(xué)號(hào)”和“課程號(hào)”中能取被參照關(guān)係中已經(jīng)存在的值。實(shí)體完整性和參照完整性是關(guān)係模型必須滿足的完整性約束條件,被稱作關(guān)係的兩個(gè)不變性。任何關(guān)係資料庫(kù)系統(tǒng)都應(yīng)該支持這兩類完整性。除此之外,不同的關(guān)係資料庫(kù)系統(tǒng)由於應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,這就是用戶定義完整性。313.用戶定義完整性(User-definedIntegrity)用戶定義完整性是針對(duì)某一具體關(guān)係資料庫(kù)的約束條件。它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。例如,屬性值根據(jù)實(shí)際需要,要具備一些約束條件,如選課關(guān)係中成績(jī)不能為負(fù)數(shù);某些數(shù)據(jù)的輸入格式要有一些限制等關(guān)係模型應(yīng)該提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的、系統(tǒng)的方法處理它們,而不要由應(yīng)用程式承擔(dān)這一功能。322.5.1關(guān)係模式和關(guān)係資料庫(kù)模式一個(gè)關(guān)係的屬性名的集合R(A1,A2,……An)叫做關(guān)係模式。其中:R為關(guān)係名,A1,A2,…,An為屬性名(i=1,2,……n)。由定義可以看出,關(guān)係模式是關(guān)係的框架,或者稱為表框架,指出了關(guān)係由哪些屬性構(gòu)成,是對(duì)關(guān)係結(jié)構(gòu)的描述。一組關(guān)係模式的集合叫做關(guān)係資料庫(kù)模式。2.5關(guān)係資料庫(kù)模式與關(guān)係資料庫(kù)
33關(guān)係資料庫(kù)模式是對(duì)關(guān)係資料庫(kù)結(jié)構(gòu)的描述,或者說是對(duì)關(guān)係資料庫(kù)框架的描述,也就是前面所講過的關(guān)係頭,可以看作是關(guān)係的型。與關(guān)係資料庫(kù)模式對(duì)應(yīng)的資料庫(kù)中的當(dāng)前值就是關(guān)係資料庫(kù)的內(nèi)容,稱為關(guān)係資料庫(kù)的實(shí)例,即前面所講過的關(guān)係體,可以看作是關(guān)係的值。例如,在圖1.12所示的教學(xué)資料庫(kù)中,共有五個(gè)關(guān)係,其關(guān)係模式分別為:學(xué)生(學(xué)號(hào),姓名,性別,年齡,系別)教師(教師號(hào),姓名,性別,年齡,系別)課程(課程號(hào),課程名,課時(shí))選課(學(xué)號(hào),課程號(hào),成績(jī))授課(教師號(hào),課程號(hào))34在每個(gè)關(guān)係中,又有其相應(yīng)的資料庫(kù)的實(shí)例例如:與學(xué)生關(guān)係模式對(duì)應(yīng)的資料庫(kù)中的實(shí)例有如下6個(gè)元組:
S1趙亦女17電腦S2錢爾男18資訊S3孫珊女20資訊S4李思男21自動(dòng)化S5周武男19電腦S6吳麗女20自動(dòng)化352.5.2關(guān)係資料庫(kù)關(guān)係資料庫(kù)是“一組隨時(shí)間變化,具有各種度的規(guī)範(fàn)化關(guān)係的集合”。因?yàn)殛P(guān)係是由關(guān)係頭和關(guān)係體組成的,所以關(guān)係資料庫(kù)也可以看作是一組關(guān)係頭和關(guān)係體的集合。由此可見,關(guān)係資料庫(kù)也有型和值的概念,其型就是關(guān)係資料庫(kù)模式,相對(duì)固定;其值就是關(guān)係資料庫(kù)內(nèi)容,代表現(xiàn)實(shí)世界中的實(shí)體,而實(shí)體是隨著時(shí)間不斷變化的,所以其值在不同的時(shí)刻會(huì)有所變化。36例如:圖1.12所示的教學(xué)資料庫(kù)是五個(gè)關(guān)係的集合,或者說是五個(gè)關(guān)係頭和五個(gè)關(guān)係體的集合。其中,各個(gè)關(guān)係頭相對(duì)固定,而關(guān)係體的內(nèi)容,會(huì)隨時(shí)間而變化。比如,學(xué)生和教師的年齡隨時(shí)間而增長(zhǎng),教師的工資和崗位津貼也會(huì)發(fā)生變化。37關(guān)係模型與其他模型相比,最有特色的是它的資料庫(kù)語(yǔ)言。這種語(yǔ)言靈活方便、表達(dá)能力和功能都很強(qiáng)。目前關(guān)係資料庫(kù)所使用的語(yǔ)言一般都具有定義、查詢、更新和控制一體化的特點(diǎn),而查詢是最主要的部分。所以說,關(guān)係資料庫(kù)的核心部分是查詢,故又稱為查詢語(yǔ)言,而查詢的條件要使用關(guān)係運(yùn)算運(yùn)算式來表示。因此,關(guān)係運(yùn)算是設(shè)計(jì)關(guān)係數(shù)據(jù)語(yǔ)言的基礎(chǔ)。按表達(dá)查詢的方法不同,關(guān)係運(yùn)算可分為關(guān)係代數(shù)和關(guān)係演算兩大類。
2.6關(guān)係代數(shù)382.6.1關(guān)係代數(shù)的分類及其運(yùn)算符關(guān)係代數(shù)是對(duì)關(guān)係進(jìn)行集合代數(shù)運(yùn)算,是基於關(guān)係代數(shù)的操作語(yǔ)言,稱為關(guān)係代數(shù)語(yǔ)言,簡(jiǎn)稱關(guān)係代數(shù)。它是由IBM在一個(gè)實(shí)驗(yàn)性的系統(tǒng)上實(shí)現(xiàn)的,稱為ISBL(InformationSystemBaseLanguage)語(yǔ)言。ISBL的每個(gè)語(yǔ)句都類似於一個(gè)關(guān)係代數(shù)運(yùn)算式。關(guān)係代數(shù)的運(yùn)算對(duì)象是關(guān)係,運(yùn)算結(jié)果也是關(guān)係,關(guān)係代數(shù)用到的運(yùn)算符主要包括四類:集合運(yùn)算符:∪(並),-(差),∩(交),X(廣義笛卡爾積);專門的關(guān)係運(yùn)算符:σ(選擇),∏(投影),∞(連接),*(自然連接),÷(除);算術(shù)比較運(yùn)算符:>(大於),≥(大於等於),<(小於),≤(小於等於),=(等於),≠(不等於);邏輯運(yùn)算符:∧(與),∨(或),┐(非)39關(guān)係代數(shù)的運(yùn)算按運(yùn)算符的不同主要分為兩類:傳統(tǒng)的集合運(yùn)算:把關(guān)系看成元組的集合,以元組作為集合中元素來進(jìn)行運(yùn)算,其運(yùn)算是從關(guān)係的“水準(zhǔn)”方向即行的角度進(jìn)行的。包括並、差、交和笛卡爾積等運(yùn)算。專門的關(guān)係運(yùn)算:不僅涉及行運(yùn)算,也涉及列運(yùn)算,這種運(yùn)算是為數(shù)據(jù)庫(kù)的應(yīng)用而引進(jìn)的特殊運(yùn)算。包括選取、投影、連接和除法等運(yùn)算。402.6.2傳統(tǒng)的集合運(yùn)算對(duì)兩個(gè)關(guān)係的集合運(yùn)算傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,是在兩個(gè)關(guān)係中進(jìn)行的。但是並不是任意的兩個(gè)關(guān)係都能進(jìn)行這種集合運(yùn)算,而是要在兩個(gè)滿足一定條件的關(guān)係中進(jìn)行運(yùn)算。那麼,對(duì)關(guān)係有什麼要求呢?下麵先看一個(gè)定義。定義2.9設(shè)給定兩個(gè)關(guān)係R、S,若滿足:(1)
具有相同的度n;(2)
R中第i個(gè)屬性和S中第i個(gè)屬性必須來自同一個(gè)域。則說關(guān)係R、S是相容的。除笛卡爾積外,要求參加運(yùn)算的關(guān)係必須滿足上述的相容性定義。411.並(Union)關(guān)係R和關(guān)係S的並由屬於R或?qū)凫禨的元組組成,即R和S的所有元組合並,刪去重複元組,組成一個(gè)新關(guān)係,其結(jié)果仍為n目關(guān)係。記作:
R∪S={t|t∈R∨t∈S}對(duì)於關(guān)係資料庫(kù),記錄的插入和添加可通過並運(yùn)算實(shí)現(xiàn)。2.差(Difference)關(guān)係R與關(guān)係S的差由屬於R而不屬於S的所有元組組成,即R中刪去與S中相同的元組,組成一個(gè)新關(guān)係,其結(jié)果仍為n目關(guān)係。記作:
R-S={t|t∈R∧┐t∈S}通過差運(yùn)算,可實(shí)現(xiàn)關(guān)係資料庫(kù)記錄的刪除。423.交(Intersection)關(guān)係R與關(guān)係S的交由既屬於R又屬於S的元組組成,即R與S中相同的元組,組成一個(gè)新關(guān)係,其結(jié)果仍為n目關(guān)係。記作:
R∩S={t|t∈Rt∈S}如果兩個(gè)關(guān)係沒有相同的元組,那麼它們的交為空。兩個(gè)關(guān)係的並和差運(yùn)算為基本運(yùn)算(即不能用其他運(yùn)算表達(dá)的運(yùn)算),而交運(yùn)算為非基本運(yùn)算,交運(yùn)算可以用差運(yùn)算來表示:
R∩S=R-(R-S)434.廣義笛卡爾積(ExtendedCartesianProduct)兩個(gè)分別為n目和m目關(guān)係R和S的廣義笛卡爾積是一個(gè)(n+m)列的元組的集合,元組的前n列是關(guān)係R的一個(gè)元組,後m列是關(guān)係S的一個(gè)元組。若R有k1個(gè)元組,S有k2個(gè)元組,則關(guān)係R和關(guān)係S的廣義笛卡爾積有k1*k2個(gè)元組,記作
R×S={tr⌒ts|tr∈R,∧ts∈S}關(guān)係的廣義笛卡爾積可用於兩關(guān)係的連接操作(連接操作將在一節(jié)仲介紹)。44【例4】如圖2.4(a)、(b)所示的兩個(gè)關(guān)係R與S為相容關(guān)係,(c)為R與S
的並,(d)為R與S的交,(e)為R與S的差,(f)為R與S的廣義笛卡爾積。
R
S
(a)
(b)
ABC
ABCa1b1c1
a1b1c1a1b1c2
a2b2c1a2b2c1
a2b3c245
R∪S
R-S
(c)
(d)R∩S
(e)ABC
ABCa1B1c1
a1b1c2a1B1c2
a2B2c1
a2B3c2
ABCa1B1c1a2B2c146R×S
ABCABCa1b1c1a1b1c1a1b1c1a2b2c1a1b1c1a2b3c2a1b1c2a1b1c1a1b1c2a2b2c1a1b1c2a2b3c2a2b2c1a1b1c1a2b2c1a2b2c1a2b2c1a2b3c2
(f)圖2.4傳統(tǒng)的集合運(yùn)算
472.6.3專門的關(guān)係運(yùn)算由於傳統(tǒng)的集合運(yùn)算,只是從行的角度進(jìn)行,而要靈活地實(shí)現(xiàn)關(guān)係資料庫(kù)多樣的查詢操作,必須引入專門的關(guān)係運(yùn)算。在講專門的關(guān)係運(yùn)算之前,為敘述上的方便先引入幾個(gè)概念。
(1)設(shè)關(guān)係模式為R(A1,A2,……An),它的一個(gè)關(guān)係為R,t∈R表示t是R的一個(gè)元組,t[Ai]則表示元組t中相應(yīng)於屬性Ai的一個(gè)分量。48(2)若A={Ai1,Ai2,……,Aik},其中Ai1,Ai2,……,Aik是A1,A2,……,An中的一部分,則A稱為屬性列或域列,?則表示{A1,A2,……,An}中去掉{Ai1,Ai2,……,Aik}後剩餘的屬性組。t[A]={t[Ai1],t[Ai2],……,t[Aik]}表示元組t在屬性列A上諸分量的集合。(3)R為n目關(guān)係,S為m目關(guān)係,tr∈R,ts∈S,trts稱為元組的連接(concatenation),它是一個(gè)n+m列的元組,前n個(gè)分量為R的一個(gè)n元組,後m個(gè)分量為S中的一個(gè)m元組。(4)給定一個(gè)關(guān)係R(X,Z),X和Z為屬性組,定義當(dāng)t[X]=x時(shí),x在R中的象集(imageset),為Zx={t[Z]|t∈R,t[X]=x},它表示R中的屬性組X上值為x的諸元組在Z上分量的集合。
491.選取(Selection)選取運(yùn)算是單目運(yùn)算,是根據(jù)一定的條件在給定的關(guān)係R中選取若干個(gè)元組,組成一個(gè)新關(guān)係,記作:σF(R)={t|t∈R∧F(t)為真}其中,σ為選取運(yùn)算符,F(xiàn)為選取的條件,它由運(yùn)算對(duì)象(屬性名、常數(shù)、簡(jiǎn)單函數(shù))、算術(shù)比較運(yùn)算符(>,≥,<,≤,=,≠)和邏輯運(yùn)算符(∨∧┐)連接起來的邏輯運(yùn)算式,結(jié)果為邏輯值“真”或“假”。選取運(yùn)算實(shí)際上是從關(guān)係R中選取使邏輯運(yùn)算式為真的元組,是從行的角度進(jìn)行的運(yùn)算。50以下例題均是以圖1.12所示的五個(gè)關(guān)係為例進(jìn)行運(yùn)算。例2.4查詢電腦系的全體學(xué)生。σDEPT=’電腦’(S)或σ5=’電腦’(S)(其中5為DEPT的屬性序號(hào))結(jié)果右圖所示。SNOSNSEXAGEDEPTS1趙亦女17電腦S5周武男19電腦51例2.5查詢工資高於1000元的男教師。σ(SAL>1000)∧(SEX=’男’)(T)結(jié)果如圖所示。
注意:字元型數(shù)據(jù)的值應(yīng)該使用單引號(hào)括起來,例如,‘電腦’,‘男’。
TNOTNSEXAGEPROFSALCOMMDEPTT1李力男47教授15003000電腦522.投影(Projection)投影運(yùn)算也是單目運(yùn)算,關(guān)係R上的投影是從R中選擇出若干屬性列,組成新的關(guān)係,即對(duì)關(guān)係在垂直方向進(jìn)行的運(yùn)算,從左到右按照指定的若干屬性及順序取出相應(yīng)列,刪去重複元組。記作:ΠA(R)={t[A]|t∈R}其中A為R中的屬性列,Π為投影運(yùn)算符。從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算,這正是選取運(yùn)算和投影運(yùn)算的區(qū)別所在。選取運(yùn)算是從關(guān)係的水準(zhǔn)方向上進(jìn)行運(yùn)算的,而投影運(yùn)算則是從關(guān)係的垂直方向上進(jìn)行的。
53例2.6查詢教師的姓名及其職稱。ΠTN,TNO,PROF(T)或Π2,1,5(T)(其中2,1,5分別為TN、TNO和PROF的屬性序號(hào))結(jié)果右圖所示
上例表明,投影運(yùn)算可以改變關(guān)係的屬性次序
TNTNOPROF李力T1教授王平T2講師劉偉T3講師張雪T4教授張?zhí)mT5副教授54例2.7查詢教師關(guān)係中有哪些系。ΠDEPT(T)結(jié)果如右圖所示
由例2.7可以看出,投影後取消了某些屬性列後,就可能出現(xiàn)重複行,應(yīng)該取消這些完全相同的行。所以投影之後,不但減少了屬性,元組也可能減少,新關(guān)係與原關(guān)係不相容。
DEPT電腦資訊自動(dòng)化55例2.8查詢講授C5課程的教師號(hào)。ΠTNO(σCNO=’C5’(TC))結(jié)果如右圖所示。
本例中選取運(yùn)算和投影運(yùn)算相結(jié)合,先在授課表中選取滿足條件的元組,再於TNO屬性上進(jìn)行投影。
TNOT2T3T5563.連接(Join)連接運(yùn)算是二目運(yùn)算,是從兩個(gè)關(guān)係的笛卡爾積中選取滿足連接條件的元組,組成新的關(guān)係。設(shè)關(guān)係R(A1,A2,……An)及S(B1,B2,……Bm),連接屬性集X包含於{A1,A2,……An},及Y包含於{B1,B2,……Bm},X與Y中屬性列數(shù)目相等,且相對(duì)應(yīng)屬性有共同的域。[若Z={A1,A2……An}/X(/X:去掉X之外的屬性)及W={B1,B2……Bm}/Y,則R及S可表示為R(Z,X),S(W,Y)]關(guān)係R和S在連接屬性X和Y上的連接,就是以R×S笛卡爾積中,選取X屬性列上的分量與Y屬性列上的分量滿足給定θ比較條件的那些元組,也就是在R×S上選取在連接屬性X,Y上滿足θ條件的子集,組成新的關(guān)係。新關(guān)係的度為n+m。
57記作:R∞S={tr⌒ts
|tr∈R∧ts∈S∧tr[X]θts[Y]為真}
XθY其中,∞是連接運(yùn)算符,θ為算術(shù)比較運(yùn)算符,也稱θ連接;XθY為連接條件;θ為“=”時(shí),稱為等值連接;θ為“<”時(shí),稱為小於連接;θ為“>”時(shí),稱為大於連接。連接運(yùn)算為非基本運(yùn)算,可以用選取運(yùn)算和廣義笛卡爾積運(yùn)算來表示:R∞S=σxθy(R×S)58在連接運(yùn)算中,一種最常用的連接是自然連接。所謂自然連接就是在等值連接的情況下,當(dāng)連接屬性X與Y具有相同屬性組時(shí),把在連接結(jié)果中重複的屬性列去掉。即如果R與S具有相同的屬性組Y,則自然連接可記作:R*S={tr⌒ts
|tr∈R∧ts∈S∧tr[Y]=ts[Y]}自然連接是在廣義笛卡爾積R×S中選出同名屬性上符合相等條件元組,再進(jìn)行投影,去掉重複的同名屬性,組成新的關(guān)係。
59例2.9如圖2.9(a)、(b)所示的兩個(gè)關(guān)係R與S,(c)為R和S的大於連接(C>D),(d)為R和S的等值連接(C=D),(e)為R和S的等值連接(R.B=S.B),(f)為R和S的自然連接。
RS
(a)
(b)ABC
BDa1b12
b15a1b24
b26a2b36
b37a2b48
b3860大於連接(C>D)等值連接(C=D)
(c)
(d)
AR.BCS.BD
AR.BCS.BDa2b36b15
a2b36b26a2b48b15
a2b48b38a2b48b26
a2b48b37
61等值連接(R.B=S.B)自然連接
(e)
(f)
圖2.9連接運(yùn)算舉例
AR.BCS.BD
ABCDa1b12b15
a1b125a1b24b26
a1b246a2b36b37
a2b367a2b36b38
a2b36862結(jié)合上例,我們可以看出等值連接與自然連接的區(qū)別:1.
等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關(guān)係只有在同名屬性才能進(jìn)行自然連接。如上例R中的C列和S中的D列可進(jìn)行等值連接,但因?yàn)閷傩悦煌?,不能進(jìn)行自然連接。2.等值連接不將重複屬性去掉,而自然連接去掉重複屬性,也可以說,自然連接是去掉重複列的等值連接。如上例R中的B列和S中的B列進(jìn)行等值連接時(shí),結(jié)果有兩個(gè)重複的屬性列B,而進(jìn)行自然連接時(shí),結(jié)果只有一個(gè)屬性列B。
63例2.10查詢講授資料庫(kù)課程的教師姓名。ΠTN(σCN=’資料庫(kù)’(C)*ΠTNO,CNO(TC)*ΠTNO,TN(T))或ΠTN(ΠTNO(σCN=’資料庫(kù)’(C)*TC)*ΠTNO,TN(T))結(jié)果如右圖所示。
TN王平劉偉張?zhí)m644.除法(Division)除法運(yùn)算是二目運(yùn)算,設(shè)有關(guān)係R(X,Y)與關(guān)係S(Y,Z),其中X,Y,Z為屬性集合,R中的Y與S中的Y可以有不同的屬性名,但對(duì)應(yīng)屬性必須出自相同的域。關(guān)係R除以關(guān)係S所得的商是一個(gè)新關(guān)係P(X),P是R中滿足下列條件的元組在X上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:R÷S={tr[X]|tr∈R∧Πy(S)
Yx}其中,Yx為x在R中的象集,x=tr[X]。除法運(yùn)算為非基本運(yùn)算,可以表示為:R÷S=Πx(R)-Πx(Πx(R)×S-R)
65例2.11已知關(guān)係R和S,如圖2.11(a),(b)所示,則R÷S如圖(c)所示。與除法的定義相對(duì)應(yīng),本題中X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D}={(c3,d5),(c4,d6)},Z={F}={f3,f4}。其中,元組在X上各個(gè)分量值的象集分別為:(a1,b2)的象集為{(c3,d5),(c4,d6)}(a2,b4)的象集為{(c1,d3)}(a3,b5)的象集為{(c2,d8)}S在Y上的投影為{(c3,d5),(c4,d6)}顯然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a1,b2)}
66
RS
R÷S
(a)
(b)
(c)
圖2.11ABCDE
CDF
ABa1b2c3d5e1
c3d5f3
a1b2a1b2c4d6e1
c4d6f4
a2b4c1d3e3
a3b5c2d8e4
67除法運(yùn)算同時(shí)從行和列的角度進(jìn)行運(yùn)算,適合於包含“全部”之類的短語(yǔ)的查詢。例2.12查詢選修了全部課程的學(xué)生學(xué)號(hào)和姓名。ΠSNO,CNO(SC)÷ΠCNO(C)*ΠSNO,SN(S)68關(guān)係演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,通過謂詞形式來表示查詢運(yùn)算式。根據(jù)謂詞變?cè)牟煌?,可將關(guān)係演算分為元組關(guān)係演算和域關(guān)係演算。2.7.1元組關(guān)係演算語(yǔ)言元組關(guān)係演算是以元組變數(shù)作為謂詞變?cè)幕緦?duì)象。元組關(guān)係演算語(yǔ)言的典型代表是E.F.Codd提出的ALPHA語(yǔ)言,這種語(yǔ)言雖然沒有實(shí)際實(shí)現(xiàn),但較有名氣,INGRES關(guān)係資料庫(kù)上使用的QUEL語(yǔ)言,就是在ALPHA語(yǔ)言的基礎(chǔ)上研製的。這裏主要介紹ALPHA語(yǔ)言和QUEL語(yǔ)言
2.7關(guān)係演算
69
ALPHA語(yǔ)言ALPHA語(yǔ)言是以謂詞公式來定義查詢要求的。在謂詞公式中存在客體變?cè)@裏稱為元組變數(shù)。元組變數(shù)是一個(gè)變數(shù),其變化範(fàn)圍為某一個(gè)命名的關(guān)係。ALPHA語(yǔ)言的基本格式是:<操作符><工作空間名>(<目標(biāo)表>)[:<操作條件>]操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等到種。工作空間是指記憶體空間,可以用一個(gè)字母表示,通常用W表示,也可以用別的字母表示。工作空間是用戶與系統(tǒng)的通信區(qū)。目標(biāo)表用於指定操作(如查詢、更新等)出來的結(jié)果,它可以是關(guān)係名或?qū)傩悦?,一答操作語(yǔ)句可以同時(shí)對(duì)多個(gè)關(guān)係或多個(gè)屬性進(jìn)行操作。70操作條件是用謂詞公式表示的邏輯運(yùn)算式,只有滿足此條件的元組才能進(jìn)行操作,這是一個(gè)可選項(xiàng),缺省時(shí)表示無條件執(zhí)行操作符規(guī)定的操作。除此之外,還可以在基本格式上加上排序要求,定額要求等。下麵以教學(xué)資料庫(kù)(圖1.12)為例,說明ALPHA語(yǔ)言的使用。
1.數(shù)據(jù)查詢(1)簡(jiǎn)單查詢例查詢所有學(xué)生的數(shù)據(jù)。GETW(S)GET語(yǔ)句的作用是把資料庫(kù)中的數(shù)據(jù)讀入記憶體空間W,目標(biāo)表為學(xué)生關(guān)係S,代表查詢出來的結(jié)果,即所有的學(xué)生。冒號(hào)後面的操作條件缺省,表示無條件查詢。71例2.13
查詢所有被選修的課程號(hào)碼。GETW(SC.CNO)目標(biāo)表為選課關(guān)係SC中的屬性CNO,代表所有被選修的課程號(hào)碼,查詢結(jié)果自動(dòng)消去重複行。(2)條件查詢由冒號(hào)後面的邏輯運(yùn)算式給出查詢條件,在運(yùn)算式中可以使用如下三類運(yùn)算符:①
比較運(yùn)算符:>,≥,<,≤,=等於,≠;②邏輯運(yùn)算符:∧(與),∨(或),┐(非)③表示執(zhí)行次序的括?。海ǎ┢渲?,比較運(yùn)算符的優(yōu)先順序高於邏輯運(yùn)算符,可以使用()改變它們的優(yōu)先順序。72例2.14
查詢電腦系工資高於1000元的教師的姓名和工資。GETW(T.TN,T.SAL):T.DEPT=’電腦’∧T.SAL>1000目標(biāo)表為教師關(guān)係T中的兩個(gè)屬性SN和SAL組成的屬性列表。
(3)排序查詢例2.15
查詢S3同學(xué)所選課程號(hào)及成績(jī),並按成績(jī)降序排列。GETW(SC.CNO,SC.SCORE):SC.SNO=’S3’DOWNSC.SCOREDOWN表示降序,後面緊跟排序的屬性名。昇冪排列時(shí)使用UP。
73(4)定額查詢例2.15
查詢一名男教師的教師號(hào)和姓名。GETW(1)(T.TNO,T.TN):T.SEX=’男’所謂的定額查詢就是通過在W後面的括弧中加上定額數(shù)量,限定查詢出元組的個(gè)數(shù)。這裏(1)表示查詢結(jié)果中男教師的個(gè)數(shù),取出教師表中第一個(gè)男教師的教師號(hào)和姓名。排序和定額查詢可以一起使用。例2.16
查詢一名男教師的教師號(hào)和姓名,並使他的年齡最小。GETW(1)(T.TNO,T.TN):T.SEX=’男’UPT.AGE此語(yǔ)句的執(zhí)行過程為:先查詢所有男教師的教師號(hào)和姓名,再按照年齡由小到大排序,然後找出第一位,也就是年齡最小的男教師。
74(5)帶元組變數(shù)的查詢所謂的元組關(guān)係演算就是以元組變數(shù)作為謂詞變?cè)幕緦?duì)象,在關(guān)係演算的查詢操作時(shí),可以在相應(yīng)的關(guān)係上定義元組變數(shù)。元組變數(shù)代表關(guān)係中的元組,其取值是在所定義的關(guān)係範(fàn)圍內(nèi)變化,所以也稱作範(fàn)圍變數(shù)RangeVariable,一個(gè)關(guān)係可以設(shè)多個(gè)元組變數(shù)。例2.17
查詢S3同學(xué)所選課程號(hào)。RANGESCXGETW(X.CNO):X.SNO=’S3’使用RANGE來說明元組變數(shù),X為關(guān)係SC上的元組變數(shù)。如果關(guān)係的名字很長(zhǎng),使用起來不方便,這時(shí)可以設(shè)一個(gè)名字較短的元組變數(shù)來代替關(guān)係名,簡(jiǎn)化關(guān)係名,使操作更加方便。75(6)帶存在量詞的查詢例2.18
查詢S3同學(xué)所選課程名。RANGESCXGETW(C.CN):
X(C.CNO=X.CNO∧X.SNO=’S3’)注意:操作條件中使用量詞時(shí)必須用元組變數(shù)。例2.19
查詢至少選修一門其課時(shí)數(shù)為80的課程的學(xué)生的姓名。RANGECCXSCSCXGET W(S.SN):
SCX(SCX.SNO=S.SNO∧
CX(CX.CNO=SCX.CNO∧CX.CT=80))76此查詢涉及三個(gè)關(guān)係,需要對(duì)兩個(gè)關(guān)係(C和SC)作用存在量詞,所以用了兩個(gè)元組變數(shù)。此語(yǔ)句的執(zhí)行過程為:先查詢課時(shí)數(shù)為80的課程號(hào),再根據(jù)找到的課程號(hào)在關(guān)係SC中查詢其對(duì)應(yīng)的學(xué)號(hào),然後根據(jù)為些學(xué)號(hào)在關(guān)係S中找到對(duì)應(yīng)的學(xué)生姓名。例2.20
查詢選修全部課程的學(xué)生姓名。RANGECCXSCSCXGET W(S.SN):
CX
SCX(XSC.SNO=S.SNO∧CX.CNO=SCX.CNO)77(7)庫(kù)函數(shù)查詢庫(kù)函數(shù)也稱集函數(shù)。用戶在使用查詢語(yǔ)言時(shí),經(jīng)常要作一些簡(jiǎn)單的運(yùn)算。例如要統(tǒng)計(jì)某個(gè)關(guān)係中符合某一條件的元組數(shù),或某些元組在某個(gè)屬性上分量的和、平均值等等。在關(guān)係資料庫(kù)語(yǔ)言中提供了有關(guān)這類運(yùn)算的標(biāo)準(zhǔn)函數(shù),增強(qiáng)了基本檢索能力。常用的庫(kù)函數(shù)下表所示函數(shù)名稱功能AVG按列計(jì)算平均值TOTAL按列計(jì)算值的總和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值計(jì)算元組個(gè)數(shù)78例2.21
求學(xué)號(hào)為S1學(xué)生的平均分。GETW(AVG(SC.SCORE):S.SNO=’S1’例2.22
求學(xué)校共有多少個(gè)系GETW(COUNT(S.DEPT))COUNT函數(shù)自動(dòng)消去重複行,可計(jì)算字段“DEPT“不同值的數(shù)目。2.數(shù)據(jù)更新更新操作包括修改、插入和刪除。(1)修改修改操作使用UPDATE語(yǔ)句實(shí)現(xiàn),具體操作分為以下三步:79①讀數(shù)據(jù):使用HOLD語(yǔ)句將要修改的元組從資料庫(kù)中讀到工作空間中;②修改:利用宿主語(yǔ)言修改工作空間中元組的屬性;③送回:使用UPDATE語(yǔ)句將修改後的元組送回資料庫(kù)中。這裏HOLD語(yǔ)句是帶上併發(fā)控制的GET語(yǔ)句。例2.23
把劉偉教師轉(zhuǎn)到資訊系。HOLDW(T.DEPT):T.TN=‘劉偉’MOVE’資訊’TOW.DEPTUPDATEW在ALPHA語(yǔ)言中,不允許修改關(guān)係的主碼,例如不能使用UPDATE語(yǔ)句修改教師表T中的教師號(hào)。如果要修改主碼,應(yīng)該先使用刪除操作刪除該元組,再插入一條具有新主碼值的元組。80(2)插入插入操作使用PUT語(yǔ)句實(shí)現(xiàn),具體操作分為以下兩步:①建立新元組:利用宿主語(yǔ)言在工作空間中建立新元組;②寫數(shù)據(jù):使用PUT語(yǔ)句將元組寫入到指定的關(guān)係中。例2.24
在SC表中插入一條選課記錄(S6,C1,85)。MOVES6TOW.SNOMOVEC1TOW.CNOMOVE85TOW.SCOREPUTW(SC)81PUT語(yǔ)句的作用是把工作空間W中的數(shù)據(jù)寫到資料庫(kù)中,此例即把已經(jīng)在工作空間建立的一條選課記錄寫入到選課關(guān)係SC中。注意:PUT語(yǔ)句只能對(duì)一個(gè)關(guān)係進(jìn)行操作,在插入操作時(shí),拒絕接受主碼相同的元組。(3)刪除ALPHA語(yǔ)言中的刪除操作不但可以刪除關(guān)係中的一些元組,還可以刪除一個(gè)關(guān)係。刪除操作使用DELETE語(yǔ)句實(shí)現(xiàn),具體操作分為以下兩步:①讀數(shù)據(jù):使用HOLD語(yǔ)句將要?jiǎng)h除的元組從資料庫(kù)中讀到工作空間中;②刪除:使用DELETE語(yǔ)句刪除該元組。82例2.25
刪除學(xué)號(hào)為S6的學(xué)生的資訊。HOLDW(S):S.SNO=‘S6’DELETEW例2.26
刪除全部學(xué)生的資訊。HOLDW(S)DELETEWQUEL語(yǔ)言INGRES是加利福尼亞大學(xué)研製的關(guān)係資料庫(kù)管理系統(tǒng),QUEL語(yǔ)言是INGRES系統(tǒng)的查詢語(yǔ)言,它以ALHPA語(yǔ)言為基礎(chǔ),具有較為完善的數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)更新、數(shù)據(jù)控制等功能。QUEL語(yǔ)言既可以作為獨(dú)立的語(yǔ)言進(jìn)行互動(dòng)式操作,也可以作為子語(yǔ)言嵌入到主語(yǔ)言中去。831.?dāng)?shù)據(jù)定義QUEL語(yǔ)言可以使用CREATE語(yǔ)句定義一個(gè)新關(guān)係,CREATE語(yǔ)句的一般格式為:CREATE<關(guān)係名>(<屬性名=數(shù)據(jù)類型及長(zhǎng)度>[,<屬性名=數(shù)據(jù)類型及長(zhǎng)度>…])例2.27
定義學(xué)生關(guān)係SCREATES (SNO=C8,SN=C20,AGE=I3,SEX=C2,DEPT=C20)關(guān)係定義後可以由定義者撤銷,撤銷關(guān)係使用語(yǔ)句DESTROY例如,撤銷學(xué)生關(guān)係S可以寫成:DESTROYS。842.?dāng)?shù)據(jù)查詢查詢語(yǔ)句的一般格式為:RANGEOFt1ISR1RANGEOFt2ISR2……RANGEOFtkISRkRETRIEVE(目標(biāo)表)WHERE<條件>85其中t1、t2、…tk分別是定義在關(guān)係R1、R2、Rk上的元組變數(shù)。目標(biāo)表為查詢的目標(biāo)屬性。查詢條件是一個(gè)邏輯運(yùn)算式,在運(yùn)算式中可以使用如下三類運(yùn)算符:①
比較運(yùn)算符:>(大於),≥(大於等於),<(小於),≤(小於等於),=(等於),≠(不等於);②邏輯運(yùn)算符:AND(與),OR(或),NOT(非)③表示執(zhí)行次序的括弧:()其中,比較運(yùn)算符的優(yōu)先順序高於邏輯運(yùn)算符,可以使用()改變它們的優(yōu)先順序。
86例2.28
查詢電腦系工資高於1000元的教師的姓名和工資。RANGEOFTXISTRETRIEVE(TX.TN,TX.SAL)WHERETX.DEPT=’電腦’∧TX.SAL>1000例2.29
查詢講授C5課程的教師的姓名。RANGEOFTXISTRANGEOFTCXISTCRETRIEVE(TX.TN)WHERETX.TNO=TCX.TNOANDTCX.CNO=’C5’873.?dāng)?shù)據(jù)更新(1)修改修改操作使用REPLACE語(yǔ)句實(shí)現(xiàn)。例2.30
把劉偉教師轉(zhuǎn)到資訊系。RANGEOFTXISTREPLACE(TX.DEPT=’資訊’)WHERETX.TN=‘劉偉’(2)插入插入操作使用APPEND語(yǔ)句實(shí)現(xiàn)。例2.31
在SC表中插入一條選課記錄(S6,C2,80)。APPENDTOSC(SNO=‘S6’,CNO=‘C2’,SCORE=80)88(3)刪除刪除操作使用DELETE語(yǔ)句實(shí)現(xiàn)。例2.32
刪除學(xué)號(hào)為S6的學(xué)生的資訊。RANGEOFSXISSDELETESXWHERESX.SNO=‘S6’2.7.2域關(guān)係演算語(yǔ)言QBE域關(guān)係演算是關(guān)係演算的另一種形式。域關(guān)係演算是以元組變數(shù)的分量即域變數(shù)作為謂詞變?cè)幕緦?duì)象。域關(guān)係演算語(yǔ)言的典型代表是1975年由IBM公司約克城高級(jí)研究試驗(yàn)室的M.M.Zloof提出的QBE語(yǔ)言,該語(yǔ)言於1978年在IBM370上實(shí)現(xiàn)。89QBE是QueryByExample的縮寫,也稱為示例查詢,它是一種很有特色的螢?zāi)痪庉嬚Z(yǔ)言,其特點(diǎn)如下:(1)以表格形式進(jìn)行操作每一個(gè)操作都由一個(gè)或幾個(gè)表格組成,每一個(gè)表格都顯示在終端的螢?zāi)簧?,用戶通過終端螢?zāi)痪庉嫵淌揭蕴顚懕砀竦姆绞綐?gòu)造查詢要求,查詢結(jié)果也以表格的形式顯示出來,所以它具有直觀和可對(duì)話的特點(diǎn)。(2)通過例子進(jìn)行查詢通過使用一些實(shí)例,使該語(yǔ)言更易於為用戶接受和掌握。(3)查詢順序自由當(dāng)有多個(gè)查詢條件時(shí),不要求使用者按照固定的思路和方式進(jìn)行查詢,使用更加方便。
90使用QBE語(yǔ)言的步驟:(1)用戶根據(jù)要求向系統(tǒng)申請(qǐng)一張或幾張表格,顯示在終端上;(2)用戶在空白表格的左上角的一欄內(nèi)輸入關(guān)係名;(3)系統(tǒng)根據(jù)用戶輸入的關(guān)係名,將在第一行從左至右自動(dòng)填寫各個(gè)屬性名;(4)用戶在關(guān)係名或?qū)傩悦路降囊桓駜?nèi)填寫相應(yīng)的操作命令,操作命令包括:P.(列印或顯示)、U.(修改)、I.(插入)、D.(刪除)。如果要列印或顯示整個(gè)元組時(shí),應(yīng)將“P”填在關(guān)係名的下方,如果只需列印或顯示某一屬性,應(yīng)將“P”填在相應(yīng)屬性名的下方。
91表格形式如表2.2所示
表2.2QBE操作框架表關(guān)係名屬性1屬性2…屬性n操作命令屬性值或查詢條件屬性值或查詢條件…屬性值或查詢條件92
數(shù)據(jù)查詢1.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)停車場(chǎng)車位銷售與服務(wù)一體化管理協(xié)議
- 車輛租賃中介服務(wù)質(zhì)押擔(dān)保合同
- 智能化廠房鋼結(jié)構(gòu)設(shè)計(jì)與施工總承包合同
- 旅游景區(qū)車位包銷及文創(chuàng)產(chǎn)品開發(fā)合作協(xié)議
- 通訊設(shè)備典當(dāng)質(zhì)押借款服務(wù)合同范本
- 高端叉車大修與維護(hù)一體化合同樣本
- 破解采購(gòu)腐敗難題的廉政協(xié)議
- 搬運(yùn)工勞動(dòng)保護(hù)與安全培訓(xùn)協(xié)議
- 按揭二手房買賣合同風(fēng)險(xiǎn)評(píng)估與解決方案
- 金融行業(yè)專業(yè)代理記賬合同
- 1-STM32F4xx中文參考手冊(cè)
- 集裝箱采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 電子信息工程技術(shù)專業(yè)職業(yè)生涯規(guī)劃書
- 國(guó)開2023秋《人文英語(yǔ)3》第1-4單元作文練習(xí)參考答案
- 世界各國(guó)國(guó)家代號(hào)、區(qū)號(hào)、時(shí)差
- JGT388-2012 風(fēng)機(jī)過濾器機(jī)組
- 《靈飛經(jīng)》硬筆字帖精臨篇137張(可打印)
- 油漆工承包合同
- 2023屆遼寧省撫順市新?lián)釁^(qū)五年級(jí)數(shù)學(xué)第二學(xué)期期末綜合測(cè)試試題含解析
- 失血性休克應(yīng)急預(yù)案及處理流程
- 上市公司執(zhí)行企業(yè)會(huì)計(jì)準(zhǔn)則案例解析-中國(guó)證監(jiān)會(huì)會(huì)計(jì)部編
評(píng)論
0/150
提交評(píng)論