數(shù)據(jù)庫(kù)基礎(chǔ)自學(xué).ppt_第1頁(yè)
數(shù)據(jù)庫(kù)基礎(chǔ)自學(xué).ppt_第2頁(yè)
數(shù)據(jù)庫(kù)基礎(chǔ)自學(xué).ppt_第3頁(yè)
數(shù)據(jù)庫(kù)基礎(chǔ)自學(xué).ppt_第4頁(yè)
數(shù)據(jù)庫(kù)基礎(chǔ)自學(xué).ppt_第5頁(yè)
已閱讀5頁(yè),還剩248頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3講 數(shù)據(jù)庫(kù)原理,參考文獻(xiàn):薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論 數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的工具。數(shù)據(jù)管理經(jīng)歷了從手工管理階段、文件管理階段到數(shù)據(jù)庫(kù)管理階段的變遷。 幾個(gè)重要概念: 數(shù)據(jù) 數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)管理系統(tǒng) 數(shù)據(jù)庫(kù)系統(tǒng),存放數(shù)據(jù)的倉(cāng)庫(kù)(顧名思義/不準(zhǔn)確的含義) 信息的載體/表示 盡管數(shù)據(jù)庫(kù)技術(shù)已發(fā)展成熟,但還沒(méi)有一個(gè)普遍接受的、嚴(yán)格的定義。,數(shù)據(jù)庫(kù)(Data Base),數(shù)據(jù)庫(kù)應(yīng)具備的特征/定義: (1)數(shù)據(jù)庫(kù)是相互關(guān)聯(lián)的數(shù)據(jù)的集合 數(shù)據(jù)庫(kù)中的數(shù)據(jù)不是孤立的,數(shù)據(jù)與數(shù)據(jù)之間是相互關(guān)聯(lián)的,在數(shù)據(jù)庫(kù)中不僅要能夠表示數(shù)據(jù)本身,還要能夠表示數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系。 如:學(xué)籍管理學(xué)生、課程兩類數(shù)據(jù)。 (2)用綜合的方法組織數(shù)據(jù) 順序、索引、聚簇Cluster,數(shù)據(jù)庫(kù),例:人事部門(mén)有一個(gè)職工文件:,教育部門(mén)也有一個(gè)職工文件:,其中,“職工基本情況”重復(fù)存儲(chǔ),浪費(fèi)空間??晒蚕泶?儲(chǔ)類似這樣的共同數(shù)據(jù),以降低數(shù)據(jù)的冗余度。,(3)具有較小的數(shù)據(jù)冗余,可供多個(gè)用戶共享 低冗余與數(shù)據(jù)共享:在數(shù)據(jù)庫(kù)技術(shù)之前,數(shù)據(jù)文件都是獨(dú)立的,任何數(shù)據(jù)文件都必須含有滿足某一應(yīng)用的全部數(shù)據(jù)。,數(shù)據(jù)庫(kù),(4)具有較高的數(shù)據(jù)獨(dú)立性 數(shù)據(jù)獨(dú)立性:(包括物理獨(dú)立性、邏輯獨(dú)立性。) 指數(shù)據(jù)的組織和存儲(chǔ)方法與應(yīng)用程序互不依賴,彼此獨(dú)立的特性??山档蛻?yīng)用程序的開(kāi)發(fā)代價(jià)和維護(hù)代價(jià)。,數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)技術(shù)之前,數(shù)據(jù)文件的組織方式和應(yīng)用程序是密切相關(guān)的。數(shù)據(jù)結(jié)構(gòu)改變,相應(yīng)的應(yīng)用程序也必須隨之修改=開(kāi)發(fā)/維護(hù)代價(jià),數(shù)據(jù)庫(kù),(5)具有安全控制機(jī)制,能夠保證數(shù)據(jù)的安全、可靠 數(shù)據(jù)庫(kù)要有一套安全機(jī)制,以便有效地防止數(shù)據(jù)庫(kù)中的數(shù)據(jù)被非法使用/修改; 數(shù)據(jù)庫(kù)還要有一套備份/恢復(fù)機(jī)制,以保證當(dāng)數(shù)據(jù)遭到破壞時(shí)將數(shù)據(jù)立刻完全恢復(fù)=繼續(xù)、可靠地運(yùn)行。,(6)允許并發(fā)地使用數(shù)據(jù)庫(kù),能有效、及時(shí)地處理數(shù)據(jù),并能保證數(shù)據(jù)的一致性和完整性 一致性:數(shù)據(jù)庫(kù)中的數(shù)據(jù)是共享的,并且允許多個(gè)用戶同時(shí)使用相同的數(shù)據(jù)。這就要求數(shù)據(jù)庫(kù)能夠協(xié)議一致,保證各個(gè)用戶之間對(duì)數(shù)據(jù)的操作不發(fā)生矛盾和沖突。 正確性、完整性: 保證數(shù)據(jù)正確的特性數(shù)據(jù)完整性 可通過(guò)建立一些約束條件保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)是正確的。 如:學(xué)生年齡20 (2或100則錯(cuò)誤),數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System ,DBMS) 數(shù)據(jù)庫(kù)的功能/特性不是數(shù)據(jù)庫(kù)中的數(shù)據(jù)固有的,是靠管理或支持?jǐn)?shù)據(jù)庫(kù)的系統(tǒng)軟件DBMS提供的。 DBMS任務(wù): 對(duì)數(shù)據(jù)資源進(jìn)行管理,使之能為多個(gè)用戶共享。 保證數(shù)據(jù)的安全性/可靠性/完整性/一致性/獨(dú)立性,數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)管理系統(tǒng),2 數(shù)據(jù)庫(kù)操縱功能 完成對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的操作:插入、刪除、修改; 重新組織數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu); 完成對(duì)數(shù)據(jù)庫(kù)的備份/恢復(fù)等.,DBMS功能: 1 數(shù)據(jù)庫(kù)定義功能 定義數(shù)據(jù)庫(kù)結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu); 定義數(shù)據(jù)庫(kù)中數(shù)據(jù)之間的聯(lián)系; 定義數(shù)據(jù)完整性約束條件和保證完整性的觸發(fā)機(jī)制等.,3數(shù)據(jù)庫(kù)查詢功能 以各種方式提供靈活的查詢功能,以便方便使用數(shù)據(jù). 4 數(shù)據(jù)庫(kù)控制功能 完成對(duì)數(shù)據(jù)庫(kù)的安全性控制/完整性控制/并發(fā)控制 5 數(shù)據(jù)庫(kù)通信功能 在分布式數(shù)據(jù)庫(kù)或提供網(wǎng)絡(luò)操作功能的數(shù)據(jù)庫(kù)中還必須提供通信功能。,數(shù)據(jù)庫(kù)管理系統(tǒng),1數(shù)據(jù)庫(kù)系統(tǒng) (DataBase System,DBS) 基于數(shù)據(jù)庫(kù)的計(jì)算機(jī)應(yīng)用系統(tǒng),包括: 以數(shù)據(jù)為主體的數(shù)據(jù)庫(kù) 管理數(shù)據(jù)庫(kù)的系統(tǒng)軟件DBMS 支持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)的計(jì)算機(jī)硬件環(huán)境和操作系統(tǒng)環(huán)境 管理和使用數(shù)據(jù)庫(kù)系統(tǒng)的人,特別是DBA 方便使用和管理系統(tǒng)的技術(shù)說(shuō)明書(shū)和使用說(shuō)明書(shū),數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)庫(kù)管理員,數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)庫(kù)管理員,數(shù)據(jù)庫(kù)管理員 (DataBase Administrator,DBA) 從事數(shù)據(jù)庫(kù)管理工作的人員,負(fù)責(zé)數(shù)據(jù)庫(kù)的全面管理工作(維護(hù)、設(shè)計(jì)) 數(shù)據(jù)庫(kù)的使用會(huì)改變企事業(yè)單位的管理方式,但因?yàn)橐驯姸嗖块T(mén)或用戶的數(shù)據(jù)放在同一數(shù)據(jù)庫(kù)中,會(huì)帶來(lái)一些問(wèn)題,如:數(shù)據(jù)沖突;越權(quán)使用數(shù)據(jù);重要數(shù)據(jù)丟失 因此需要管理部門(mén):負(fù)責(zé)和數(shù)據(jù)管理有關(guān)的工作。,數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)庫(kù)管理員,注: DBA工作繁重、重要、關(guān)鍵: 除了要掌握一定的數(shù)據(jù)處理、數(shù)據(jù)庫(kù)技術(shù)之外,還應(yīng)有處理好人際關(guān)系的素質(zhì)、能力。在一個(gè)企事業(yè)中,特別是一個(gè)規(guī)模較大的數(shù)據(jù)庫(kù),不能指望一兩個(gè)人來(lái)完成管理工作,所以DBA常指數(shù)據(jù)庫(kù)管理部門(mén)。 開(kāi)發(fā)DBS時(shí),一開(kāi)始就應(yīng)設(shè)置DBA的職位或相應(yīng)的機(jī)構(gòu),以明確DBA職責(zé)、權(quán)限。,數(shù)據(jù)處理是計(jì)算機(jī)應(yīng)用領(lǐng)域中最大的一類應(yīng)用 用計(jì)算機(jī)實(shí)現(xiàn)數(shù)據(jù)管理經(jīng)歷了三個(gè)發(fā)展階段: 1 人工管理階段 數(shù)據(jù)庫(kù)管理的初級(jí)階段。 在50年代中期以前,計(jì)算機(jī)采用的是批處理方式,主要用于科學(xué)計(jì)算。,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,2 文件系統(tǒng)階段(50年代后期60年代中期) 特點(diǎn): 計(jì)算機(jī)技術(shù)有了很大的發(fā)展,開(kāi)始廣泛應(yīng)用于信息處理 存儲(chǔ)設(shè)備有了磁盤(pán)、磁鼓等可直接存取的設(shè)備 計(jì)算機(jī)有了操作系統(tǒng),包括文件管理系統(tǒng),用戶可將數(shù) 據(jù)組織成文件體交給系統(tǒng)進(jìn)行自動(dòng)管理。 數(shù)據(jù)可長(zhǎng)期保存在磁盤(pán)等存儲(chǔ)設(shè)備上 程序和數(shù)據(jù)有了一定的獨(dú)立性,且文件有多種形式的組 織結(jié)構(gòu):順序、鏈接、索引、直接,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,缺點(diǎn): (1)數(shù)據(jù)冗余較大 每個(gè)文件都是為特定的用途設(shè)計(jì)的, 同樣數(shù)據(jù)在多個(gè)文件中重復(fù)存儲(chǔ) 進(jìn)能提供以文件為單位的數(shù)據(jù)共享。 (2)程序和數(shù)據(jù)之間的獨(dú)立性較差 應(yīng)用程序依賴于文件的存儲(chǔ)結(jié)構(gòu),修改文件存儲(chǔ)結(jié)構(gòu)就要修改程序,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,(3)對(duì)數(shù)據(jù)的表示和處理能力較差 文件的結(jié)構(gòu)和操作比較單一,不夠豐富。 (4)數(shù)據(jù)不一致 由(1)造成,更新時(shí)會(huì)造成同一數(shù)據(jù)在不同文件 中的不一致。 (5)數(shù)據(jù)聯(lián)系弱 文件與文件之間是獨(dú)立的,文件之間的聯(lián)系必須通 過(guò)程序來(lái)構(gòu)造。 盡管如此,文件系統(tǒng)在數(shù)據(jù)管理技術(shù)的發(fā)展中仍起 著很重要的作用。,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,3.數(shù)據(jù)庫(kù)系統(tǒng)階段 從60年代后期開(kāi)始,計(jì)算機(jī)用于信息處理的規(guī)模越來(lái)越大,對(duì)數(shù)據(jù)管理的技術(shù)提出了更高的要求,此時(shí)開(kāi)始提出計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)和分布式系統(tǒng),出現(xiàn)了大容量的磁盤(pán),文件系統(tǒng)已不再能勝任多用戶環(huán)境下的數(shù)據(jù)共享和處理。一個(gè)新的數(shù)據(jù)庫(kù)管理技術(shù)DBMS由此而形成,它對(duì)所有用戶數(shù)據(jù)實(shí)行統(tǒng)一的、集中的管理、操作和維護(hù)。,按照數(shù)據(jù)模型的進(jìn)展情況,數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展可劃分為三代: 第一代:層次數(shù)據(jù)庫(kù)系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫(kù)系統(tǒng) 主要支持層次和網(wǎng)狀數(shù)據(jù)模型 第二代:關(guān)系數(shù)據(jù)庫(kù)系統(tǒng) 支持關(guān)系數(shù)據(jù)模型,該模型有嚴(yán)格的理論基礎(chǔ), 概念簡(jiǎn)單、清晰,易于用戶理解和使用。因此一 經(jīng)提出便迅速發(fā)展,成為實(shí)力性最強(qiáng)的產(chǎn)品。,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,第三代:新一代數(shù)據(jù)庫(kù)系統(tǒng)面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng) 基于擴(kuò)展的關(guān)系數(shù)據(jù)模型或面向?qū)ο髷?shù)據(jù)模型的尚未 完全成熟的一代數(shù)據(jù)庫(kù)系統(tǒng) 。 特點(diǎn):支持包括數(shù)據(jù)、對(duì)象和知識(shí)的管理 在保持和繼承第二代技術(shù)的基礎(chǔ)上引進(jìn)新技術(shù)(如OO) 對(duì)其他系統(tǒng)開(kāi)放,具有良好的可移植性、可連結(jié)性、 可擴(kuò)充性、互操作性。,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,1.2 數(shù)據(jù)模型,模型對(duì)客觀事物、現(xiàn)象、過(guò)程或系統(tǒng)的簡(jiǎn)化描述 所有的數(shù)據(jù)庫(kù)系統(tǒng)都為它所要描述的世界建立了模型: 數(shù)據(jù)建模:描述了組織數(shù)據(jù)的框架結(jié)構(gòu)。 如:樓房住戶-數(shù)據(jù);房間規(guī)格-數(shù)據(jù)模型 數(shù)據(jù)建模最后發(fā)展成為數(shù)據(jù)的存儲(chǔ)方式(數(shù)據(jù)字典 中的定義) 業(yè)務(wù)功能建模:用戶的最終需求。 業(yè)務(wù)功能建模最后發(fā)展成為應(yīng)用程序 產(chǎn)生高效的應(yīng)用程序的前提是良好的數(shù)據(jù)模型。(正如10 平米的房間無(wú)法成為會(huì)議廳一樣,一個(gè)糟糕的數(shù)據(jù)模型也無(wú)法產(chǎn)生高質(zhì)量的應(yīng)用。,1.2 數(shù)據(jù)模型,為什么要建立數(shù)據(jù)模型(Data Model): 象蓋大樓的設(shè)計(jì)圖一樣,DM可使所有的 項(xiàng)目參與者都有一個(gè)共同的數(shù)據(jù)標(biāo)準(zhǔn) 避免出現(xiàn)問(wèn)題再解決(邊干便改的方式) 可及早發(fā)現(xiàn)問(wèn)題 加快應(yīng)用開(kāi)發(fā)速度,1.2.1 數(shù)據(jù)模型的三要素,1數(shù)據(jù)結(jié)構(gòu) 描述數(shù)據(jù)的靜態(tài)特征,包括對(duì)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù) 建聯(lián)系的描述。 通常按照數(shù)據(jù)結(jié)構(gòu)的類型來(lái)命名數(shù)據(jù)模型: 層次結(jié)構(gòu)層次模型 網(wǎng)狀結(jié)構(gòu)網(wǎng)狀模型 關(guān)系結(jié)構(gòu)關(guān)系模型 2數(shù)據(jù)操作 描述數(shù)據(jù)的動(dòng)態(tài)特征:一組定義在數(shù)據(jù)上的操作(包括操作的含義、操作符、運(yùn)算規(guī)則及其語(yǔ)言等) 主要操作:檢索與更新(插入、刪除、修改),1.2.1 數(shù)據(jù)模型的三要素,33. 數(shù)據(jù)的約束條件 完整性規(guī)則的集合,數(shù)據(jù)庫(kù)中的數(shù)據(jù)必須滿足 這組規(guī)則。 約束條件的主要目的是使數(shù)據(jù)庫(kù)與它所描述的現(xiàn)實(shí)系 統(tǒng)相符合。 設(shè)計(jì)時(shí):時(shí)數(shù)據(jù)模型正確、真實(shí)、有效地反映現(xiàn)實(shí) 運(yùn)行時(shí):保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)值真實(shí)地體現(xiàn)現(xiàn)實(shí)世 界的狀態(tài),1.2.2常見(jiàn)數(shù)據(jù)模型,根據(jù)數(shù)據(jù)模型應(yīng)用目的不同,數(shù)據(jù)模型有以下幾種: 概念(數(shù)據(jù))模型(Conceptual Data Model) 面向現(xiàn)實(shí)世界建模 主要用來(lái)描述現(xiàn)實(shí)世界的概念化結(jié)構(gòu),與具 體的DBMS無(wú)關(guān); - 現(xiàn)實(shí)世界的事物經(jīng)過(guò)人腦的抽象加工,提取出對(duì)用 戶有用的信息,經(jīng)過(guò)組織整理加工形成結(jié)余現(xiàn)實(shí)世 界和計(jì)算機(jī)世界之間的中間模型; - CDM只關(guān)心現(xiàn)實(shí)世界中的事物、事務(wù)特征、聯(lián)系, 完全沒(méi)有與具體及其相關(guān)的任何概念;,1.2.2常見(jiàn)數(shù)據(jù)模型,CDM是系統(tǒng)分析員、程序設(shè)計(jì)員、維護(hù)人員、用戶 之間相互理解的共同語(yǔ)言; - CDM能時(shí)數(shù)據(jù)庫(kù)的設(shè)計(jì)人員在設(shè)計(jì)的初始階段擺脫 計(jì)算機(jī)系統(tǒng)及DBMS的具體技術(shù)問(wèn)題,集中精力分析 數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系; - 概念模型必須轉(zhuǎn)換成邏輯模型,才能在DBMS中實(shí) 現(xiàn); - 最常用的概念模型是E-R模型,1.2.2常見(jiàn)數(shù)據(jù)模型, 邏輯(數(shù)據(jù))模型(Logical Data Model) 面向用戶建模 用戶從數(shù)據(jù)庫(kù)所看到的數(shù)據(jù)模型; - 是具體的DBMS所支持的數(shù)據(jù)模型(網(wǎng)狀/層次 /關(guān)系/面向?qū)ο螅?- 既要面向用戶,也要面向系統(tǒng); - LDM表示數(shù)據(jù)建聯(lián)系的方法 - 一般的DBMS支持一種LDM(特殊的DBMS支 持多種LDM),1.2.2常見(jiàn)數(shù)據(jù)模型, 物理(數(shù)據(jù))模型(Physical Data Model) 面向具體的DBMS,面向機(jī)器 描述數(shù)據(jù)在存儲(chǔ)介質(zhì)上的組織結(jié)構(gòu) - PDM不僅與具體的DBMS有關(guān),還與操作系統(tǒng) 和硬件有關(guān) - 每一種邏輯模型在實(shí)現(xiàn)時(shí)都有其對(duì)應(yīng)的物理模型 - PDM加入了概念模型中為考慮的因素:觸發(fā)器、 存儲(chǔ)過(guò)程、主鍵、外鍵、索引等 - DBMS為保證其獨(dú)立性和可以執(zhí)行,大部分PDM 的實(shí)現(xiàn)工作由系統(tǒng)自動(dòng)完成,而設(shè)計(jì)者只設(shè)計(jì)索 引、聚簇等特殊結(jié)構(gòu),1.2.3概念模型,實(shí)體-聯(lián)系(Entity-Relationship)概念模型 首先介紹E-R模型中常用的幾個(gè)重要概念,利用它們可 構(gòu)造出現(xiàn)實(shí)世界的數(shù)據(jù)的抽象描述。 1實(shí)體、實(shí)體型、實(shí)體集 實(shí)體(Entity) 客觀存在并能相互區(qū)分的事物 如:人;數(shù)據(jù)庫(kù)課程;正是用的計(jì)算機(jī);一 場(chǎng)足球賽不能?chē)?yán)格地定義實(shí)體,正如幾何中“ 點(diǎn)”,“線”一樣。 關(guān)鍵之處:一個(gè)實(shí)體能和別的實(shí)體區(qū)分開(kāi)。,1.2.3概念模型, 實(shí)體型(Entity Type) 用實(shí)體名及屬性名集合來(lái)抽象刻畫(huà)同類實(shí)體 實(shí)體集(Entity Set) 同型的實(shí)體組成的集合。 2屬性(Attribute) 指實(shí)體所具有的某一方面的特性,一個(gè)實(shí)體可 由若干個(gè)屬性來(lái)刻劃。 - 屬性取值在一定的范圍,稱為該屬性的值域/域 (Domain) - 唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼(Key),1.2.3概念模型,3聯(lián)系(Relationship) 實(shí)體集合間存在的相互關(guān)系 為了建立現(xiàn)實(shí)世界的完整模型,常常需要對(duì)聯(lián)系 分 類,根據(jù)一個(gè)實(shí)體集合的實(shí)體可以和多少個(gè)另一類 實(shí)體集合的實(shí)體相聯(lián)系,可將聯(lián)系分為如下幾種: (1) 一對(duì)一聯(lián)系(1:1) 系系主任 (2) 一對(duì)多聯(lián)系(1:n) 班級(jí)學(xué)生 (3) 多對(duì)多聯(lián)系(m:n) 課程學(xué)生,1.2.3概念模型,4 實(shí)體-聯(lián)系圖 (1) 確定所有實(shí)體集合 用矩形方框表示實(shí)體集合,方框內(nèi)標(biāo)明實(shí)體集合名 稱; (2) 選擇實(shí)體集應(yīng)包含的屬性 用橢圓框表示屬性,通過(guò)無(wú)向邊連接到實(shí)體集。只 有一個(gè)屬性的實(shí)體集可用屬性代替,附加到它參加 的聯(lián)系上; (3) 確定實(shí)體集之間的聯(lián)系 用菱形框表示,框內(nèi)標(biāo)明聯(lián)系的名稱,通過(guò)無(wú)向邊 (或有向邊)連接到參加聯(lián)系的每個(gè)實(shí)體集合;,1.2.3概念模型,( 4)確定實(shí)體集的關(guān)鍵字 用下劃線在屬性上標(biāo)明關(guān)鍵字的屬性集合; (5) 確定聯(lián)系的類型 在用無(wú)向邊連接聯(lián)系到實(shí)體集時(shí),在邊上注明1或 n(多)來(lái)知名聯(lián)系的類型。(在用有向邊連接 聯(lián)系到實(shí)體集時(shí),讓邊的箭頭指向1的實(shí)體集的 一方,多對(duì)多因?yàn)槎际嵌喾?,故無(wú)箭頭),1.2.4 三種主要的邏輯數(shù)據(jù)模型,上節(jié)討論的概念數(shù)據(jù)模型是“概念上”的,是抽象的,它與具體的數(shù)據(jù)庫(kù)管理系統(tǒng)無(wú)關(guān)。這節(jié)要討論的數(shù)據(jù)模型將與具體的DBMS有關(guān),與DBMS支持的數(shù)據(jù)和聯(lián)系的表示或存儲(chǔ)有關(guān)。 前面提到過(guò),數(shù)據(jù)庫(kù)中不僅要存放數(shù)據(jù)本身,還要存放數(shù)據(jù)間的聯(lián)系,可用不同的方法表示數(shù)據(jù)與數(shù)據(jù)之間的聯(lián)系。 把表示數(shù)據(jù)與數(shù)據(jù)之間聯(lián)系的方法稱為邏輯(數(shù)據(jù))模型。,1.2.4 三種主要的邏輯數(shù)據(jù)模型,一、 層次模型(Hierarchical Model) 用樹(shù)型結(jié)構(gòu)來(lái)表示實(shí)體之間聯(lián)系的模型。 支持層次模型的典型系統(tǒng)誕生于1970年前后,是IBM 公司的IMS(Information Management System)系統(tǒng)。 優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單 缺點(diǎn):插入、刪除限制多,1.2.4 三種主要的邏輯數(shù)據(jù)模型,二、網(wǎng)狀模型(Network Model) 典型代表:DBTG(Data Base Task Group)數(shù)據(jù) 庫(kù)任務(wù)組 1 網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu) 2 網(wǎng)狀模型的數(shù)據(jù)操縱與完整性約束 3 網(wǎng)狀模型的存儲(chǔ)結(jié)構(gòu) 4網(wǎng)狀模型的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):更能直接描述世界 缺點(diǎn):結(jié)構(gòu)復(fù)雜,1.2.4 三種主要的邏輯數(shù)據(jù)模型,三、 關(guān)系模型(Relational Model) 1970,IBM,E.F.Codd 關(guān)系模型源于數(shù)學(xué),它把數(shù)據(jù)看成是二維表(關(guān)系) 中的元素。(其嚴(yán)格定義下一章給出) 用關(guān)系表示(不需用指針)實(shí)體和實(shí)體之間聯(lián)系的模 型稱為關(guān)系模型。 對(duì)于用戶,關(guān)系方法應(yīng)該是很簡(jiǎn)單的,但RDBMS很 復(fù)雜,因?yàn)閷⒋罅抗ぷ鞫嫁D(zhuǎn)嫁給了RDBMS。,1.2.4 三種主要的邏輯數(shù)據(jù)模型,RDBMS的設(shè)想在層次、網(wǎng)狀數(shù)據(jù)庫(kù)誕生的同時(shí)產(chǎn)生的,但研制開(kāi)發(fā)RDBMS卻花費(fèi)了比人們想象的要長(zhǎng)得多的時(shí)間。所以成為商品并投入使用比層次、網(wǎng)狀數(shù)據(jù)庫(kù)晚了十幾年。但一投入使用就顯示了旺盛的活力,并逐步取代層次、網(wǎng)狀數(shù)據(jù)庫(kù)。,1.3 數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu),1.3.1 數(shù)據(jù)庫(kù)系統(tǒng)模式的概念 當(dāng)設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),對(duì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)感興趣; 即模式(Schema):數(shù)據(jù)庫(kù)中數(shù)據(jù)的邏輯結(jié) 構(gòu)和特征的描述 當(dāng)應(yīng)用數(shù)據(jù)庫(kù)時(shí),關(guān)心的是數(shù)據(jù)庫(kù)中存在的數(shù)據(jù) 實(shí)例(Instance)。 數(shù)據(jù)庫(kù)中的數(shù)據(jù)經(jīng)常變化,而數(shù)據(jù)庫(kù)的結(jié)構(gòu)在一定時(shí) 間范圍內(nèi)不會(huì)改變。 數(shù)據(jù)庫(kù)中結(jié)構(gòu)的定義可以在多個(gè)抽象級(jí)別進(jìn)行,形成 多個(gè)級(jí)別的數(shù)據(jù)庫(kù)模式。,1.3.2 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu),數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式不僅可以使數(shù)據(jù)具有獨(dú)立性,而且還可以使數(shù)據(jù)達(dá)到共享,使同一數(shù)據(jù)滿足更多用戶的不同要求。 一、 內(nèi)模式(Internal Schema) 存儲(chǔ)模式 是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)部表示,即對(duì)數(shù)據(jù)的物 理結(jié)構(gòu)/存儲(chǔ)方式的描述,是低級(jí)描述,一般由 DBMS提供的語(yǔ)言或工具完成;,1.3.2 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu), 要修改存儲(chǔ)數(shù)據(jù)庫(kù)的結(jié)構(gòu)(例如,用倒排文件代替多 鏈表),那么僅僅需要把這些修改反映在存儲(chǔ)模式中; 通常我們不關(guān)心內(nèi)模式的具體技術(shù)實(shí)現(xiàn),而是從一般組 織的觀點(diǎn)(即概念模式)或用戶的觀點(diǎn)(外模式)來(lái)討 論數(shù)據(jù)庫(kù)的描述。但我們必須意識(shí)到基本的內(nèi)模式和存 儲(chǔ)數(shù)據(jù)庫(kù)的存在。,1.3.2 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu),二、 模式(Schema) 邏輯模式 是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述, 是所有用戶的公共數(shù)據(jù)視圖; DBMS提供數(shù)據(jù)定義語(yǔ)言DDL來(lái)描述邏輯模式,嚴(yán)格定義數(shù)據(jù)的名稱、特征、相互關(guān)系、約束等。,1.3.2 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu),三、 外模式(External Schema) 用戶模式(視圖) 是模式的子集或變形,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示; 不同用戶需求不同,看待數(shù)據(jù)的方式也可以不同 ,對(duì)數(shù)據(jù)保密的要求也可以不同,使用的程序設(shè)計(jì)語(yǔ)言也可以不同,因此不同用戶的外模式的描述可以使不同的。,1.3.2 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu),舉例: 民航售票系統(tǒng)包括處理航班程序和處理旅客程序。 - 程序的使用人員不必知道關(guān)于人事檔案、丟失的行 李、飛行員的航行分配等信息; - 調(diào)度員可能需要知道關(guān)于航班、飛機(jī)和人事檔案等 信息(如那些飛行員有資格駕駛747),但不必知道雇員的工資、旅客等信息。 所以可以為訂票部門(mén)建立一個(gè)數(shù)據(jù)庫(kù)視圖,為調(diào)度部門(mén)建立另一個(gè)完全不同的部門(mén)。,1.3.2 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu),Note:視圖處理的數(shù)據(jù)并不實(shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)中,而僅可以從邏輯數(shù)據(jù)庫(kù)中構(gòu)造出來(lái)。視圖比(邏輯)模式的抽象級(jí)別更高。 舉例:“年齡”在人事部門(mén)數(shù)據(jù)庫(kù)中,但(邏輯)模式重金包含出生年月。當(dāng)用戶希望通過(guò)訪問(wèn)視圖得到年齡時(shí),DBMS翻譯這個(gè)要求,在從物理數(shù)據(jù)庫(kù)上取出的數(shù)據(jù)完成計(jì)算。,注:一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式,一個(gè)內(nèi)模式,但可以有多個(gè)外模式。,1.3.3 數(shù)據(jù)庫(kù)的二級(jí)映象,在三級(jí)模式中提供了兩級(jí)映象,保證了數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)獨(dú)立 性,既物理獨(dú)立性與邏輯獨(dú)立性。 一、 外模式/模式映象 數(shù)據(jù)庫(kù)系統(tǒng)投入使用后,可能有必要修改模式(如增加新關(guān)系、屬性、改變類型),這時(shí): 重新定義外模式/模式映象=現(xiàn)存外模式不變=應(yīng)用程序不變,1.3.3 數(shù)據(jù)庫(kù)的二級(jí)映象,二、 模式/內(nèi)模式映象 當(dāng)內(nèi)模式發(fā)生變化時(shí): 重新定義模式/內(nèi)模式映象=模式保持不變=外模式保持不變=建立在外模式上的應(yīng)用程序保持不變,1.5 數(shù)據(jù)庫(kù)技術(shù)的研究領(lǐng)域,1數(shù)據(jù)庫(kù)管理系統(tǒng)軟件的開(kāi)發(fā) 2數(shù)據(jù)庫(kù)設(shè)計(jì) 3數(shù)據(jù)庫(kù)理論,第二章 關(guān)系數(shù)據(jù)庫(kù),1關(guān)系操作,查詢操作:選擇/ 投影/ 連接/ 除/ 并/ 交/ 差,2.1 關(guān)系模型概述 從數(shù)據(jù)模型的三要素加以介紹 一、數(shù)據(jù)結(jié)構(gòu) 關(guān)系 二、 關(guān)系操作,增加、刪除、修改,2.1 關(guān)系模型概述,元組關(guān)系演算:謂詞變?cè)幕緦?duì)象是元組變量 域關(guān)系演算:謂詞變?cè)幕緦?duì)象是域變量,Note:關(guān)系代數(shù)和關(guān)系演算是抽象的查詢語(yǔ)言,與具體的DBMS中實(shí)際語(yǔ)言不一樣,但彼此等價(jià),是從抽象的觀點(diǎn)出發(fā)學(xué)習(xí)數(shù)據(jù)庫(kù)查詢的問(wèn)題。 3關(guān)系數(shù)據(jù)語(yǔ)言,2關(guān)系操作的表示方法: 關(guān)系代數(shù):用對(duì)關(guān)系的運(yùn)算表達(dá)查詢要求 關(guān)系演算:用謂詞表達(dá)查詢要求,2.1 關(guān)系模型概述,實(shí)體完整性,關(guān)系模型必須滿足的完整性約束條件,參照完整性,三、關(guān)系的完整性約束條件,用戶定義的完整性:針對(duì)某一具體數(shù)據(jù)庫(kù)的約束條件 反映某一具體應(yīng)用所設(shè)計(jì)的數(shù)據(jù) 必須滿足的語(yǔ)義要求。,(關(guān)系系統(tǒng)自動(dòng)支持),2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,2.2.1 關(guān)系 一、 基本概念 1 域(Domain) 2 笛卡爾積(Cartesian Product),元組(Tuple),3 關(guān)系(Relation),分量(Component),候選碼 Candidate Key,非碼屬性Non-key attribute,主碼 Primark Key,全碼 All-key,主屬性Prime attribute,2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,二、關(guān)系的三種類型,基本關(guān)系(基本表):實(shí)際存在的表,是實(shí)際存 儲(chǔ)數(shù)據(jù)的邏輯表示,查詢表:查詢結(jié)果對(duì)應(yīng)的表 視圖表 :由基本表或其它視圖標(biāo)導(dǎo)出的表, 虛表,不對(duì)應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù),2.2.2 關(guān)系模式,值(Value):是型的一個(gè)具體賦值 關(guān)系是值,型(Type):對(duì)某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說(shuō)明,關(guān)系模式是型(關(guān)系模式是對(duì)關(guān) 系的描述),2.3 關(guān)系的完整性,(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)52-55),2.4 關(guān)系代數(shù)(Relational Algebra),關(guān)系代數(shù)是對(duì)關(guān)系運(yùn)算的總和,關(guān)系運(yùn)算分兩類:,2.4.1 傳統(tǒng)的集合運(yùn)算 并交差積(按行),2.4.2 專門(mén)的關(guān)系運(yùn)算,選擇/ 投影/ 連接/ 除(按行、列) 一、 幾個(gè)記號(hào)和概念 元組,分量 屬性列域,剩余屬性組 元組的連接 象集 關(guān)系運(yùn)算定義,第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,關(guān)系代數(shù)和關(guān)系演算是形式化查詢語(yǔ)言,商業(yè)DBMS使用SQL(Structured Query Language)。 1974 年由IBM 的San Jose研究室提出,最初叫SEQUEL(Structured English Query Language) 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)SQL對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢和更新 目前有許多不同版本的SQL語(yǔ)言,有兩個(gè)不同的主要標(biāo)準(zhǔn): ANSI(American National Standards Institute) 1986 ISO(International Standards Organization): SQL-89,SQL-92,SQL 2,正在制定SQL 3,3.1 SQL語(yǔ)言概貌及特點(diǎn),一、SQL特點(diǎn) 1 一體化 SQL是一種一體化的語(yǔ)言,它包括了數(shù)據(jù)定義、查詢、 更新、控制四方面功能。 可以完成數(shù)據(jù)庫(kù)活動(dòng)中的全部工作 以前的非關(guān)系模型的數(shù)據(jù)語(yǔ)言一般包括:內(nèi)模式描述語(yǔ) 言、模式描述語(yǔ)言、外模式描述語(yǔ)言、數(shù)據(jù)操縱語(yǔ)言等 。內(nèi)容多,操作起來(lái)不像SQL那樣簡(jiǎn)單。,3.1 SQL語(yǔ)言概貌及特點(diǎn),2 高度非過(guò)程化 沒(méi)有必要一步步地告訴計(jì)算機(jī)“如何”去做,只需描述清楚用戶要“做什么”,SQL就可以將要求交給系統(tǒng),自動(dòng)完成全部工作。 3 面向集合的操作方式 操作對(duì)象、查詢結(jié)果是元組的集合; 插入、刪除、更新操作的對(duì)象也可以是元組的集合。,3.1 SQL語(yǔ)言概貌及特點(diǎn),4 兩種使用形式,統(tǒng)一的語(yǔ)法結(jié)構(gòu),自含式:將SQL作為操作命令獨(dú)立使用,現(xiàn)在許多數(shù)據(jù)庫(kù)開(kāi)發(fā)工具都將SQL直接融入到自身的語(yǔ)言中。,宿主式:將SQL嵌入到高級(jí)語(yǔ)言中使用,3.1 SQL語(yǔ)言概貌及特點(diǎn),5 語(yǔ)言簡(jiǎn)潔 SQL雖然功能強(qiáng)且使用兩種方式,但只有為數(shù)不多的幾條命令,另外語(yǔ)法也非常簡(jiǎn)單,接近自然語(yǔ)言,易掌握、學(xué)習(xí)。 除了以上特點(diǎn)之外,SQL語(yǔ)言還支持?jǐn)?shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)。,3.1 SQL語(yǔ)言概貌及特點(diǎn),二、SQL語(yǔ)言組成 SQL同一般的程序設(shè)計(jì)語(yǔ)言一樣,由以下幾個(gè)部分組成: 1 常量:文本常量(字符串)、整型常量、數(shù)值常量 2 數(shù)據(jù)類型:以IBM DB2 SQL為例,具體見(jiàn)薩師煊等主 編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)89 3 空值:NULL,3.1 SQL語(yǔ)言概貌及特點(diǎn),集合運(yùn)算符:、-,算術(shù)運(yùn)算符:+,-,*,/,5 . 函數(shù) SQL 提供了非常豐富的內(nèi)部函數(shù)聚集函數(shù) (詳見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)100),4. 運(yùn)算符,字符串運(yùn)算符:| (連接),比較運(yùn)算符:6個(gè),邏輯運(yùn)算符:NOT,AND,OR,3.1 SQL語(yǔ)言概貌及特點(diǎn),6 謂詞 SQL為了具有強(qiáng)大的查詢能力,提供了一系列的謂詞: BETWEEN AND / NOT BETWEEN AND 介于兩者之間 /介于兩者之外 IN / NOT IN 在其中/不在其中 LIKE 匹配 IS NULL / IS NOT NULL EXISTS/ NOT EXISTS 存在/不存在量詞 ANY 任意一個(gè)存在量詞 ALL 全程量詞,3.1 SQL語(yǔ)言概貌及特點(diǎn),7 表達(dá)式 8 條件 由一個(gè)或多個(gè)含有比較運(yùn)算符的表達(dá)試及邏輯運(yùn)算符組合而成。 命令(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)86 表3.1),3.2 數(shù)據(jù)定義,存儲(chǔ)過(guò)程定義,基本表定義,定義功能,數(shù)據(jù)庫(kù)的定義:和物理數(shù)據(jù)有關(guān),以后介紹,視圖定義,索引定義,規(guī)則定義,與數(shù)據(jù)完整性有關(guān),以后介紹,3.2.1 定義、刪除與修改基本表,(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)88) 3.2.2 建立與刪除索引 (具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)90) 在使用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)時(shí),用戶所看到和操作的數(shù)據(jù)好像在簡(jiǎn)單的二維表中,而實(shí)際上數(shù)據(jù)在磁盤(pán)上是如何存儲(chǔ)的用戶可能不知道。然而數(shù)據(jù)的物理存儲(chǔ)如何卻使數(shù)據(jù)庫(kù)主要性能的主要因素。 索引時(shí)最常見(jiàn)的改善數(shù)據(jù)庫(kù)性能的技術(shù)。,CREATE TABLE 表名(列名數(shù)據(jù)類型列級(jí)完整性約束條件,表級(jí)完整性約束條件 例:CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE,SNAME CHAR(20) UNIQUE,SSEX CHAR(1),SAGE INT,SDEPT CHAR(15);,修改基本表 ALTER TABLE 表名ADD新列名數(shù)據(jù)類型完整性約束 DROP完整性約束名 ALTER 列名數(shù)據(jù)類型; 例:向?qū)W生表增加“入學(xué)時(shí)間”日期型 ALTER TABLE STUDENT ADD Scome date; 修改年齡為半字長(zhǎng)整數(shù) ALTER TABLE STUDENT ALTER SAGE SMALLINT,刪除學(xué)生姓名必須取唯一值的約束。 DROP TABLE Student DROP UNIQUE Tag Sname DROP TABLE ,3.2.2 建立與刪除索引,關(guān)于索引 索引的建立和刪除由DBA或建表的人負(fù)責(zé),用戶不必也不能在存取數(shù)據(jù)是選擇索引; 作為一般規(guī)則,不應(yīng)該在一個(gè)表上建立太多的索引(2-3個(gè))。索引能改善查詢效果,但也耗費(fèi)了磁盤(pán)空間。降低了更新操作的性能。因?yàn)橄到y(tǒng)必須花時(shí)間來(lái)維護(hù)這些索引; 表中數(shù)據(jù)越多,索引的優(yōu)越性才越明顯。,3.3.1 單表查詢,指定列,消除重復(fù)行, 選擇表中若干列,全部列,經(jīng)計(jì)算的列, 選擇表中若干元組,查詢滿足條件的元組, 對(duì)查詢結(jié)果排序, 對(duì)查詢結(jié)果分組,3.3.2 連接查詢, 等值/非等值連接 自身連接 外連接 復(fù)合條件連接,3.3.3 嵌套查詢, 帶有IN謂詞的查詢 帶有比較運(yùn)算符的查詢 帶有ANY或ALL謂詞的子查詢 帶有EXISTS謂詞的查詢,3.3.4 集合查詢,具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)114,3.3.5 SELECT 語(yǔ)句的一般格式 具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng) 115,3.4 數(shù)據(jù)更新,插入、修改、刪除數(shù)據(jù)(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù) 系統(tǒng)概論P(yáng)117) 一、插入數(shù)據(jù) 1 插入單個(gè)元組 2 插入子查詢結(jié)果,3.4 數(shù)據(jù)更新,二、修改數(shù)據(jù) 1 修改一個(gè)元組的值 2 修改多個(gè)元組的值 3 帶子查詢的修改語(yǔ)句,3.4 數(shù)據(jù)更新,三、刪除數(shù)據(jù) 1刪除一個(gè)元組的值 2刪除多個(gè)元組的值 3帶子查詢的刪除語(yǔ)句 4更新操作與數(shù)據(jù)庫(kù)的一致性,3.5 視 圖,一、關(guān)于視圖: 視圖是原始數(shù)據(jù)庫(kù)數(shù)據(jù)的一種變換,是查看表中數(shù)據(jù) 的另外一種方式; 可將視圖看成是一個(gè)移動(dòng)的窗口,通過(guò)它可看到感興 趣的數(shù)據(jù); 視圖可從一個(gè)或多個(gè)實(shí)際表中獲得; 視圖的定義存在數(shù)據(jù)庫(kù)中,而數(shù)據(jù)并沒(méi)再存一份在數(shù) 據(jù)庫(kù)中,通過(guò)視圖看到的數(shù)據(jù)存放在基本表中; 對(duì)視圖的操作同其它表一樣,通過(guò)視圖修改數(shù)據(jù)時(shí), 實(shí)際是修改基本表中的數(shù)據(jù),相反,基本表數(shù)據(jù)的改 變也會(huì)自動(dòng)反映在由基本表產(chǎn)生的視圖中。,3.5 視 圖,二、視圖的作用 1 簡(jiǎn)單性 看到的就是用戶需要的 不僅可簡(jiǎn)化用戶對(duì)數(shù)據(jù)的理解,也可簡(jiǎn)化它們的操 作。經(jīng)常使用的查詢可以被定義為視圖。,3.5 視 圖,2 安全性 通過(guò)視圖用戶只能查詢和修改他們能見(jiàn)到的數(shù)據(jù), 數(shù)據(jù)庫(kù)其它數(shù)據(jù)則既看不到也取不到。 數(shù)據(jù)庫(kù)授權(quán)命令可是用戶對(duì)數(shù)據(jù)庫(kù)的檢索限制到特 定的數(shù)據(jù)庫(kù)對(duì)象上,但不能授權(quán)到數(shù)據(jù)庫(kù)特定的行 、列上。 視圖可防止未授權(quán)用戶查看特定的行/列 3 邏輯數(shù)據(jù)獨(dú)立性,3.5 視 圖,一、 定義視圖 具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)121-124 二、 查詢視圖 具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)125 三、 更新視圖 具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)126,3.6 數(shù)據(jù)控制,SQL數(shù)據(jù)控制功能對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全控制提供保護(hù),主要表現(xiàn)在對(duì)數(shù)據(jù)使用的授權(quán)(GRANT)和收回授權(quán)(REVOKE)。 每個(gè)用戶對(duì)自己擁有的資源可以由任意的操作權(quán)限,同時(shí)也可以把其中的一部分權(quán)限授予他人。 (具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)130),3.6 數(shù)據(jù)控制,一、授權(quán),3.6 數(shù)據(jù)控制,二、收回權(quán)限 注:授權(quán)(GRANT)和收回授權(quán)(REVOKE)并不是數(shù)據(jù)庫(kù)的全部控制功能,只是其中的一小部分,其它功能如安全性、完整性、并發(fā)控制和恢復(fù)在7、8、9、10章介紹。,3.7 嵌入式SQL,前面幾節(jié)介紹的SQL,,是作為獨(dú)立的數(shù)據(jù)語(yǔ)言直接由用戶在交互環(huán)境下使用的。此外,SQL還可以作為子語(yǔ)言嵌入在宿主語(yǔ)言(PASCAL、C等)中使用。 SQL作為子語(yǔ)言嵌入在宿主語(yǔ)言中使用必須要解決以下三方面問(wèn)題: 1嵌入識(shí)別問(wèn)題 宿主語(yǔ)言的編譯程序不能識(shí)別SQL語(yǔ)句,所以首要問(wèn)題要解決如何區(qū)分宿主語(yǔ)言的語(yǔ)句和SQL語(yǔ)句。,3.7 嵌入式SQL,2 宿主語(yǔ)言與SQL語(yǔ)言的數(shù)據(jù)通信問(wèn)題 DBMS將SQL語(yǔ)句的查詢結(jié)果或執(zhí)行狀態(tài)必須交給宿主語(yǔ)言/應(yīng)用程序處理(通過(guò)SQLCA);運(yùn)行時(shí),宿主語(yǔ)言的數(shù)據(jù)通過(guò)變量(稱為主變量)也要能夠交給SQL使用。 3 宿主語(yǔ)言的單記錄與SQL的多記錄的問(wèn)題 宿主語(yǔ)言一般一次處理一條記錄;SQL語(yǔ)言常常處理的是記錄(元組)的集合,其查詢結(jié)果通常是含多個(gè)記錄的一張表?!白杩共黄ヅ洹?本節(jié)將圍繞如何解決這三個(gè)問(wèn)題來(lái)介紹。,3.7 嵌入式SQL,一、 嵌入識(shí)別與預(yù)編譯 解決方法:為SQL語(yǔ)句加一個(gè)特殊的前綴。 在用宿主語(yǔ)言的編譯系統(tǒng)編譯源程序之前,首先由預(yù)編譯系統(tǒng)將SQL語(yǔ)句轉(zhuǎn)換為宿主語(yǔ)言的合法函數(shù)調(diào)用。,3.7 嵌入式SQL,3.7 嵌入式SQL,一、 數(shù)據(jù)通信區(qū)與主變量 1數(shù)據(jù)通信區(qū)SQLCA SQL Communication Area 在嵌入SQL語(yǔ)句的程序中,一般在程序的前部 都要有一條語(yǔ)句: EXEC SQL INCLUDE SQLCA 這里SQLCA即是SQL與宿主語(yǔ)言的通信區(qū),它 類似于結(jié)構(gòu)變量,各個(gè)變量分別反映SQL語(yǔ)句 的各種執(zhí)行狀態(tài)。,3.7 嵌入式SQL,DBMS:數(shù)據(jù)庫(kù)廠商標(biāo)識(shí),0:成功,例如:SQL Anywhere 中SQLCA有16個(gè)屬性:,SQLCode (long): 存放執(zhí)行SQL后返回的代碼,100:SELECT找不到符合條件的記錄,-1:SQL操作錯(cuò)誤,DataBase,Userid,DBPass,SQLErrText:錯(cuò)誤代碼,SQLDBCode:錯(cuò)誤信息,3.7 嵌入式SQL,SQL被執(zhí)行時(shí),DBMS將產(chǎn)生的各類系統(tǒng)信息(如執(zhí)行狀態(tài)信息)寫(xiě)入系統(tǒng)通信區(qū),應(yīng)用程序在調(diào)用SQL后,可通過(guò)讀取數(shù)據(jù)通信區(qū)中信息來(lái)確定語(yǔ)句執(zhí)行情況。,應(yīng)用通過(guò)SQLCA與數(shù)據(jù)庫(kù)通信,3.7 嵌入式SQL,輸出主變量:SQL對(duì)其賦值或設(shè)置狀態(tài)信息,返回給應(yīng) 用程序。 利用它可得到SQL語(yǔ)句的結(jié)果數(shù)據(jù)和狀態(tài)。,輸入主變量:由應(yīng)用程序賦值,SQL引用。 可用于:插入數(shù)據(jù)、修改值、制定條件 (WHERE),2 主變量 SQL語(yǔ)句使用宿主語(yǔ)言的變量來(lái)輸入/輸出數(shù)據(jù),主變量(Host Variable),主變量根據(jù)作用不同分為:,3.7 嵌入式SQL,Note:所有變量要在 BEGIN DECLARE SECTION END DECLARE SECTION 之間說(shuō)明。,3.7 嵌入式SQL,三、 游標(biāo)(Cursor) 當(dāng)查詢結(jié)果超過(guò)一個(gè)元組時(shí),不能一次性將結(jié)果值賦給宿主語(yǔ)言的變量,因?yàn)橹髯兞績(jī)H能保存一個(gè)數(shù)據(jù),而不是一組數(shù)據(jù)。為此,引進(jìn)一個(gè)特殊的數(shù)據(jù)結(jié)構(gòu)游標(biāo)(Cursor)。 游標(biāo)是系統(tǒng)為用戶開(kāi)設(shè)的一個(gè)數(shù)據(jù)緩沖區(qū),存放SQL的執(zhí)行結(jié)果??蓪⑵淅斫鉃橐粋€(gè)指示器,指向數(shù)據(jù)庫(kù)中滿足條件的元組。 游標(biāo)包含兩部分內(nèi)容:,結(jié)果集:游標(biāo)內(nèi)SELECT語(yǔ)句執(zhí)行后產(chǎn)生的集合;,游標(biāo)位置:游標(biāo)指針的當(dāng)前位置。,3.7 嵌入式SQL,游標(biāo)的定義和使用分為下面幾步: 聲明游標(biāo) 不可執(zhí)行的指令,僅定義游標(biāo),SELECT語(yǔ)句沒(méi)有執(zhí)行 (類似于變量說(shuō)明) 打開(kāi)游標(biāo) 執(zhí)行SELECT語(yǔ)句,將結(jié)果放入結(jié)果集中。 推進(jìn)游標(biāo) 移動(dòng)指針,該變結(jié)果集的當(dāng)前記錄。 通過(guò)游標(biāo)更新數(shù)據(jù) 關(guān)閉游標(biāo) 程序?qū)嵗ň唧w見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論 P136-146),第四章 關(guān)系系統(tǒng)及查詢優(yōu)化,具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)151-167,4.1.3 全關(guān)系系統(tǒng)的12條基本準(zhǔn)則,4.1 關(guān)系系統(tǒng),4.1.1 關(guān)系系統(tǒng)的定義,4.1.2 關(guān)系系統(tǒng)的分類,4.2 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢優(yōu)化,4.2.1 關(guān)系系統(tǒng)及其查詢優(yōu)化,4.2.6 優(yōu)化的一般步驟,4.2.5 關(guān)系代數(shù)表達(dá)式的優(yōu)化算法,4.2.4 關(guān)系代數(shù)等價(jià)變換規(guī)則,4.2.3 查詢優(yōu)化的一般準(zhǔn)則,4.2.2 一個(gè)實(shí)例,第五章 關(guān)系數(shù)據(jù)理論,數(shù)據(jù)庫(kù)設(shè)計(jì)的一個(gè)最基本的問(wèn)題是如何建立一個(gè)好的數(shù)據(jù)庫(kù)模式。 即給出一組數(shù)據(jù),如何構(gòu)造一個(gè)適合于它們的數(shù)據(jù)模式,使數(shù)據(jù)庫(kù)系統(tǒng)無(wú)論是在數(shù)據(jù)存儲(chǔ)方面,還是在數(shù)據(jù)操縱方面都有較好的性能。 E-R模型方法討論了實(shí)體與實(shí)體之間的數(shù)據(jù)聯(lián)系,現(xiàn)在來(lái)討論實(shí)體內(nèi)部屬性與屬性之間的數(shù)據(jù)關(guān)聯(lián),目標(biāo)是要設(shè)計(jì)一個(gè)“好”的數(shù)據(jù)庫(kù)模型。,5.1 問(wèn)題的提出,1關(guān)系模型定義復(fù)習(xí) 2在解決如何設(shè)計(jì)一個(gè)好的數(shù)據(jù)庫(kù)模式之前,先看一 看什么是“不好”的數(shù)據(jù)庫(kù)設(shè)計(jì)(關(guān)系數(shù)據(jù)庫(kù)模式可 能出現(xiàn)的異常)。 例:建立一個(gè)關(guān)系數(shù)據(jù)庫(kù)來(lái)描述學(xué)生的一些情況, 該數(shù)據(jù)庫(kù)只包含一個(gè)關(guān)系模式: 學(xué)生(學(xué)號(hào),姓 名,系名,系主任,課程,成績(jī)) 3. 例:具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)171 頁(yè),5.1 問(wèn)題的提出,(1)存在的問(wèn)題: i. 數(shù)據(jù)冗余:姓名,系名,系=重復(fù)出現(xiàn)。 ii. 更新異常:某一元組修改系主任,其他不變= 同一系,系主任不同,造成了數(shù)據(jù)潛在的不一致 性。 iii. 插入異常:系剛成立,尚未招收學(xué)生,主關(guān)鍵字 為空,則系主任、選的課都無(wú)法存入數(shù)據(jù)庫(kù),未 選課的學(xué)生信息也無(wú)法存入。 刪除異常:一個(gè)系的學(xué)生畢業(yè)了,刪除這些學(xué)生的記錄,則系主任等信息也刪除掉了。,5.1 問(wèn)題的提出,(2)產(chǎn)生異常的原因: 這些異常的產(chǎn)生主要是因?yàn)殛P(guān)系模式的結(jié)構(gòu),即關(guān)系模式中的屬性之間存在過(guò)多的數(shù)據(jù)依賴關(guān)系,與現(xiàn)實(shí)世界不符合。 注:數(shù)據(jù)依賴關(guān)系最重要的一類是函數(shù)依賴。 主關(guān)鍵字(學(xué)號(hào)+課程)一定,元組就確定了, 元組分量也就確定了,即所有其它屬性都依賴于 “學(xué)號(hào)”和“課程”。 但實(shí)際:學(xué)號(hào)姓名,不需選課。 系名系主任。,5.1 問(wèn)題的提出,(3)解決: 分解為三個(gè)新的關(guān)系模式: 學(xué)生(學(xué)號(hào),姓名,系名) 成績(jī)(學(xué)號(hào),課程,成績(jī)) 系(系名,系主任) 這樣上面提到的問(wèn)題不存在了,將學(xué)生、成績(jī)和系三個(gè)相對(duì)獨(dú)立的實(shí)體劃分開(kāi)來(lái),使之更符合現(xiàn)實(shí)世界的實(shí)際。,5.2 規(guī)范化(Normalization),5.2.1 函數(shù)依賴(Functional Dependency),回顧:函數(shù)熟悉的概念。 Y=f(x):x和Y之間數(shù)量上的對(duì)應(yīng)關(guān)系。給定x值,Y值 與之對(duì)應(yīng)。稱x函數(shù)決定Y,或Y函數(shù)依賴于x。 在關(guān)系數(shù)據(jù)庫(kù)中討論函數(shù)或函數(shù)依賴注重的是語(yǔ)義上 的關(guān)系。 如:省=f(城市),5.2.1 函數(shù)依賴(Functional Dependency),定義 函數(shù)依賴(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論172頁(yè)) 說(shuō)明: t1x=t2x=t1r=t2r成立,就有xY。 只有當(dāng)t1x=t2x為真,而t1Y=t2Y為假時(shí) ,xY。 當(dāng)t1x=t2x為假時(shí),不管t1Y=t2Y為T(mén)/F, 都有xY。 比如:當(dāng)x為關(guān)鍵字屬性時(shí),t1x=t2x肯定為F ,但xY成立。,5.2.1 函數(shù)依賴(Functional Dependency),術(shù)語(yǔ)和記號(hào): 非平凡的函數(shù)依賴(Nontrivial Functional Dependency) 通常討論。 xY,但Yx(Y不包含于x),則xY稱為非平凡 的函數(shù)依賴。 若Yx, 顯然xY成立。(稱為平凡的函數(shù)依賴 。Trivial Functional Dependency),5.2.1 函數(shù)依賴(Functional Dependency), 決定因素(Determinant) 若xY,則x稱為決定因素(決定方)。 xY,Yx則記作xY。 如:學(xué)號(hào)姓名。 若Y不函數(shù)依賴于x,記作xY。,5.2.1 函數(shù)依賴(Functional Dependency),定義 完全函數(shù)依賴(Full Functional Dependency): 若xY,并且對(duì)x的任何一個(gè)真子集x,都有xY, 則稱Y完全函數(shù)依賴x,記作x Y.,部分函數(shù)依賴(Partial Functional Dependency): 若xY成立,則稱Y部分函數(shù)依賴于x.記作xY 。(與書(shū)上定義比較),例:5.1 模式中,(學(xué)號(hào),課程)系名,f,p,p,5.2.1 函數(shù)依賴(Functional Dependency),定義傳遞函數(shù)依賴(Transitive Functional Dependency): 若xY,(非平凡函數(shù)依賴,且Yx),YZ, 則稱Z傳遞函數(shù)依賴于x。,若Yx,則xY,xZ。,直接,5.2.1 函數(shù)依賴(Functional Dependency),例:教室(課程,班級(jí),時(shí)間,教室)完全函數(shù)依賴 (課程,班級(jí),時(shí)間)教室 教師(姓名,職務(wù),職務(wù)工資)傳遞函數(shù)依賴 姓名職務(wù) 職務(wù)職務(wù)工資 則姓名職務(wù)工資 前面例子: 三個(gè)新的學(xué)生關(guān)系模式中:非平凡 函數(shù)依賴 學(xué)號(hào)姓名 學(xué)號(hào)系 系系主任 (學(xué)號(hào),課程)成績(jī),f,5.2.2 碼,現(xiàn)實(shí)世界的每一實(shí)體集合,都有一關(guān)鍵字(碼),即唯一確定各個(gè)實(shí)體的一組屬性。同樣,關(guān)系上最重要的約束是關(guān)系的關(guān)鍵字約束,即關(guān)鍵字/碼唯一確定關(guān)系的元組。 候選碼(Candidate Key)與主碼(Primary Key) 外部碼(Foreign Key) 例: 學(xué)生選課(學(xué)號(hào),課號(hào),成績(jī)) F 學(xué)生(學(xué)號(hào),姓名,年齡) P 注:主碼與外碼(主關(guān)鍵字與外關(guān)鍵字)提供了一個(gè)表示關(guān)系間聯(lián)系的手段。,5.2.3 范式,在關(guān)系數(shù)據(jù)模式設(shè)計(jì)中,為了避免由依賴引起的數(shù)據(jù)的冗余和更新異常問(wèn)題,必須進(jìn)行關(guān)系數(shù)據(jù)模式的規(guī)范化。 自1971年,E.F.Codd提出關(guān)系規(guī)范化理論以來(lái),人們對(duì)規(guī)范化問(wèn)題進(jìn)行了長(zhǎng)期的研究,并已經(jīng)有了很大進(jìn)展。 范式(Normal Form)的概念最早是由E.F.Codd提出的,19711972年,先后提出了1NF,2NF,3NF(根據(jù)關(guān)系模式滿足的不同性質(zhì)和規(guī)范化的程度劃分)。1974年,又和Boyce共同提出了BCNF(Boyce-Codd Normal Form)。1976年,F(xiàn)agin提出了4NF,后又有人提出5NF。最重要的是3NF和BCNF。這是進(jìn)行規(guī)范化的主要目標(biāo)。,5.2.3 范式,(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng) 174頁(yè),圖5-2),1. 第一范式(1NF): (具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)170) 每個(gè)關(guān)系模式都應(yīng)滿足的最低要求。 即關(guān)系的所有分量都必須是不可分的最小數(shù)據(jù)項(xiàng)。,5.2.3 范式,2. 第二范式(2NF): (具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)174) 定義:若R1NF,且每一非主屬性完全函數(shù)依賴 于碼,則R2NF。 所有單屬性關(guān)鍵字都是2NF關(guān)系。 復(fù)合關(guān)鍵字(多屬性構(gòu)成),且存在非主屬性 對(duì)關(guān)鍵字的部分依賴,則否。,5.2.3 范式, 反例: 例:庫(kù)存(倉(cāng)庫(kù)號(hào),設(shè)備號(hào),數(shù)量,地點(diǎn)) 1NF,但非2NF。 非主屬性數(shù)量完全依賴于關(guān)鍵字。 非主屬性地點(diǎn)部分依賴于關(guān)鍵字。 即有倉(cāng)庫(kù)號(hào)地點(diǎn)。 (倉(cāng)庫(kù)號(hào),設(shè)備號(hào))地點(diǎn)。,p,5.2.3 范式, 出現(xiàn)的問(wèn)題: 一個(gè)倉(cāng)庫(kù)若只有一種設(shè)備,則刪除設(shè)備刪除倉(cāng)庫(kù)。 學(xué)生關(guān)系: 學(xué)生(學(xué)號(hào),姓名,系名) 不是2NF。 只有成績(jī)完全函數(shù)依賴于碼,姓名、系名、系 主任對(duì)碼部分依賴,因?yàn)樗鼈冇蓪W(xué)號(hào)可決定。,5.2.3 范式, 解決辦法投影分解 將部分函數(shù)依賴關(guān)系洪的決定方和非主屬性從關(guān)系 模式中提出,單獨(dú)構(gòu)成一個(gè)關(guān)系模式。 將余下屬性加上碼(仍要保留部分函數(shù)依賴的決定 方屬性,起分解出來(lái)的新關(guān)系之間的關(guān)聯(lián)作用)構(gòu) 成另一關(guān)系模式。,5.2.3 范式,例:庫(kù)存(倉(cāng)庫(kù)號(hào),設(shè)備號(hào),數(shù)量) 倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),地點(diǎn)) 學(xué)生記錄(學(xué)號(hào),姓名,系名,系主任) r(學(xué)生記錄)=(學(xué)號(hào),姓名,系名,系主任) (r(學(xué)生)) 成績(jī)(學(xué)號(hào),課程,成績(jī)) r(成績(jī))=(r(學(xué)生)),5.2.3 范式,1. 第三范式(3NF): 定義:(具體見(jiàn)薩師煊等主編數(shù)據(jù)庫(kù)系統(tǒng)概論P(yáng)176) 若R2NF,并且所有非主屬性都不傳遞依賴于關(guān)鍵字,則R3NF。 若存在非主屬性對(duì)關(guān)鍵字的傳遞依賴,則不是3NF。,5.2.3 范式, 反例: 例:倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),所在省,倉(cāng)庫(kù)面積,所在城市) 倉(cāng)庫(kù)號(hào)所在城市,所在城市所在省。 倉(cāng)庫(kù)號(hào)所在省。 非3NF, 問(wèn)題:插入異常: 如插入(“WH30”,“湖北”,400,“邯鄲”) (“WH22”,“河北”,240,“ ”) 再如:在山東濟(jì)南要設(shè)一個(gè)倉(cāng)庫(kù),想先存入有關(guān)所 在城市信息,但無(wú)倉(cāng)庫(kù)號(hào),則不能。,5.2.3 范式, 解決投影分解:(將傳遞依賴的屬性分解出來(lái) 自己總結(jié)的) 倉(cāng)庫(kù)(倉(cāng)庫(kù)號(hào),倉(cāng)庫(kù)面積,所在城市) 城市(省,城市),再例: 學(xué)生記錄(學(xué)號(hào),姓名,系,系主任)不是3NF 學(xué)號(hào)系, 系系主任, 學(xué)號(hào)系主任 系主任對(duì)碼(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論