數(shù)據(jù)庫技術(shù)與應(yīng)用教案new_第1頁
數(shù)據(jù)庫技術(shù)與應(yīng)用教案new_第2頁
數(shù)據(jù)庫技術(shù)與應(yīng)用教案new_第3頁
數(shù)據(jù)庫技術(shù)與應(yīng)用教案new_第4頁
數(shù)據(jù)庫技術(shù)與應(yīng)用教案new_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫技術(shù)與應(yīng)用SQLServer&VB.NET數(shù)據(jù)庫技術(shù)與應(yīng)用本書目錄1學(xué)習(xí)目標(biāo)學(xué)會設(shè)計數(shù)據(jù)庫按工程規(guī)范完成數(shù)據(jù)庫設(shè)計和創(chuàng)建;E-R圖、E-R圖到關(guān)系模式的轉(zhuǎn)換、規(guī)范化處理、建庫、建表。學(xué)會管理數(shù)據(jù)庫數(shù)據(jù)庫保護技術(shù)包括:完整性、安全性、并發(fā)控制和數(shù)據(jù)庫恢復(fù)。學(xué)會應(yīng)用數(shù)據(jù)庫學(xué)習(xí)用VB.NET訪問數(shù)據(jù)庫的技術(shù)和方法;完成一個實際的數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計。設(shè)計數(shù)據(jù)庫管理數(shù)據(jù)庫應(yīng)用數(shù)據(jù)庫數(shù)據(jù)庫教學(xué)目標(biāo)數(shù)據(jù)庫教學(xué)內(nèi)容數(shù)據(jù)庫體系結(jié)構(gòu)關(guān)系數(shù)據(jù)庫基本理論數(shù)據(jù)庫設(shè)計理論完整性控制并發(fā)性控制安全性控制數(shù)據(jù)恢復(fù)控制VB.NET窗體應(yīng)用程序設(shè)計ADO.NET體系結(jié)構(gòu)數(shù)據(jù)庫應(yīng)用程序設(shè)計實踐平臺:SQLServerVB.NET實踐平臺:SQLServer目錄第一章數(shù)據(jù)庫技術(shù)概論第二章關(guān)系數(shù)據(jù)庫第三章數(shù)據(jù)庫設(shè)計第四章SQLServer與標(biāo)準SQL語言第五章TRANSACT-SQL、存儲過程和觸發(fā)器第六章數(shù)據(jù)庫保護機制第七章VB.NET程序設(shè)計第八章ADO.NET與數(shù)據(jù)庫訪問技術(shù)第九章數(shù)據(jù)庫應(yīng)用程序開發(fā)第七章VB.NET程序設(shè)計1.VB.NET概述

2.VB.NET集成開發(fā)環(huán)境3.使用幫助系統(tǒng)

VB.NET概述1.VisualBasic的發(fā)展20世紀60年出現(xiàn)Basic語言;20世紀80年代,TrueBasic、QuickBasicTurboBasic等;1991年Microsoft公司推出VisualBasic1.0,以可視化工具為界面設(shè)計、結(jié)構(gòu)化Basic語言為基礎(chǔ),以事件驅(qū)動為運行機制。從1991年的VB1.0至1998年的VB6.0的多次版本升級,功能更強大、完善,應(yīng)用面更廣;2002年正式發(fā)布VisualBasic.NET。2.Microsoft.NET概述

什么是.NET?.NET代表了一個集合、一個環(huán)境、一個編程的基本結(jié)構(gòu),作為一個平臺來支持下一代的Internet。.NET也是一個用戶環(huán)境,是一組基本的用戶服務(wù),可以作用于客戶端、服務(wù)器或任何地方。對初學(xué)VB的人來說,可以這樣認為,.NET就是VisualStudio.NET。VB.NET概述VisualStudio.NETWindows應(yīng)用程序ASP.NET程序中間語言(IL)程序(EXE)基礎(chǔ)類庫第一次編譯第二次編譯在不同的CPU上運行VB.NETVJ#.NETVC++.NETVC#.NETVisualStudio.NETCLRVB.NET特點1引例例1.1簡單的動畫演示。一行文字“歡迎走進數(shù)據(jù)庫技術(shù)與應(yīng)用的課堂”在具有背景圖案的窗體中上、下移動。移動方法有兩種:單擊手動按鈕,移動5個像素單位;單擊自動按鈕,按定時器觸發(fā)頻率連續(xù)移動;當(dāng)內(nèi)容超出窗體范圍時,進行反彈。引例根據(jù)要求,用工具箱上的Label、Button、Timer等控件,在窗體上建立控件對象,進行有關(guān)的屬性設(shè)置。

引例:編寫事件過程VB.NET功能特點提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境具有面向?qū)ο蟮目梢暬O(shè)計工具事件驅(qū)動的編程機制支持結(jié)構(gòu)化程序設(shè)計,具有面向?qū)ο蟪绦蛟O(shè)計語言的所有特征具有豐富的數(shù)據(jù)類型、功能強大的類庫強大的數(shù)據(jù)庫功能網(wǎng)絡(luò)功能完備的幫助功能VB.NET的集成開發(fā)環(huán)境進入VB.NET啟動VisualStudio.NET“起始頁”選擇“新建項目/打開項目”按鈕

VisualBasic項目

Windows應(yīng)用程序

VB.NET集成開發(fā)環(huán)境

解決方案資源管理器窗口屬性窗口

菜單欄

工具欄

工具箱

輸出窗口

窗體窗口

選項卡組欄

主窗口1.三種工作模式設(shè)計模式界面的設(shè)計和代碼的編制

運行模式運行應(yīng)用程序

中斷模式暫時中斷程序運行,調(diào)試程序2.菜單欄包括11個下拉菜單3.工具欄窗體設(shè)計/代碼設(shè)計窗口1.窗體設(shè)計器窗口建立VB.NET應(yīng)用程序的界面(一個應(yīng)用程序可以有多個窗體,通過“項目|添加Windows窗體”命令增加新窗體)。2.代碼設(shè)計窗口專門用來進行代碼設(shè)計,包括各種事件過程、過程和類等源程序代碼的編寫和修改。打開代碼設(shè)計窗口的方法:雙擊窗體、控件或單擊代碼窗口上方的選項卡組對應(yīng)項。屬性窗口窗體和控件稱為對象,每個對象用一組屬性來描述其外部特征,如顏色、大小等。屬性窗口用于顯示和設(shè)置所選定的對象的屬性。屬性窗口由四部分組成:對象和名稱空間列表框?qū)傩燥@示排列方式

屬性列表框?qū)傩院x說明解決方案資源管理器窗口項目一個獨立的編程單位(包含窗體文件及其他一些相關(guān)文件),若干項目組成一個解決方案解決方案可以含有以下類型的文件:解決方案文件(.sln)

可包括用不同語言開發(fā)的項目項目文件(.vbproj)

由引用的組件和代碼模塊組成代碼模塊文件(.vb)

包括窗體文件、類模塊或其他代碼文件使用幫助系統(tǒng)動態(tài)幫助屬性窗口“動態(tài)幫助”標(biāo)簽卡內(nèi)索引使用上下文相關(guān)的幫助按“F1”鍵網(wǎng)絡(luò)資源通過http:///china/msdn網(wǎng)站,獲得最新、最及時的有關(guān)幫助信息。

第一章數(shù)據(jù)庫技術(shù)概論數(shù)據(jù)管理的過去、現(xiàn)在和未來

人工管理階段文件系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段及其發(fā)展過程數(shù)據(jù)庫技術(shù)的廣泛應(yīng)用領(lǐng)域發(fā)展方向手工管理階段應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n…數(shù)據(jù)集n數(shù)據(jù)集2數(shù)據(jù)集1…人工管理階段實例/*程序1:求10個數(shù)之和*/#include<stdio.h>main(){

int

i,s=0;

inta[10]={66,55,75,42,86,77,96,89,78,56};

for(i=0;i<10;i++)s=s+a[i];

printf(“%d”,s);}/*程序2:求10個數(shù)中的最大#include<stdio.h>main(){

int

i,max=0;

inta[10]={66,55,75,42,86,77,96,89,78,56};max=a[0];

for(i=1;i<10;i++)if(max<a[i])max=a[i];

printf(“%d”,max);}文件系統(tǒng)階段應(yīng)用程序1文件1應(yīng)用程序2文件2……應(yīng)用程序n文件n文件系統(tǒng)文件系統(tǒng)階段實例/*程序4:求文件中10個數(shù)的最大值*/#include<stdio.h>main(){

int

i,x,max=-32767;FILE*fp;/*打開文件*/

fp=fopen("c:\\data.dat","r");

for(i=0;i<10;i++){/*文件中讀數(shù)據(jù)*/fscanf(fp,"%d",&x);if(max<x)max=x;}

printf("%d",max);

fclose(fp);/*關(guān)閉文件*/}/*程序3:求文件中10個數(shù)之和*/#include<stdio.h>main(){

int

i,x,s=0;FILE*fp;/*打開文件*/

fp=fopen("c:\\data.dat","r");

for(i=0;i<10;i++){/*文件中讀數(shù)據(jù)*/fscanf(fp,"%d",&x);s=s+x;}

printf("%d",s);

fclose(fp);/*關(guān)閉文件*/}數(shù)據(jù)庫系統(tǒng)階段…應(yīng)用程序1應(yīng)用程序2應(yīng)用程序nDBMS數(shù)據(jù)庫

數(shù)據(jù)庫技術(shù)滿足了集中存儲大量數(shù)據(jù)以方便眾多用戶使用的需求,數(shù)據(jù)庫系統(tǒng)的特點是:①采用一定的數(shù)據(jù)模型

在數(shù)據(jù)庫中,數(shù)據(jù)按一定的方式存儲,即按一定的數(shù)據(jù)模型組織數(shù)據(jù),最大限度地減少數(shù)據(jù)的冗余。關(guān)于數(shù)據(jù)模型將在以后的章節(jié)中介紹。②最低的冗余度

數(shù)據(jù)冗余是指在數(shù)據(jù)庫中數(shù)據(jù)的重復(fù)存放。數(shù)據(jù)冗余不僅浪費了大量的存儲空間,而且還會影響數(shù)據(jù)的正確性。數(shù)據(jù)冗余是不可避免的,但是數(shù)據(jù)庫可以最大限度地減少數(shù)據(jù)的冗余,確保最低的冗余度。③有較高的數(shù)據(jù)獨立性

處理數(shù)據(jù)時用戶所面對的是簡單的邏輯結(jié)構(gòu),而不涉及具體的物理存儲結(jié)構(gòu),數(shù)據(jù)的存儲和使用數(shù)據(jù)的程序彼此獨立,數(shù)據(jù)存儲結(jié)構(gòu)的變化盡量不影響用戶程序的使用,使得應(yīng)用程序保持不變。④安全性

并不是每一個用戶都應(yīng)該訪問全部數(shù)據(jù),通過設(shè)置用戶的使用權(quán)限以防止數(shù)據(jù)的非法使用,能防止數(shù)據(jù)的丟失,在數(shù)據(jù)庫被破壞時,系統(tǒng)有能力把數(shù)據(jù)庫恢復(fù)到可用狀態(tài)。⑤完整性

系統(tǒng)采用一些完整性檢驗以確保數(shù)據(jù)符合某些規(guī)則,保證數(shù)據(jù)庫中數(shù)據(jù)始終是正確的??傊瑪?shù)據(jù)庫系統(tǒng)能實現(xiàn)有組織地、動態(tài)地存儲大量有關(guān)聯(lián)的數(shù)據(jù),能方便多個用戶訪問。標(biāo)志著數(shù)據(jù)庫技術(shù)誕生的三個事件1968年研制成功、1969年形成產(chǎn)品的美國IBM公司的數(shù)據(jù)庫管理系統(tǒng)IMS(InformationManagementSystem)的問世,該系統(tǒng)支持的是層次數(shù)據(jù)模型。美國數(shù)據(jù)系統(tǒng)語言協(xié)會CODASYL(ConferenceOnDataSystemLanguage)下屬的數(shù)據(jù)庫任務(wù)組DBTG(DataBaseTaskGroup)對數(shù)據(jù)庫方法進行了系統(tǒng)的研究,在20世紀60年代末和70年代初發(fā)表了若干個報告(稱為DBTG報告),該報告建立了數(shù)據(jù)庫技術(shù)的很多概念、方法和技術(shù)。DBTG所提議的方法是基于網(wǎng)狀數(shù)據(jù)模型的。從1970年起,IBM的研究員E.F.Codd發(fā)表了一系列的論文,提出了數(shù)據(jù)庫的關(guān)系模型,開創(chuàng)了數(shù)據(jù)庫關(guān)系方法和關(guān)系數(shù)據(jù)理論的研究,為關(guān)系數(shù)據(jù)庫的發(fā)展和理論研究奠定了基礎(chǔ)。數(shù)據(jù)模型三要素數(shù)據(jù)模型應(yīng)包含數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束三個部分:數(shù)據(jù)結(jié)構(gòu)是指對實體類型和實體間聯(lián)系的表達和實現(xiàn);數(shù)據(jù)操作是指對數(shù)據(jù)庫的檢索和更新(包括插入、刪除和修改)兩類操作;數(shù)據(jù)完整性約束給出數(shù)據(jù)及其聯(lián)系應(yīng)具有的制約和依賴規(guī)則。

數(shù)據(jù)庫技術(shù)的發(fā)展數(shù)據(jù)庫技術(shù)的發(fā)展是根據(jù)數(shù)據(jù)模型的發(fā)展來劃分的。按照數(shù)據(jù)模型來劃分,數(shù)據(jù)庫技術(shù)的發(fā)展可分為三代:第一代的層次、網(wǎng)狀數(shù)據(jù)庫系統(tǒng);第二代的關(guān)系數(shù)據(jù)庫系統(tǒng);第三代的以面向?qū)ο竽P蜑橹饕卣鞯臄?shù)據(jù)庫系統(tǒng)。第一代:層次模型用樹型(層次)結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為層次模型(hierarchicalmodel)。層次模型的特點是記錄之間的聯(lián)系通過指針來實現(xiàn),查詢效率較高;有且僅有一個結(jié)點無父結(jié)點,這個結(jié)點即為樹的根;其他結(jié)點有且僅有一個父結(jié)點。

層次模型有兩個缺點:一是只能表示1:N聯(lián)系,雖然系統(tǒng)有多種輔助手段實現(xiàn)M:N聯(lián)系但較復(fù)雜,用戶不易掌握;二是由于層次順序的嚴格和復(fù)雜,引起數(shù)據(jù)的查詢和更新操作很復(fù)雜,因此應(yīng)用程序的編寫也比較復(fù)雜。層次模型的典型代表是

IMS——InformationManagementSystem

層次模型實例層次模型的值實例第一代:網(wǎng)狀模型用有向圖結(jié)構(gòu)表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型(networkmodel)。網(wǎng)狀模型的特點是記錄之間聯(lián)系通過指針實現(xiàn),M:N聯(lián)系也容易實現(xiàn)(一個M:N聯(lián)系可拆成兩個1:N聯(lián)系),查詢效率較高網(wǎng)狀模型的缺點是數(shù)據(jù)結(jié)構(gòu)復(fù)雜和編程復(fù)雜。網(wǎng)絡(luò)模型的典型代表是CODASYL——ConferenceOnDataSystemLanguage

第二代:關(guān)系模型關(guān)系模型(relationalmodel)的主要特征是用二維表格表達實體集。關(guān)系模型是由若干個關(guān)系模式組成的集合。數(shù)據(jù)結(jié)構(gòu)簡單,每個關(guān)系實際上是一張二維表格。

關(guān)系實例第三代:對象模型對象(object)是現(xiàn)實世界中實體的模型化,與實體概念相仿,但遠比實體復(fù)雜。

將屬性集和方法集相同的所有對象組合在一起,構(gòu)成了一個類(class)。對象數(shù)據(jù)庫系統(tǒng)主要有以下兩個特點:對象數(shù)據(jù)模型能完整地描述現(xiàn)實世界的數(shù)據(jù)結(jié)構(gòu),能表達數(shù)據(jù)間嵌套、遞歸的聯(lián)系。具有面向?qū)ο蠹夹g(shù)的封裝性(把數(shù)據(jù)與操作定義在一起)和繼承性(繼承數(shù)據(jù)結(jié)構(gòu)和操作)的特點,提高了軟件的可重用性。

四種數(shù)據(jù)模型的比較層次模型網(wǎng)狀模型關(guān)系模型面向?qū)ο竽P蛣?chuàng)始1968年IBM公司的IMS系統(tǒng)1969年CODASYL的DBTG報告(71年通過)1970年F.Codd提出關(guān)系模型20世紀80年代數(shù)據(jù)結(jié)構(gòu)復(fù)雜(樹結(jié)構(gòu))復(fù)雜(有向圖結(jié)構(gòu))簡單(二維表)復(fù)雜(嵌套遞歸)數(shù)據(jù)聯(lián)系通過指針通過指針通過表間的公共屬性通過對象標(biāo)識查詢語言過程性語言過程性語言非過程性語言面向?qū)ο笳Z言典型產(chǎn)品IMSIDS/ⅡIMAGE/3000IDMSTOTALOracleSybaseDB2SQLServerInformixONTOSDB盛行期20世紀70年代70年代至80年代中期80年代至現(xiàn)在90年代至現(xiàn)在數(shù)據(jù)庫系統(tǒng)的基本概念數(shù)據(jù)庫

數(shù)據(jù)庫(DataBase,DB)是長期保存在計算機外存上的、有結(jié)構(gòu)的、可共享的相互關(guān)聯(lián)的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型描述、組織和儲存,具有很小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性,可為不同的用戶共享。數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)是指數(shù)據(jù)庫系統(tǒng)中對數(shù)據(jù)庫進行管理的軟件系統(tǒng),它是數(shù)據(jù)庫系統(tǒng)的核心組成部分,數(shù)據(jù)庫的一切操作,如查詢、更新、插入、刪除以及各種控制,都是通過DBMS進行的。

DBMS的功能數(shù)據(jù)庫定義功能數(shù)據(jù)庫操縱功能數(shù)據(jù)庫查詢功能數(shù)據(jù)庫控制功能數(shù)據(jù)庫通訊功能常見的關(guān)系數(shù)據(jù)庫管理系統(tǒng)1.Access優(yōu)秀的桌面型數(shù)據(jù)庫管理系統(tǒng)。兩個嚴重缺點:①網(wǎng)絡(luò)功能很弱,不適合客戶機較多的數(shù)據(jù)庫系統(tǒng)②幾乎沒有什么安全措施。應(yīng)用情況:較高的性價比許多小型網(wǎng)站采用ASP+Access

許多單機運行的數(shù)據(jù)庫系統(tǒng)采用VB+Access例如:同濟大學(xué)計算機基礎(chǔ)教學(xué)網(wǎng)站同濟大學(xué)計算機基礎(chǔ)課程考試系統(tǒng)常見的數(shù)據(jù)庫管理系統(tǒng)2.SQLServer最高的市場占有率,近50%的市場占有率

本課程采用SQLServer3.Oralce技術(shù)上來說是最好的數(shù)據(jù)庫管理系統(tǒng)4.DB2不過在IBM小型機的支持下,

DB2可以發(fā)揮它的最佳性能

應(yīng)用程序

利用DBMS和各種開發(fā)工具開發(fā)的、滿足特定應(yīng)用環(huán)境的數(shù)據(jù)庫應(yīng)用軟件。數(shù)據(jù)庫系統(tǒng)管理員和用戶

數(shù)據(jù)庫系統(tǒng)管理員和用戶是數(shù)據(jù)庫系統(tǒng)的組成部分。數(shù)據(jù)庫系統(tǒng)管理員是負責(zé)數(shù)據(jù)庫的建立、使用和維護的專門的人員;數(shù)據(jù)庫系統(tǒng)的用戶具有不同的層次,一般是通過應(yīng)用程序使用數(shù)據(jù)庫的,而應(yīng)用程序無需用戶自己編寫。數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用程序、數(shù)據(jù)庫管理員、用戶等構(gòu)成的人-機系統(tǒng)。數(shù)據(jù)庫系統(tǒng)并不單指數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng),而是指帶有數(shù)據(jù)庫的整個計算機系統(tǒng)。數(shù)據(jù)庫管理員操作系統(tǒng)DBMS數(shù)據(jù)庫應(yīng)用程序用戶三級模式結(jié)構(gòu)數(shù)據(jù)庫應(yīng)用B應(yīng)用D應(yīng)用E應(yīng)用A應(yīng)用C外模式1內(nèi)模式外模式2外模式3模式模式/內(nèi)模式映射外模式/模式映射模式模式也稱邏輯模式(Logicalschema),是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。定義模式時不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu)而且要定義與數(shù)據(jù)有關(guān)的安全性、完整性要求,定義這些數(shù)據(jù)之間聯(lián)系。

外模式外模式(externalschema)也稱子模式或用戶模式,是用戶與數(shù)據(jù)庫系統(tǒng)的接口,是用戶用到的那部分數(shù)據(jù)的描述。它是數(shù)據(jù)庫用戶看得見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用在關(guān)的數(shù)據(jù)的邏輯表示。外模式通常是模式的子集,一個數(shù)據(jù)庫可以有多個外模式,應(yīng)用程序都是和外模式打交道的。外模式是保證數(shù)據(jù)庫安全性的一種有力措施,每個用戶只能看見和訪問對應(yīng)的外模式中的數(shù)據(jù),數(shù)據(jù)庫中的其余數(shù)據(jù)對他們是不可見的。內(nèi)模式內(nèi)模式(internalschema)也稱存儲模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲結(jié)構(gòu)的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式(例如,記錄的存儲方式是順序存儲或是按照B樹結(jié)構(gòu)存儲還是hash方法存儲;索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密;數(shù)據(jù)的存儲記錄結(jié)構(gòu)有何規(guī)定)。一個數(shù)據(jù)只有一個內(nèi)模式。二級映射模式/內(nèi)模式映象(mapping)存在于邏輯級和內(nèi)部級之間,用于定義模式和內(nèi)模式之間的對應(yīng)性。外模式/模式映象存在于外部級和邏輯級之間,用于定義外模式和模式之間的對應(yīng)性。兩級數(shù)據(jù)獨立性數(shù)據(jù)獨立性(dataindependence)是指應(yīng)用程序和數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)之間相互獨立,不受影響。數(shù)據(jù)獨立性分成物理數(shù)據(jù)獨立性和邏輯數(shù)據(jù)獨立性兩個級別。讀取數(shù)據(jù)的過程應(yīng)用程序使用的外模式模式內(nèi)模式工作日志應(yīng)用程序程序工作區(qū)系統(tǒng)緩沖區(qū)物理數(shù)據(jù)庫DBMSOS②①③④⑤⑥⑦⑧⑨數(shù)據(jù)庫應(yīng)用系統(tǒng)的架構(gòu)從用戶的角度來說,數(shù)據(jù)庫應(yīng)用系統(tǒng)的結(jié)構(gòu)可分為五種:單用戶數(shù)據(jù)庫系統(tǒng)物理中心數(shù)據(jù)庫系統(tǒng)分布式數(shù)據(jù)庫系統(tǒng)客戶機/服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)瀏覽器/服務(wù)器模式數(shù)據(jù)庫系統(tǒng)單用戶數(shù)據(jù)庫系統(tǒng)DBMS數(shù)據(jù)庫DBMS數(shù)據(jù)庫DBMS數(shù)據(jù)庫特點:在單用戶數(shù)據(jù)庫系統(tǒng)中,整個數(shù)據(jù)庫系統(tǒng)包括應(yīng)用程序、DBMS、數(shù)據(jù)庫都裝在一臺計算機上,由一個用戶獨占,不同機器之間不能共享數(shù)據(jù)。中央數(shù)據(jù)庫系統(tǒng)DBMS數(shù)據(jù)庫網(wǎng)絡(luò)特點:提供一臺大型的中心計算機用于存放數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫,大量終端通過網(wǎng)絡(luò)與該中央計算機相連,用戶通過這些終端可以訪問中央計算機上的數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)網(wǎng)絡(luò)DBMS局部

數(shù)據(jù)庫DBMS局部

數(shù)據(jù)庫局部

數(shù)據(jù)庫DBMS特點:使用較小的計算機系統(tǒng),每臺計算機可單獨放在一個地方,都有數(shù)據(jù)庫管理系統(tǒng)的一份完整副本,并具有自己局部數(shù)據(jù)庫,位于不同地點的眾多計算機通過網(wǎng)絡(luò)互相連接,共同組成一個完整的、全局的大型數(shù)據(jù)庫??蛻魴C/服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)特點:客戶機/服務(wù)器結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)仍保留中心數(shù)據(jù)庫,數(shù)據(jù)存放在服務(wù)器上。它提供的服務(wù)包括大批數(shù)據(jù)庫用戶的訪問,數(shù)據(jù)庫保護,一致性約束的實施,并發(fā)控制和恢復(fù)等功能。客戶機有它們自己的數(shù)據(jù)庫管理系統(tǒng)和事務(wù)管理,但沒有并發(fā)控制,沒有數(shù)據(jù)存儲,

Browser/Server,簡稱B/S瀏覽器/服務(wù)器模式各種基于數(shù)據(jù)管理的信息系統(tǒng)廣域網(wǎng)上的Web數(shù)據(jù)庫多媒體數(shù)據(jù)庫工程數(shù)據(jù)庫空間數(shù)據(jù)庫實時數(shù)據(jù)庫輔助決策支持人工智能領(lǐng)域的知識庫……數(shù)據(jù)庫技術(shù)及其發(fā)展方向思考題文件系統(tǒng)用于數(shù)據(jù)管理存在哪些明顯的缺陷?用戶通過數(shù)據(jù)庫應(yīng)用程序訪問數(shù)據(jù)庫數(shù)據(jù)的過程是怎樣的?第二章關(guān)系數(shù)據(jù)庫圖書表索取號書名作者出版信息TP311.13/ZS465-2數(shù)據(jù)庫系統(tǒng)導(dǎo)論施伯樂,丁寶康,樓榮生編著高等教育出版社1994TP311.13/ZS465-3數(shù)據(jù)庫系統(tǒng)教程施伯樂...[等]編著高等教育出版社1999TP311.13-62/ZS465DB2應(yīng)用開發(fā)指南施伯樂主編電子工業(yè)出版社1998TP311.13/ZS465-4數(shù)據(jù)庫技術(shù)施伯樂,丁寶康編著科學(xué)出版社2002TP311.13/ZS465-3A數(shù)據(jù)庫系統(tǒng)教程施伯樂,丁寶康,汪衛(wèi)編著高等教育出版社2003引例數(shù)據(jù)庫應(yīng)用系統(tǒng)數(shù)據(jù)庫RDBMS數(shù)據(jù)庫應(yīng)用程序用戶關(guān)系數(shù)據(jù)庫的發(fā)展1970:這是數(shù)據(jù)庫歷史上劃時代的一年,IBM公司SanJoseResearchLaboratory的研究員E.F.Codd(EdgarFrankCodd

,1924-2003)發(fā)表了業(yè)界第一篇關(guān)于關(guān)系數(shù)據(jù)庫理論的論文"ARelationalModelofDataforLargeSharedDataBanks",首次提出了關(guān)系模型的概念。這篇論文是計算機科學(xué)史上最重要的論文之一,也奠定了Codd

博士"關(guān)系數(shù)據(jù)庫之父"的地位。1974:

IBM公司的RayBoyce和DonChamberlin提出了SQL語言,它實現(xiàn)了數(shù)據(jù)庫生命周期中的全部操作,為關(guān)系數(shù)據(jù)庫奠定了另一塊里程碑。1979:IBM完成了第一個實現(xiàn)SQL的DBMS。關(guān)系數(shù)據(jù)庫的發(fā)展1981:由于發(fā)明了關(guān)系型數(shù)據(jù)庫模型,IBM的研究員E.F.Codd

接受了ACM圖靈獎,這是計算機科學(xué)界的最高榮譽。Codd

博士也是繼查爾斯.巴赫曼(CharlesW.Bachman,“網(wǎng)狀數(shù)據(jù)庫之父”)之后,又一位由于在數(shù)據(jù)庫領(lǐng)域做出巨大貢獻而獲此殊榮的計算機科學(xué)家。在20世紀的70年代末到80年代早期,相繼出現(xiàn)了商用RDBMS產(chǎn)品:ORCALE、DB2;以后陸續(xù)出現(xiàn)Sybase、SQLServer。

21世紀初,層次模型和網(wǎng)絡(luò)模型已淡出人們的視線,關(guān)系數(shù)據(jù)庫已全面占領(lǐng)商用數(shù)據(jù)庫市場。ACM(AssociationforComputingMachinery,美國計算機學(xué)會)創(chuàng)立于1947年。關(guān)系模型的概述數(shù)據(jù)模型三要素數(shù)據(jù)結(jié)構(gòu)關(guān)系模型具有單一的數(shù)據(jù)結(jié)構(gòu):關(guān)系,邏輯結(jié)構(gòu)就是二維表。

關(guān)系操作關(guān)系代數(shù)

關(guān)系演算關(guān)系數(shù)據(jù)庫的標(biāo)準語言-SQL(StructuredQueryLanguage)DDL(DataDefinitionLanguage)DML(DataManipulationLanguage)DCL(DataControlLanguage)關(guān)系的三類完整性約束實體完整性(EntityIntegrity)參照完整性(ReferentialIntegrity

)用戶自定義的完整性關(guān)系模型的基本術(shù)語1.關(guān)系(Relation):用二維表格表示實體及實體之間的聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型(RelationalModel),一個關(guān)系可以理解為一張滿足某些約束條件的二維表,如圖中的讀者表和借閱表。2.屬性(Attribute):表中的一列稱為屬性,每個屬性必須有唯一的屬性名。例如讀者表中有四個屬性,分別為讀者ID、姓名、性別和電話。3.域(Domain):屬性的取值范圍。比如性別的域是(男,女),電話的域是8位有效數(shù)字串,年齡的域是1~150歲之間的數(shù)字。4.元組(Tuple):表中的一行。在讀者表中,每個元組有四個屬性值,它們在表中可以按任意順序存放,也就是說在一個表中任何元組的順序發(fā)生改變,關(guān)系不發(fā)生變化。5.度或目(Degree):一個關(guān)系中屬性的個數(shù)。例如在讀者表中有4個屬性,所以關(guān)系讀者的度為4。只有一個屬性的關(guān)系或度為1的關(guān)系稱為單元關(guān)系(Unaryrelation),有兩個屬性的關(guān)系稱為二元關(guān)系(Binaryrelation),有三個屬性的關(guān)系稱為三元關(guān)系(Ternaryrelation),依此類推,有n個屬性的關(guān)系稱為n元關(guān)系(n-aryrelation)。6.基數(shù)(Cardinality):一個關(guān)系中元組的個數(shù)。例如讀者表的基數(shù)為5。關(guān)系讀者ID姓名性別年齡050101張英杰女32050915張華欣男21060102宇帆男9060923袁冰女37060956王子旋女12讀者ID索取號借閱日期歸還日期050101TP311.13/ZK24505-02-2005-03-15050915TP311.13/ZS465-306-03-0106-04-01060102TP311.13-62/ZS46506-05-0706-05-31060923TP311.13/ZS465-406-07-0706-07-28…………外鍵主鍵度基數(shù)屬性元組讀者表借閱表關(guān)系的數(shù)學(xué)定義域(Domain)定義3.1:域是一組具有相同數(shù)據(jù)類型的值的集合。例如:一個機構(gòu)的所有員工姓名的集合構(gòu)成一個域,年齡的集合構(gòu)成另一個域,性別的集合{男,女}構(gòu)成一個域,自然數(shù)的集合是個域等。笛卡爾積(CartesianProduct)定義3.2

:給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:

D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}其中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組(Tuple),通常用t表示。元素中的每一個值di叫作一個分量(Component)。關(guān)系的數(shù)學(xué)定義關(guān)系(Relation)

定義3.3

D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的關(guān)系,表示為

R(D1,D2,…,Dn)這里R表示關(guān)系的名字,n是關(guān)系的度。關(guān)系是笛卡爾積的有限子集,所以關(guān)系也是一個二維表,表的每行對應(yīng)一個元組,表的每列對應(yīng)一個域。由于域可以相同,為了加以區(qū)分,必須對每列起一個名字,稱為屬性。關(guān)系舉例例如:有兩個集合D1和D2,這里D1={2,4},D2={1,3,5}。這兩個集合的笛卡爾積為:

D1×D2={(2,1),(2,3),(2,5),(4,1),(4,3),(4,5)}說明:這個笛卡爾積的任何子集都是一個關(guān)系。例如可以產(chǎn)生下列關(guān)系:

R={(2,1),(4,1)}

通過觀察不難發(fā)現(xiàn)在關(guān)系R中第二個分量的值為1,所以R可以表示為:

R={(x,y)|x∈D1,y∈D2,andy=1}關(guān)系舉例在同一集合上:D1×D2={(2,1),(2,3),(2,5),(4,1),(4,3),(4,5)}還可以用其他方法構(gòu)成新關(guān)系S:它的第一個分量是第二個分量的兩倍。S表示為:

S={(x,y)|x∈D1,y∈D2,andx=2y}下面是S關(guān)系的實例:

S={(2,1)}關(guān)系舉例例如在現(xiàn)實世界中有三個數(shù)據(jù)域集學(xué)號、課程名和班號:D1=學(xué)號集合,{S001,S002,S003};D2=課程名集合,{數(shù)據(jù)庫,多媒體};D3=班號集合,(110601,110602)。則D1,D2,D3的笛卡爾積為:D3集合班號110601110602D2集合課程名數(shù)據(jù)庫多媒體D1集合學(xué)號S001S002S003××表2.1選課表學(xué)號課程名班號S001數(shù)據(jù)庫110601S001數(shù)據(jù)庫110602S001多媒體110601S001多媒體110602S002數(shù)據(jù)庫110601S002數(shù)據(jù)庫110602S002多媒體110601S002多媒體110602S003數(shù)據(jù)庫110601S003數(shù)據(jù)庫110602S003多媒體110601S003多媒體110602說明其中(S001,數(shù)據(jù)庫,110601)、(S001,數(shù)據(jù)庫,110602)等都是元組。“S001”,“數(shù)據(jù)庫”,“110601”都是分量。該笛卡爾積的基數(shù)為

3×2×2=12,也就是說,D1×D2×D3一共有12個元組。笛卡爾積可表示為一個二維表。表中的每行對應(yīng)一個元組,表中的每列對應(yīng)一個域。這12個元組可列成如表所示的二維表。關(guān)系的數(shù)學(xué)定義8.超鍵(Superkey):一個關(guān)系中能唯一標(biāo)識一個元組的單個屬性或?qū)傩约?。雖然在關(guān)系中超鍵能唯一確定一個元組,但組成超鍵的屬性集不一定是最小的,也就是說還可以在超鍵屬性集中找到更小的子集它也能唯一標(biāo)識一個元組。9.候選鍵(CandidateKey):在關(guān)系中能唯一標(biāo)識元組的最小屬性集。候選鍵K有兩個性質(zhì):唯一性(Uniqueness)——對于關(guān)系R的每個元組,K的值能唯一標(biāo)識每個元組;不可縮減性(Irreducibility)——在K中找不出子集具有上述的唯一性。在一個關(guān)系中可以有若干候選鍵,當(dāng)組成鍵的屬性個數(shù)多于1個時,稱之為復(fù)合鍵(CompositeKey)。10.主鍵(PrimaryKey):在候選鍵中指定一個鍵作為主鍵。包含在其中的屬性稱為主屬性(Primeattribute),不包含在任何侯選鍵中的屬性稱為非主屬性(Non-keyattribute)。在最簡單的情況下,候選鍵只包含一個屬性。在最極端的情況下,一個關(guān)系中的所有屬性集構(gòu)成這個關(guān)系的候選鍵,稱為全鍵(All-key)11.外鍵(ForeignKey):設(shè)F為關(guān)系S的一個屬性或?qū)傩约?,但不是S的主鍵或候選鍵。如果F與關(guān)系R的主鍵KR相對應(yīng),則稱F是關(guān)系S的外鍵。關(guān)系可以有三種類型的表基本關(guān)系基本表是實際存在的表,它是實際存儲數(shù)據(jù)的邏輯表示。查詢表

查詢表是查詢結(jié)果對應(yīng)的表。視圖表

視圖表是由基本表或其他視圖表導(dǎo)出的表,是虛表,不對應(yīng)實際存儲的數(shù)據(jù)。關(guān)系的性質(zhì)基本關(guān)系具有以下六條性質(zhì):①列是同質(zhì)的(Homogeneous),即每一列中的分量是同一類型的數(shù)據(jù),來自同一個域。②不同的列可出自同一個域,稱其中的每一列為一個屬性,不同的屬性要給予不同的屬性名。③列的次序可以任意交換。④任意兩個元組不能完全相同。⑤行的次序可以任意交換。⑥分量必須取原子值,即每一個分量都必須是不可分的數(shù)據(jù)項。關(guān)系的性質(zhì)例如:下面a、b、c、d四種情況的表格都不滿足性質(zhì)6,所以它們都不是關(guān)系。

bacd關(guān)系模式(RelationalSchema)關(guān)系的名稱和關(guān)系的屬性集稱為關(guān)系的模式。一般用下列形式表示關(guān)系模式:關(guān)系名(A1,A2,A3,…,An)其中A1,A2,A3,…,An為關(guān)系的屬性,關(guān)系名是實體或?qū)嶓w之間聯(lián)系的名稱,在同一個數(shù)據(jù)庫中關(guān)系名必須唯一。另外在關(guān)系模式中主鍵要用下劃線標(biāo)出。關(guān)系模式舉例例如,學(xué)生關(guān)系模式為:student(snum,sname,age,dept),其中snum(學(xué)號)為主鍵。例如,借閱關(guān)系模式為:借閱(讀者ID,索取號,借閱日期,歸還日期),其中{讀者ID,索取號,借閱日期}為主鍵,是一個復(fù)合鍵。關(guān)系數(shù)據(jù)庫模式在關(guān)系模型中,數(shù)據(jù)庫設(shè)計包含一個或多個關(guān)系模式,將所設(shè)計的關(guān)系模式的集合稱為關(guān)系數(shù)據(jù)庫模式,或簡稱數(shù)據(jù)庫模式,關(guān)系模式?jīng)Q定著關(guān)系數(shù)據(jù)庫的邏輯結(jié)構(gòu),是對關(guān)系數(shù)據(jù)庫的描述,它和按其結(jié)構(gòu)存放在其中的數(shù)據(jù)一起構(gòu)成關(guān)系數(shù)據(jù)庫。關(guān)系代數(shù)關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達方式,它是用對關(guān)系的運算來表達查詢的,即關(guān)系代數(shù)的運算對象是關(guān)系,運算的結(jié)果也是關(guān)系。關(guān)系代數(shù)運算符包括四類集合運算符專門的關(guān)系運算符算術(shù)比較符邏輯運算符傳統(tǒng)的集合運算符集合運算符∪-∩×并差交笛卡爾積比較運算符>≥<≤=<>大于大于等于小于小于等于等于不等于運算符含義運算符含義傳統(tǒng)的集合運算傳統(tǒng)的集合運算是二目運算,包括并、差、交、廣義笛卡爾積四種運算。設(shè)關(guān)系R和關(guān)系S具有相同的目n(即兩個關(guān)系的屬性個數(shù)皆為n),并且相應(yīng)的屬性取自同一個域,屬性列的順序必須一致。1.并(Union)

R和S具有相同的目n(即兩個關(guān)系都有n個屬性)相應(yīng)的屬性取自同一個域

R∪S

關(guān)系R和關(guān)系S的并運算將生成一個新關(guān)系,其元組由屬于R的元組和屬于S的元組共同組成,其結(jié)果仍然是n元關(guān)系。記作:

R∪S={t|t∈R∨t∈S},其中t表示關(guān)系的元組。并運算實例ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∪S2.交(Intersection)R和S具有相同的目n(即兩個關(guān)系都有n個屬性)相應(yīng)的屬性取自同一個域

R∩S

關(guān)系R和關(guān)系S的交運算將生成一個新關(guān)系,其元組由既屬于R又屬于S的元組組成,其結(jié)果仍然是n元關(guān)系。記作:

R∩S={t|t∈R∧t∈S},其中t表示關(guān)系的元組。交運算實例3.差(Difference)R和S具有相同的目n(即兩個關(guān)系都有n個屬性)相應(yīng)的屬性取自同一個域

R-

S

關(guān)系R和關(guān)系S的差運算將生成一個新關(guān)系,其元組由屬于R但不屬于S的元組組成,其結(jié)果仍然是n元關(guān)系。記作:

R-S={t|t∈R∧tS},其中t表示關(guān)系的元組。差運算實例SR傳統(tǒng)的集合運算比較R∪SR∩SR-S

RRSS4.廣義笛卡爾積(ExtendedCartesianProduct)設(shè)R為m元關(guān)系,S為n元關(guān)系,它們的廣義笛卡爾積生成一個m+n元的新關(guān)系,前m個分量是關(guān)系R中的一個元組,后n個分量是S中的一個元組。如果R有r個元組,S有s個元組,則R與S的廣義笛卡爾積的結(jié)果關(guān)系中就有r×s個元組。記作:

R×S={tr

ts|tr∈R∧ts∈S}例:

已知兩個關(guān)系R和S,R有1個屬性2個元組,S有2個屬性3個元組,則R×S的運算結(jié)果應(yīng)有3個屬性6個元組。RAabSBC142536R×SABCa14a25a36b14b25b36專門的關(guān)系運算

專門的關(guān)系運算符運算符讀作含義邏輯運算符運算符含義σsigma

選擇非πpi

投影∧與bow-tie

連接∨或

rho

改名÷除法專門的關(guān)系運算先引入幾個記號(1)R,tR,t[Ai]設(shè)關(guān)系模式為R(A1,A2,…,An),它的一個關(guān)系設(shè)為R

;

tR表示t是R的一個元組;

t[Ai]則表示元組t中相應(yīng)于屬性Ai的一個分量。專門的關(guān)系運算(2)象集Zx

給定一個關(guān)系R(X,Z),X和Z為屬性組。當(dāng)t[X]=x時,x在R中的象集(ImagesSet)為:

Zx={t[Z]|t

R,t[X]=x}

它表示R中屬性組X上值為x的諸元組在Z上分量的集合象集舉例x1在R中的象集

Zx1

={Z1,Z2,Z3},x2在R中的象集

Zx2

={Z2,Z3},x3在R中的象集

Zx3={Z1,Z3}X1Z1X1Z2X1Z3X2Z2X2Z3X3Z1x3Z3專門的關(guān)系運算(3)tr

tsR為n目關(guān)系,S為m目關(guān)系。tr

R,tsS,tr

ts稱為元組的連接。

tr

ts是一個n+m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。1.選擇(Selection)選擇運算符的含義在關(guān)系R中選擇滿足給定條件的諸元組

σF(R)={t|tR∧F(t)='真'}F:選擇條件,是一個邏輯表達式,基本形式為:

XθY選擇運算實例讀者表讀者ID姓名性別年齡050101張英杰女32050915張華欣男21060102宇帆男9060923袁冰女37060956王子旋女12執(zhí)行完選擇運算的表讀者ID姓名性別年齡050101張英杰女32060923袁冰女37例3.2在讀者表中選擇年齡大于等于20性別為女的元組構(gòu)成的新關(guān)系。2.投影(Projection)投影運算符的含義:從R中選擇出若干屬性列組成新的關(guān)系可表示為:

πA(R)={t[A]|tR}A:R中的屬性列投影運算實例例3.3

列出讀者表中的所有讀者姓名。姓名張英杰張華欣宇帆袁冰王子旋選擇和投影綜合運算例3.4在讀者表中選擇年齡大于等于20性別為女的讀者姓名。姓名張英杰袁冰3.θ連接(Theta-Joins)θ連接是從兩個關(guān)系的廣義笛卡爾積中選取屬性間滿足一定條件的元組。記作:其中A和B分別為R和S上可比屬性集,θ是算術(shù)運算比較符:=、>、<、≠、≥、≤。

AθB

R

S

={trts|tr∈R∧ts∈S∧tr[A]θts[B]}

等值連接θ連接中的θ為‘=’運算符時稱為等值連接。它表示從關(guān)系R和關(guān)系S的廣義笛卡爾積中選取A、B屬性值相等的元組,可記為:

A=B

R

S

={trts|tr∈R∧ts∈S∧tr[A]=ts[B]}

θ連接實例例3.5

現(xiàn)有關(guān)系R1和R2,求R1和R2的θ連接。關(guān)系R1ABC123678978關(guān)系R2BCD2342357810R1R2A<DAR1.BR1.CR2.BR2.CD123234123235123781067878109787810

R1R2A<D∧R1.B≠R2.BAR1.BR1.CR2.BR2.CD12378104.自然連接(NaturalJoins)是在等值連接的結(jié)果中去掉重復(fù)的屬性列而構(gòu)成的新關(guān)系。它要求兩個關(guān)系中用于比較的屬性集的值與名稱必須相等,即用于比較連接的屬性集必須是公共屬性。

R

S

={trts[U-A]|tr∈R∧ts∈S∧tr[A]=ts[A]}自然連接實例現(xiàn)有關(guān)系R1和R2,求R1和R2的自然連接和θ連接。

R1R2ABCD123412356781097810關(guān)系R1ABC123678978關(guān)系R2BCD2342357810

R1R2R1.B=R2.BAR1.BR1.CR2.BR2.CD123234123235678781097878105.除(Division)給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R與S的除運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:

R÷S={tr[X]|tr∈R∧y(S)Yx}除法實例例3.6設(shè)關(guān)系R、S分別為下圖的(a)和(b),R÷S的結(jié)果為圖(c)

除法實例例3.7

在學(xué)生表S、選課表SC和課程表C中,下列這些問題都可以用除法解決。snumsnamesexage001李晶F19002王民M19003張強M20004沈燕F19005陳紅F20ScnumcnamecreditsC1數(shù)據(jù)庫3C2多媒體3C3Web技術(shù)3Csnumcnumgrade001C1A001C2B001C3C002C2A003C1B003C3C004C1A004C2A005C1BSC除法實例例3.8選修了C2課程并且成績?yōu)椤瓵’的學(xué)號。SC÷cnum,grade

(σcnum=’C2’∧grade=’A’(SC))snum002004snum

(σcnum=’C2’∧grade=’A’(SC))除法實例例3.9選修了所有課程的學(xué)生姓名。sname李晶snumcnum001C1001C2001C3002C2003C1003C3004C1004C2005C1cnumC1C2C3÷→snum001↓6.ρ改名(Rename)運算ρS

(A1,A2,…,An)(R)用來把關(guān)系R改名為關(guān)系S,同時把關(guān)系S的屬性從左至右依次命名為A1,A2,…,An。假如我們只想改變關(guān)系名,不想改變關(guān)系模式中的屬性名,那么用如下形式

ρS(R)關(guān)系代數(shù)思考題1.獲得獎學(xué)金的學(xué)生姓名(每門課程都大于等于90)。2.沒有選修數(shù)據(jù)庫技術(shù)與應(yīng)用的學(xué)生學(xué)號。第三章數(shù)據(jù)庫設(shè)計E/R圖到關(guān)系模式的轉(zhuǎn)換關(guān)系模式的規(guī)范化需求分析概念模式設(shè)計邏輯模式設(shè)計數(shù)據(jù)庫實施E/R圖RDBMS模式存儲模式數(shù)據(jù)庫運行和維護概念模式設(shè)計轉(zhuǎn)換分析抽象信息世界概念模式機器世界RDBMS所支持的關(guān)系模式型3.2.1數(shù)據(jù)建模的基本過程現(xiàn)實世界需求分析報告

E-R圖是由P.P.Chen于1976年提出的,其論文發(fā)表于ACMTransactiononDatabaseSystem上。當(dāng)時關(guān)系模型剛提出不久(1970年,Codd),并且關(guān)系數(shù)據(jù)庫系統(tǒng)剛剛被工業(yè)界認可。由于時代的原因,當(dāng)時的應(yīng)用軟件應(yīng)當(dāng)是相對簡單和以數(shù)據(jù)庫查詢?yōu)橹鞯?。這些應(yīng)用可以對應(yīng)于今天的管理信息系統(tǒng)(MIS)。

當(dāng)時P.P.Chen認識到MIS的質(zhì)量,取決于數(shù)據(jù)庫的組織,而良好的數(shù)據(jù)庫組織取決于數(shù)據(jù)之間的依賴關(guān)系。E-R圖可以清楚地說明這種依賴關(guān)系。

P.P.Chen最大的貢獻是使得數(shù)據(jù)庫的設(shè)計“可視化”,可視化帶來的效果是不言而喻的,因此至今E-R圖仍被廣泛地使用。

實體聯(lián)系模型實體聯(lián)系模型(Entity-RelationshipModel,簡稱E-R模型)是P.P.Chen于1976年在“實體聯(lián)系模型:將來的數(shù)據(jù)視圖”的論文中提出的。這個模型直接從現(xiàn)實世界中抽象出實體類型及實體聯(lián)系,然后用實體聯(lián)系圖即E-R表示數(shù)據(jù)模型。其中的核心就是設(shè)計E-R圖(Entity-RelationshipDiagram)。實體聯(lián)系模型的基本概念基本概念:實體(entity):客觀存在,可以相互區(qū)別的事物稱為實體。實體集(entityset):性質(zhì)相同的同類實體的集合,稱為實體集。屬性(attribute):實體有很多特性,每一個特性稱為屬性。每一個屬性有一個值域,其類型可以是整數(shù)型、實數(shù)型、字符串型等。實體標(biāo)識符(identifier):能惟一標(biāo)識實體的屬性或?qū)傩约Q為實體標(biāo)識符。有時也稱為關(guān)鍵碼(key),或簡稱為鍵。聯(lián)系(relationship)是實體之間的相互關(guān)系。與一個聯(lián)系有關(guān)的實體集個數(shù),稱為聯(lián)系的元數(shù)。數(shù)據(jù)模型:能表示實體類型及實體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。E-R圖的基本組成部分

E/R圖有四個主要部分:(1)實體集,用矩形表示。(2)屬性,用橢圓形表示。(3)聯(lián)系,用菱形或三角形表示。(4)直線,表示聯(lián)系的類型及實體與實體之間的聯(lián)系;多端用無箭頭的直線,一端用有箭頭的直線。數(shù)據(jù)聯(lián)系聯(lián)系(relationship)是實體之間的相互關(guān)系。二元聯(lián)系有以下三種類型:一對一聯(lián)系:如果實體集E1中每個實體至多和實體集E2中的一個實體有聯(lián)系,反之亦然,那么實體集E1和E2的聯(lián)系稱為“一對一聯(lián)系”,記為“1:1”。一對多聯(lián)系:如果實體集E1中每個實體可以與實體集E2中任意個(零個或多個)實體間有聯(lián)系,而E2中每個實體至多和E1中一個實體有聯(lián)系,那么稱E1對E2的聯(lián)系是“一對多聯(lián)系”,記為“1:N”。多對多聯(lián)系:如果實體集E1中每個實體可以與實體集E2中任意個(零個或多個)實體有聯(lián)系,反之亦然,那么稱E1和E2的聯(lián)系是“多對多聯(lián)系”,記為“M:N”。

數(shù)據(jù)聯(lián)系的描述實體集E1實體集E2座位E1乘客E2實體集E1實體集E2E1E2車間工人實體集E1實體集E2E1E2學(xué)生課程三種聯(lián)系的E-R圖實體1實體2聯(lián)系實體1實體2聯(lián)系實體1實體2聯(lián)系

1﹕1聯(lián)系1﹕n聯(lián)系m﹕n聯(lián)系E-R圖實例例:請設(shè)計一個數(shù)據(jù)庫。要求包括學(xué)生(student)、課程(course)和教師(teacher)的信息。其中學(xué)生信息包括:學(xué)生學(xué)號(snum)、學(xué)生姓名(sname)、年齡(age)、地址(saddress)等;課程信息包括:課程號(cnum)、課程名(cname)、課程學(xué)分(credit)等;教師信息包括:教師的工號(tnum)、姓名(tname)、教師的地址(taddress)等。一個學(xué)生可以選修多門課,而每門課也能由多個學(xué)生選修;一位教師可以教多門課,每門課也可以由多個教師講授;用E-R圖來描述此數(shù)據(jù)庫。學(xué)生-課程-教師E-R圖studentcourseteachertaketeachcreditscnamecnumsaddressagesnamesnumtaddresstnametnumscore思考題一個教師任課管理數(shù)據(jù)庫中提供以下信息:教師:教師號、姓名、性別、職稱;課程:課程號,課程名;工作單位:單位名,電話;上述實體中存在如下聯(lián)系:(1)一個教師可講授多門課程,一門課程可為多個教師講授,教師講授的班級信息用班號表示;(2)一個單位可有多個教師,一個教師只能屬于一個單位。試畫出上述實體集及實體聯(lián)系的E-R圖。課程教師工作單位講授隸屬性別姓名工號課程名課程號電話單位名班號職稱1.實體到關(guān)系模式的轉(zhuǎn)換規(guī)則:將實體的名稱作為關(guān)系的名稱,將實體的屬性作為關(guān)系的屬性,并用下劃線標(biāo)識出主屬性。

學(xué)生

課程

選課

snum

sname

sex

age

cnum

cname

credits

grade

學(xué)生(snum,sname,sex,age),表示學(xué)生關(guān)系,其中snum為主鍵。課程(cnum,cname,credits),表示課程關(guān)系,其中cnum為主鍵。2.聯(lián)系到關(guān)系模式的轉(zhuǎn)換若實體間聯(lián)系是1:1,可以在兩個實體轉(zhuǎn)換成的兩個關(guān)系模式后,然后在其中任意一個關(guān)系模式的屬性集中加入另一個關(guān)系模式的主鍵和聯(lián)系自身的屬性。也就是說1:1聯(lián)系不單獨轉(zhuǎn)換為一個獨立的關(guān)系。若實體間聯(lián)系是1:N,則在N端實體轉(zhuǎn)換成的關(guān)系模式中加入1端實體的主鍵和聯(lián)系的屬性。同樣1:N聯(lián)系也不獨立構(gòu)成一個關(guān)系。若實體間聯(lián)系是M:N,則將聯(lián)系轉(zhuǎn)換成一個關(guān)系模式,其屬性為兩端實體的主鍵加上聯(lián)系自身的屬性,而聯(lián)系關(guān)系的主鍵為一復(fù)合鍵,通常是兩端實體主鍵的組合。對于學(xué)生選課E/R圖的課程和學(xué)生之間的多對多的聯(lián)系,可轉(zhuǎn)換成關(guān)系模式:

選課(snum,cnum,grade)主鍵為復(fù)合鍵{snum,cnum}。

學(xué)生

課程

選課

snum

sname

sex

age

cnum

cname

credits

grade

3.三個或三個以上實體間的一個聯(lián)系

規(guī)則:三個或三個以上實體間個聯(lián)系轉(zhuǎn)換成一個關(guān)系模式,其屬性為三端實體或多端實體的鍵加上聯(lián)系自身的屬性,而鍵為三端實體或多端實體鍵的組合。4.E/R圖中“屬于”聯(lián)系到關(guān)系的轉(zhuǎn)換假若A類實體和B類實體之間是“屬于”關(guān)系,這里假定為B屬于A,為了表示出A和B之間的關(guān)系,用一種稱為“屬于”(“isa”)的特殊聯(lián)系將實體集A和B相連?!癷sa“聯(lián)系用三角形表示,尖端指向A類實體集,底邊指向B類實體集,三角形中還要寫上”isa”的字樣。A類實體和B類實體也稱為超類和子類。子類與超類有兩個性質(zhì):

①子類與超類之間具有繼承性特點,即子類實體繼承超類實體的所有屬性。但子類實體本身還可以包含比超類實體更多的屬性。

這種繼承性是通過子類實體和超類實體有相同的實體標(biāo)識符實現(xiàn)的。

E-R圖轉(zhuǎn)換實例學(xué)生研究生學(xué)號導(dǎo)師性別年齡系名姓名isa轉(zhuǎn)換為關(guān)系模式:學(xué)生(學(xué)號,姓名,性別,年齡,系名)研究生(學(xué)號,導(dǎo)師)E-R圖設(shè)計實例例3.6根據(jù)需求分析報告描述,在某影展信息管理系統(tǒng)中存在下列實體和聯(lián)系,設(shè)計滿足需求的E-R圖。實體集:①電影:片名,出品年份,影片長度,影片類型;鍵碼為{片名,出品年份}。②明星:姓名,聯(lián)系地址;鍵碼為姓名。③影片公司:公司名稱,地址;鍵碼為公司名稱。④卡通片:設(shè)計平臺;是電影實體的子類,鍵碼為其超類的鍵碼{片名,出品年份}。E-R圖設(shè)計實例聯(lián)系描述:一個影片公司有一個名稱和一個地址,由名稱唯一標(biāo)識;一位明星最多只能簽約一個影片公司,而一個影片公司可以擁有多位明星;一部影片由多位明星參演,一位明星可以出演多部影片的多個角色;一部影片最多歸屬于一家影片公司,而一家公司可以出品多部影片??ㄍㄆ请娪暗囊粋€子類。設(shè)計的E-R圖的步驟1.設(shè)計實體及其屬性和鍵碼。2.設(shè)計兩兩實體之間的聯(lián)系,比如電影和明星之間的扮演(Act)聯(lián)系,明星和影片公司之間的聘用聯(lián)系等。3.在所有實體之間的聯(lián)系設(shè)計完后,在將這些E-R圖合并為一個總的E-R圖。在這個過程中要去掉多個實體和屬性間的命名沖突和聯(lián)系沖突,生成一個完整的、滿足應(yīng)用需求的全局E-R圖??ㄍㄆ捌镜刂饭久Q圖3.2.16影展信息數(shù)據(jù)庫的E/R圖電影明星扮演出品年份影片長度影片類型片名聯(lián)系地址姓名角色聘用出品isa設(shè)計平臺思考題MovieActorMurderCartoonIDNameWeaponTypeLengthYearTitleActVoiceisaisa1、Movie的主鍵是什么?2、各個實體與聯(lián)系如何轉(zhuǎn)換為關(guān)系模式?關(guān)系模型設(shè)計理論數(shù)據(jù)冗余。sdept和mname兩個屬性列的同一個值的多次存儲。由于數(shù)據(jù)的冗余,在對數(shù)據(jù)操作時會引起各種異常:修改異常。由于同一個信息存放多次,我們可能修改了一個元組中的信息,但另一個元組中的相同的信息卻沒有修改。比如:計算機系的系主任換了,也許只在上述關(guān)系中的兩個元組中修改了,而沒在第三個元組中修改。插入異常。如果一個教師剛調(diào)來,尚未分派教學(xué)任務(wù),那么要將教師的姓名存儲到關(guān)系中去時,在屬性snum、cname等屬性上就沒有值(空值)。在數(shù)據(jù)庫技術(shù)中空值的語義是非常復(fù)雜的,對帶空值元組的檢索和操作也十分麻煩。刪除異常。如果一組屬性的值變?yōu)榭?,帶來的副作用可能就是丟失一些其他信息。主鍵Key={snum,cname}如果要刪除某學(xué)生選修的課程“建筑原理”,那么連同該生的整條記錄都要被刪掉,這樣就刪掉了不該丟的信息。表3.2學(xué)生選課表SnumSnameSdeptMnameCnamegrade991230賀小華計算機周至光數(shù)據(jù)庫96991239金謙計算機周至光操作系統(tǒng)90991239金謙計算機周至光編譯原理92993851陳剛建筑王勇建筑原理89992076呂宋自動化李霞自動化設(shè)計85992076呂宋自動化李霞電路原理82函數(shù)依賴設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,函數(shù)依賴(functionaldependency,簡記為FD)是形為X→Y的一個命題,只要r是R的當(dāng)前關(guān)系,對r中任意兩個元組t和s,都有t[X]=s[X]蘊涵t[Y]=s[Y],那么稱FDX→Y在關(guān)系模式R(U)中成立。函數(shù)依賴實例 例

有一個關(guān)于學(xué)生選課、教師任課的關(guān)系模式:

R(SNUM,SNAME,CNUM,GRADE,CNAME,TNAME,TAGE) 屬性分別表示學(xué)生學(xué)號、姓名、選修課程的課程號、成績、課程名、任課教師姓名和年齡等意義。 如果規(guī)定,每個學(xué)號只能有一個學(xué)生姓名,每個課程號只能決定一門課程,那么可寫成下列FD形式:

SNUM→SNAME CNUM→CNAME

每個學(xué)生每學(xué)一門課程,有一個成績,那么可寫出下列FD: (SNUM,CNUM)→GRADE

還可以寫出其他一些FD:

CNUM→(CNAME,TNAME,TAGE)TNAME→TAGE問題的根源(1)完全函數(shù)依賴與部分函數(shù)依賴(主鍵與非主屬性之間的關(guān)系)對于函數(shù)依賴WA,如果存在VW(V是W的真子集)而函數(shù)依賴VA成立,則稱A部分依賴(partialdependency)于W;否則,若不存在這種V,則稱A完全函數(shù)依賴(fulldependency)于W。函數(shù)依賴實例例:Student(snum,sname,sdept,mname,cname,grade)中,{snum,cname}為主鍵,函數(shù)依賴集如下:snumsname,sdeptsdeptmnamesnummnameSnum,cname

gradeSnum,cname

sname,sdept,mnamepF結(jié)論:在一個關(guān)系模式中,當(dāng)存在非主屬性對主鍵的部分依賴時,就會產(chǎn)生數(shù)據(jù)冗余和更新異常。若是完全函數(shù)依賴,則不會出現(xiàn)類似的問題。(2)傳遞函數(shù)依賴對于函數(shù)依賴XY,如果YX(X不函數(shù)依賴于Y),而函數(shù)依賴YZ成立,則稱Z傳遞函數(shù)依賴于X(transitivedependency)結(jié)論:傳遞依賴也是產(chǎn)生數(shù)據(jù)冗余和更新異常的主要根源。∵snum

sdept,sdeptmname,又sdeptsnum∴

snummnamet規(guī)范化所謂范式就是符合某一規(guī)范級別的關(guān)系模式的集合。共有六種范式:1NF2NF3NFBCNF4NF5NF。規(guī)范化:通過分解把屬于低級

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論