999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關系代數(shù)在數(shù)據(jù)庫實驗教學的實踐研究

2021-08-06 08:27:48譚毓銀李懷成繆為民
現(xiàn)代計算機 2021年18期
關鍵詞:課程學生

譚毓銀,李懷成,繆為民

(海南大學計算機與網(wǎng)絡空間安全學院,海口570228)

0 引言

《數(shù)據(jù)庫系統(tǒng)概論》[1]是我校信息類的專業(yè)必修課,其教學目標是向學生介紹數(shù)據(jù)庫系統(tǒng)的基本概念及其構成,使學生掌握基本的關系數(shù)據(jù)庫理論和典型關系數(shù)據(jù)語言SQL的編程。而關系代數(shù)運算及SQL語句用法是本課的重點和難點,SQL語句在實際的數(shù)據(jù)庫開發(fā)運用中較靈活,其理論基礎離不開對關系代數(shù)運算的理解[2-4]。

通過多年的教學,發(fā)現(xiàn)本課程涉及大量的理論講解,教學基本采用教材所給的案例,每章節(jié)所舉例題不盡相同,往往是東一個西一個,沒有緊密的連貫性,缺乏統(tǒng)一的教學項目和案例設計,教學效果并不是很好,造成學員學習目的不明確,成就感不強,消極對待數(shù)據(jù)庫原理知識和SQL語言的學習[5-7]。

在實驗教學過程中,先以學生接觸較多的學生選修課程模型為依托,合理設計教學案例,輔以圖示分解教學,幫助學生掌握關系代數(shù)的運算,再講解SQL語句基本用法,最后通過在實驗中用SQL語句來實現(xiàn)關系代數(shù)運算,從而加深學生對SQL語句用法和關系代數(shù)運算的理解,為數(shù)據(jù)庫查詢打下堅實的基礎。

1 關系代數(shù)運算

關系代數(shù)是一種抽象的查詢語言,它用對關系的運算來表達查詢,是處理關系數(shù)據(jù)庫的重要數(shù)學基礎,是關系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達方式。

關系代數(shù)運算按運算符的不同可分為傳統(tǒng)的集合運算和專門的關系運算兩類。傳統(tǒng)的集合運算是二目運算,包括并、差、交、笛卡爾積4種運算;專門的關系運算包括選擇、投影、連接、除運算等[1]。

設有學生關系Stud、學生關系Other、課程關系Course和選修關系StudCous,如表1-表4所示。下面的關系代數(shù)運算將對這四個關系進行運算。

表1 Stud關系

表2 Other關系

表3 Stud關系

表4 StudCous關系

1.1 傳統(tǒng)的集合運算

設關系R和關系S具有相同的目n(即兩個關系都有n個屬性),且相應的屬性取自同一個域,t是元組變量,t∈R表示t是R的一個元組。

(1)并運算:將R與S合并,并且去掉重復元組后所構成的一個關系。

例1:將Stud與Other合并成SU關系,關系代數(shù)運算表達式為:

關系運算的結果如表5所示。因為Other關系中的“714002”“714004”所對應的元組已經(jīng)存在于Stud關系中,所以合并后的關系只保留了一份。

表5 并運算后的SU關系

表6 交運算后的SN關系

(2)交運算:由既屬于R又屬于S的元組組成的新關系。

例2:將Stud與Other相交成SN關系,關系代數(shù)運算表達式為:

關系運算的結果如表6所示。因為Stud及Other關系中都有“714002”“714004”所對應的元組,所以相交后的關系只是由共同存在于這兩個關系的元組所組成的新關系。

(3)差運算:由屬于R而不屬于S的所有元組組成,即在R中去掉R與S相同的元組。

例3:將Stud與Other進行差運算,關系代數(shù)運算表達式為:

關系運算的結果如表7所示。因為Stud及Other關系中都有“714002”“714004”所對應的元組,所以差運算就是在Stud關系中去掉這兩個相同元組后所組成的新關系。

表7 差運算后的SM關系

(4)笛卡爾積

這里的笛卡爾積嚴格地講應該是廣義的笛卡爾積。設有n元關系R及m元關系S,它們分別有p、q個元組,則關系R與S經(jīng)笛卡爾積記為R×S,該關系是一個n+m元關系,元組個數(shù)是p×q,由R與S的有序組組合而成。即用R中的每個元組分別與S中的所有元組相結合組成一個新的關系。新的關系的屬性個數(shù)為R與S屬性個數(shù)之和,元組個數(shù)為R與S元組個數(shù)相乘積。

例4:將Stud與StudCous進行笛卡爾積運算,關系代數(shù)運算表達式為:

關系運算的結果如表8所示。

從表8中,可以看出,笛卡爾積實際上用左邊關系的每一行分別與右邊關系的所有行進行相乘(或相合并)。注意:笛卡爾積的全集在應用中是沒有意義的。這里列出全集只是表示全部可能的組合而已,并不代表實際上有這么多可行的組合。笛卡爾積運算是為后面的連接、自然連接等做準備。

表8 笛卡爾積后的SCP關系

1.2 專門的關系運算

(1)選擇:它是由關系R中滿足邏輯條件的元組所組成的新的關系,記作:

邏輯條件F表示選擇條件,它是一個邏輯表達式,取邏輯值“true”或“false”。

例5:查詢關系Stud中Dept為“計算機科學”的信息。

結果如表9所示。Stud關系原來有5個元組,而執(zhí)行邏輯條件Dept=“計算機科學”運算后,只有2個元組滿足條件。講到這里,大家發(fā)現(xiàn),選擇運算是對關系進行元組(行)的選取,當然,如果有重復的行,還需要刪除重復行后形成新的關系。

表9 選擇運算后的關系

(2)投影:它是從R中選取出若干屬性列,去掉重復的元組所組成新的關系,記作:

例6:查詢關系Stud中Dept的信息。

關系代數(shù)運算式為:∏Dept( S tud)

結果如表10所示。R關系原來有5個元組,而投影結果消除了重復的部分元組,因此只有3個元組。講到這里,大家發(fā)現(xiàn),投影不僅取消了原關系中的某些列,而且還可能消去了某些元組,因為取消了某些屬性列后,就可能出現(xiàn)重復行,就取消這些完全相同的行。所以投影是能夠把一個關系的屬性域變小的運算。

表10 投影運算后的關系

所以,有了投影、選擇運算,我們就可以方便地找到一個關系內的任意行、列的數(shù)據(jù)。

(3)連接:它是從關系R和關系S的笛卡爾積中選取屬性間滿足一定條件的元組。記作:

其中,A和B分別為R和S上列數(shù)相等且可比的屬性組,θ是比較運算符。因此,連接也稱為θ連接。當θ為“=”時的連接運算稱為等值連接,可以記為:

例7:查詢每個學生及其選修課程的情況。關系Stud與關系StudCous進行Sno=S sn o的等值連接。關系代數(shù)運算式為:SW=StudSno=Ssno StudCous

結果如表11所示。該關系實際上是在表8關系中進行邏輯條件為“Sno=S sn o”的選擇運算后得到的新關系,該運算大大減少了元組的個數(shù)。但是請大家注意Sno和S sn o屬性對應的值是一樣的。假如我們把S sno屬性名改為Sno,就將會變成自然連接。

表11 等值連接后的SW關系

(4)自然連接:自然連接是一種特殊的等值連接。它要求:①兩個關系要有公共的屬性域;②通過公共域的相等值進行連接。記作:

例8:假設我們將關系StudCous中的S sn o屬性改名為Sno,把關系Stud與改名后的關系StudCous進行自然連接。

關系代數(shù)運算式為:SP=Stud?StudCous

結果如表12所示。該關系和表11的關系很類似,只是少了Sno(S sn o已經(jīng)更名為Sno)的同名屬性列。即自然連接是在等值連接的基礎上,消除兩個關系的公共屬性域的連接。

表12 自然連接后的SP關系

一般的連接操作是從行的角度進行運算,但自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。

(5)除運算

設關系R除以關系S的結果為T,則T包含所有在R但不在S中的屬性及其值,且T的元組與S的元組的所有組合都在R中。記作:

這個定義是教材給出的。在這幾種運算中,除法運算復雜、抽象,是教學環(huán)節(jié)中的難點問題,學生理解起來比較困難[8]。如何來講解除法運算呢?

我們先對StudCous關系的S sn o和Cno屬性做投影操作,即:SCNO=∏Ssno,Ccno(StudCous),得到的關系SCNO如表13所示。再對Course關系的Cno屬性做投影操作,即:CNO=∏Cno(Course),得到的關系CNO如表14所示。那么SCNO÷CNO得到的關系SSNO如表15所示。這實際上就是:

表13 SCNO關系

表14 CNO關系

表15 SSNO關系

例9:查詢選修了所有課程的學生姓名。

2 SQL中關系代數(shù)運算的實現(xiàn)

2.1 SQL簡介

SQL(Structured Query Language)是關系數(shù)據(jù)庫的標準語言,也是一個通用的、功能極強的關系數(shù)據(jù)庫語言。其主要特點包括:綜合統(tǒng)一、高度非過程化、面向集合的操作方式、以同一種語法結構提供多種使用方式、語言簡潔、易學易用等。

2.2 數(shù)據(jù)查詢

數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。SQL提供了SELECT語句進行數(shù)據(jù)查詢,該語句具有靈活的使用方式和豐富的功能[10]。其一般格式為:

基本的工作原理:FROM子句先被執(zhí)行,通過FROM子句獲得一個虛擬表,然后通過WHERE子句從虛擬表中獲取滿足條件的記錄,生成新的虛擬表。將新虛擬表中的記錄通過GROUP BY子句分組后得到更新的虛擬表,而后HAVING子句在最新的虛擬表中篩選出滿足條件的記錄組成另外一個虛擬表中,SELECT子句會將指定的列提取出來組成更新的虛擬表,最后ORDER BY子句對其進行排序得出最終的虛擬表。通常這個最終的虛擬表被稱為查詢結果集[11]。

2.3 SQL實現(xiàn)

每種關系運算在SQL中都有對應的實現(xiàn),Union、Intersect、Except分別對應集合運算中的并、交、差運算,但在SQL Server中不支持Intersect、Except運算符的使用。本實驗通過在SQL Server 2008環(huán)境下實現(xiàn)關系代數(shù)的各種運算(例1-例9),使學生在感性上進一步認識關系代數(shù)在數(shù)據(jù)庫中的應用,從而更深刻地理解了關系代數(shù)運算和更熟練地掌握了SQL語句的用法[12]。

例1中并運算的SQL語句

Select*from Stud Union Select*from Other

例2中交運算的SQL語句

Select Stud.*from Stud,Other Where Other.Sno=Stud.Sno)

例3中差運算的SQL語句

Select*from Stud Where Sno not in(Select Sno from Other)

例4中笛卡爾積運算的SQL語句

Select*from Stud,StudCous

例5中選擇運算的SQL語句

Select*from Stud Where Dept=^'計算機科學'例6中投影運算的SQL語句

Select Distinct Dept from Stud

例7中等值連接運算的SQL語句

Select*from Stud,StudCous Where Stud.Sno=Stud?Cous.Ssno

例8中自然連接運算的SQL語句

Select*from Stud,StudCous Where Stud.Sno=Stud?Cous.Sno

例9的SQL語句,除運算

Select Sname From Stud Where not exists

(Select*From Course Where not exists

(Select*From StudCous Where Stud.Sno=StudCous.Ssno

And Course.Cno=StudCous.Ccno

注意,在做連接查詢時,至少涉及兩個以上的表,用到的關系運算為笛卡爾積或連接或自然連接。但它們都是在笛卡爾積的基礎上所進行的操作。

最后,我們利用教材中的一個例子,引導學生思考查詢優(yōu)化的步驟,激發(fā)學生對查詢優(yōu)化的興趣。

例3.51查詢選修了95203的課程且成績在80分以上的所有學生的學號和姓名。

Select Stud.Sno,Stud.Sname From Stud,StudCous

Where Stud.Sno=StudCous.Ssno and StudCous.Score>=80

對應的關系代數(shù)運算表達式為:

從這個表達式中,先是關系Stud與StudCous做笛卡爾積運算,然后再選取滿足邏輯條件為σCcno=95203∧Score≥80的元組組成一個虛擬表關系,再對該關系的Sno,Sname列進行投影運算,如果有重復行,去掉重復行后組成查詢結果集。在課堂講解上,就用表8笛卡爾積運算的結果來演示,讓學生知道會產生大量的元組及屬性,然后引出優(yōu)化的問題。

該查詢優(yōu)化的思想是先從StudCous中選取出σCcno=95203∧Score≥80的元組形成一個虛擬表關系,再和Stud中滿足連接條件的元組進行連接得到最終的結果關系。

由此,一步步引導學生進行查詢優(yōu)化的提出,在加強學生關系代數(shù)的學習的同時,也為后續(xù)學生學習SQL查詢優(yōu)化指引了一個方向。

3 結語

關系代數(shù)運算是數(shù)據(jù)庫原理課中較為抽象的內容,是SQL查詢的理論基礎。如果以純理論教學為主,學生不能真正理解關系代數(shù)運算,也就不可能寫出優(yōu)異的SQL語句。這就要求教師在設計教學案例時,能夠縱覽全局,設計前后統(tǒng)一、連貫性強的教學項目案例,將能幫助學生快速理解該知識點乃至該門課程起到至關重要的作用,同時也能提高學生的實驗動手能力。由于該課程在近幾年中一直是我校的教學示范課程,2018年3月該課程成為“第二批海南省高校精品在線開放課程立項建設課程”。

猜你喜歡
課程學生
《無機化學》課程教學改革
云南化工(2021年6期)2021-12-21 07:31:42
快把我哥帶走
數(shù)字圖像處理課程混合式教學改革與探索
軟件設計與開發(fā)實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
為什么要學習HAA課程?
《李學生》定檔8月28日
電影(2018年9期)2018-11-14 06:57:21
趕不走的學生
學生寫話
學生寫的話
“學而時習之”的課程值得贊賞
主站蜘蛛池模板: 亚洲国产成人自拍| 国内精自视频品线一二区| 97国产精品视频自在拍| 天天摸夜夜操| 一区二区三区四区日韩| 久久久久免费看成人影片| 国产99欧美精品久久精品久久| 日韩 欧美 国产 精品 综合| 亚洲精品国产综合99| 中文字幕永久视频| 这里只有精品国产| 久久96热在精品国产高清| 国产99在线| 亚洲无码A视频在线| 国产专区综合另类日韩一区| 4虎影视国产在线观看精品| 嫩草在线视频| 国产微拍精品| 91欧美在线| 天堂在线www网亚洲| 午夜精品福利影院| 一级毛片在线播放免费观看| 97精品伊人久久大香线蕉| 欧美三级视频网站| 亚洲天堂视频网站| 毛片基地美国正在播放亚洲 | 国产迷奸在线看| 国产人成乱码视频免费观看| 亚洲人妖在线| 99久久人妻精品免费二区| 久久久成年黄色视频| 亚洲自拍另类| 夜夜操狠狠操| 99热国产这里只有精品无卡顿"| 精品成人一区二区三区电影| AV不卡国产在线观看| 国产日韩丝袜一二三区| 久久国产av麻豆| 欧美一级色视频| 日韩毛片基地| 一级毛片不卡片免费观看| 亚洲无码久久久久| 欧美成人午夜影院| 国产精品99久久久| 污污网站在线观看| 天天操天天噜| 亚洲综合第一页| 欧美成人综合视频| 亚洲av无码久久无遮挡| 国产一区二区精品高清在线观看 | 99re精彩视频| 亚洲色大成网站www国产| 国产亚洲精久久久久久久91| 国产爽歪歪免费视频在线观看| aaa国产一级毛片| 久久久久久久久18禁秘| 男女男免费视频网站国产| 日韩欧美亚洲国产成人综合| 日韩精品亚洲精品第一页| 久久黄色一级视频| 国产av一码二码三码无码| 欧美黄网在线| 色国产视频| 色婷婷色丁香| 国产色婷婷| 中文字幕日韩视频欧美一区| 日韩无码黄色| 国产精品欧美在线观看| 国产精品真实对白精彩久久| 国产色爱av资源综合区| 日韩欧美高清视频| 精品国产福利在线| 国产理论一区| 日本亚洲成高清一区二区三区| 久久久久久尹人网香蕉| 91成人在线观看| 欧美性爱精品一区二区三区| 久久精品女人天堂aaa| 国产粉嫩粉嫩的18在线播放91| 亚洲天堂.com| 伊人国产无码高清视频| 日韩一区二区在线电影|