




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單元2數(shù)據(jù)庫(kù)基本原理《MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用任務(wù)式教程(慕課版)》學(xué)習(xí)內(nèi)容任務(wù)1理解數(shù)據(jù)模型
2任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)任務(wù)4卸載MySQL
2任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)
2任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化
2任務(wù)5了解數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程學(xué)習(xí)目標(biāo)任務(wù)4卸載MySQL【知識(shí)目標(biāo)】
掌握數(shù)據(jù)模型的概念、組成和類型。掌握實(shí)體-聯(lián)系模型的基本概念。掌握E-R圖的組成及畫法。掌握關(guān)系模型的組成要素和主要特點(diǎn)。了解數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)和二級(jí)映像。理解關(guān)系代數(shù)中的選擇、投影和連接運(yùn)算。初步了解關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL。了解數(shù)據(jù)規(guī)范化的基本概念及其范式。掌握數(shù)據(jù)庫(kù)設(shè)計(jì)的方法與步驟?!灸芰δ繕?biāo)】
能夠設(shè)計(jì)具體的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。會(huì)畫E-R圖。會(huì)用范式規(guī)范數(shù)據(jù)?!舅刭|(zhì)目標(biāo)】引導(dǎo)學(xué)生了解國(guó)產(chǎn)數(shù)據(jù)庫(kù)管理系統(tǒng)發(fā)展的現(xiàn)狀,增強(qiáng)文化自信,培養(yǎng)創(chuàng)新思維。任務(wù)1理解數(shù)據(jù)模型2.1.1數(shù)據(jù)模型1.?dāng)?shù)據(jù)模型的概念模型是人們對(duì)現(xiàn)實(shí)世界中的事物和過(guò)程的描述及抽象表達(dá)。數(shù)據(jù)庫(kù)是相關(guān)數(shù)據(jù)的集合,它不僅反映數(shù)據(jù)本身的內(nèi)容,還反映數(shù)據(jù)之間的聯(lián)系。在數(shù)據(jù)庫(kù)中,用數(shù)據(jù)模型這個(gè)工具來(lái)抽象、表示、處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息,以便計(jì)算機(jī)能夠處理這些對(duì)象。因此,數(shù)據(jù)庫(kù)中的數(shù)據(jù)模型是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象和歸納,也就是說(shuō),數(shù)據(jù)模型是用來(lái)描述數(shù)據(jù)、組織數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行操作的。數(shù)據(jù)模型用于描述數(shù)據(jù)庫(kù)系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)特征和完整性約束條件。構(gòu)成數(shù)據(jù)模型的三要素為數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)的完整性約束。任務(wù)1理解數(shù)據(jù)模型
數(shù)據(jù)結(jié)構(gòu)是對(duì)數(shù)據(jù)靜態(tài)特征的描述。數(shù)據(jù)的靜態(tài)特征包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系和對(duì)數(shù)據(jù)取值范圍的約束。所以,數(shù)據(jù)結(jié)構(gòu)是所研究對(duì)象的類型的集合。在數(shù)據(jù)庫(kù)系統(tǒng)中,通常按數(shù)據(jù)結(jié)構(gòu)的類型來(lái)命名數(shù)據(jù)模型,如關(guān)系結(jié)構(gòu)的數(shù)據(jù)模型是關(guān)系模型。(1)數(shù)據(jù)結(jié)構(gòu)(2)數(shù)據(jù)操作
數(shù)據(jù)操作是指對(duì)數(shù)據(jù)動(dòng)態(tài)特征的描述,包括對(duì)數(shù)據(jù)進(jìn)行的操作及相關(guān)操作規(guī)則。數(shù)據(jù)庫(kù)的操作主要有檢索和更新(包括插入、刪除、修改)兩大類。數(shù)據(jù)模型要定義這些操作的確切含義、操作符號(hào)、操作規(guī)則(如優(yōu)先級(jí))以及實(shí)現(xiàn)操作的語(yǔ)言。因此,數(shù)據(jù)操作完全可以看成對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象的操作的集合。任務(wù)1理解數(shù)據(jù)模型
數(shù)據(jù)的完整性約束是對(duì)數(shù)據(jù)靜態(tài)和動(dòng)態(tài)特征的限定,用來(lái)描述數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系應(yīng)該具有的制約和依存規(guī)則,以保證數(shù)據(jù)正確、有效和相容。數(shù)據(jù)模型應(yīng)該反映和規(guī)定本數(shù)據(jù)模型必須遵守的、基本的、通用的完整性約束條件。例如,在關(guān)系模型中,任何關(guān)系必須滿足實(shí)體完整性和參照完整性兩個(gè)條件。另外,數(shù)據(jù)模型還應(yīng)該提供定義完整性約束條件的機(jī)制,特定的數(shù)據(jù)必須遵守特定的語(yǔ)義約束條件,如學(xué)生信息中的性別只能是男或女。(3)數(shù)據(jù)的完整性約束任務(wù)1理解數(shù)據(jù)模型2.?dāng)?shù)據(jù)模型的類型數(shù)據(jù)模型一般應(yīng)滿足3個(gè)條件:數(shù)據(jù)模型要能夠真實(shí)地描述現(xiàn)實(shí)世界;數(shù)據(jù)模型要容易理解;數(shù)據(jù)模型要能夠方便地在計(jì)算機(jī)上實(shí)現(xiàn)。根據(jù)數(shù)據(jù)模型應(yīng)用目的的不同,可以將數(shù)據(jù)模型分為兩類:一類是概念數(shù)據(jù)模型(簡(jiǎn)稱概念模型),另一類是邏輯數(shù)據(jù)模型(簡(jiǎn)稱邏輯模型)和物理數(shù)據(jù)模型(簡(jiǎn)稱物理模型)。概念模型也稱信息模型,它是面向用戶的,用于按照用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫(kù)設(shè)計(jì),與具體的數(shù)據(jù)庫(kù)管理系統(tǒng)無(wú)關(guān)。邏輯模型和物理模型是面向計(jì)算機(jī)系統(tǒng)的。邏輯模型是概念模型的數(shù)據(jù)化,用于按照計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,是現(xiàn)實(shí)世界的計(jì)算機(jī)模擬,與使用的數(shù)據(jù)管理系統(tǒng)的種類有關(guān),主要用于數(shù)據(jù)庫(kù)管理系統(tǒng)的實(shí)現(xiàn)。任務(wù)1理解數(shù)據(jù)模型物理模型是對(duì)數(shù)據(jù)最底層的抽象,它用于描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,或在磁盤或磁帶上的存儲(chǔ)方式和存取方法。物理模型的具體實(shí)現(xiàn)是數(shù)據(jù)庫(kù)管理系統(tǒng)的任務(wù)。數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ)。各種機(jī)器上實(shí)現(xiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng)軟件都是基于某種數(shù)據(jù)模型或者支持某種數(shù)據(jù)模型的。
任務(wù)1理解數(shù)據(jù)模型由于計(jì)算機(jī)不可能直接處理現(xiàn)實(shí)世界中的具體事物,更不能處理事物與事物之間的聯(lián)系,因此必須把現(xiàn)實(shí)世界的具體事物轉(zhuǎn)換成計(jì)算機(jī)能夠處理的對(duì)象。現(xiàn)實(shí)世界轉(zhuǎn)化為計(jì)算機(jī)世界的過(guò)程如圖2-1所示。任務(wù)1理解數(shù)據(jù)模型2.1.2概念模型1.信息世界的基本概念概念模型用于信息世界的建模,反映現(xiàn)實(shí)世界中的信息及其關(guān)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求,是現(xiàn)實(shí)世界到信息世界的第一層抽象。概念模型也是用戶和數(shù)據(jù)庫(kù)設(shè)計(jì)人員之間進(jìn)行交流的工具,數(shù)據(jù)庫(kù)設(shè)計(jì)人員在設(shè)計(jì)初期應(yīng)把主要精力放在概念模型的設(shè)計(jì)上。任務(wù)1理解數(shù)據(jù)模型信息世界中常用的概念如下所述。
(1)實(shí)體(Entity)客觀存在并可相互區(qū)別的事物稱為實(shí)體。實(shí)體可以是具體的人、事、物,如學(xué)生、課程等,也可以是抽象的概念或聯(lián)系,如學(xué)生選課等。
(2)屬性(Attribute)實(shí)體具有的某一特征或性質(zhì)稱為屬性。一個(gè)實(shí)體可以由若干個(gè)屬性來(lái)刻畫,如學(xué)生實(shí)體可以用學(xué)號(hào)、姓名、專業(yè)、性別、出生時(shí)間等屬性來(lái)描述。屬性的具體取值稱為屬性值。如(001104,嚴(yán)蔚敏,軟件技術(shù),男,2000-08-26,50)這些屬性組合起來(lái)描述了一個(gè)具體的學(xué)生。任務(wù)1理解數(shù)據(jù)模型(3)聯(lián)系(Relationship)在現(xiàn)實(shí)世界中,事物內(nèi)部以及事物之間是有聯(lián)系的,這些聯(lián)系在信息世界中反映為兩類:一類是實(shí)體內(nèi)部的聯(lián)系,即組成實(shí)體的各屬性之間的聯(lián)系;另一類是不同實(shí)體之間的聯(lián)系。如學(xué)生選課實(shí)體和學(xué)生基本信息實(shí)體之間是有聯(lián)系的,一名學(xué)生可以選修多門課程,一門課程可以被多名學(xué)生選修。(4)關(guān)鍵字(Key)唯一標(biāo)識(shí)實(shí)體的一個(gè)屬性或多個(gè)屬性的組合稱為關(guān)鍵字。如學(xué)號(hào)是學(xué)生實(shí)體的關(guān)鍵字,而在學(xué)生選課關(guān)系中,學(xué)號(hào)和課程號(hào)組合在一起才能唯一標(biāo)識(shí)某個(gè)學(xué)生某門課程的考試成績(jī)。任務(wù)1理解數(shù)據(jù)模型(5)實(shí)體型(EntityType)用實(shí)體名及其屬性名集合來(lái)抽象和描述同類的實(shí)體,稱為實(shí)體型,通常我們所說(shuō)的實(shí)體就是指實(shí)體型。如學(xué)生(學(xué)號(hào),姓名,專業(yè),性別,出生時(shí)間,總學(xué)分,備注)就是一個(gè)實(shí)體型,它表示學(xué)生信息,不是指某一個(gè)具體的學(xué)生。(6)實(shí)體集(EntitySet)同一類實(shí)體的集合稱為實(shí)體集。例如,全體學(xué)生就是一個(gè)實(shí)體集。任務(wù)1理解數(shù)據(jù)模型(7)實(shí)體間的聯(lián)系的類型。實(shí)體間的聯(lián)系可以分為如下3類①一對(duì)一聯(lián)系(1∶1)②一對(duì)多聯(lián)系(1∶n)③多對(duì)多聯(lián)系(m∶n)任務(wù)1理解數(shù)據(jù)模型2.概念模型的表示方法在概念模型的眾多表示方法中,最常用的一種是實(shí)體-聯(lián)系(E-R)方法,也稱E-R模型。該方法用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念模型,可以直觀地表示現(xiàn)實(shí)世界中各類對(duì)象的特征和對(duì)象之間的聯(lián)系。下面對(duì)實(shí)體(型)、屬性、聯(lián)系進(jìn)行簡(jiǎn)要介紹。
實(shí)體:用矩形表示,矩形內(nèi)寫明實(shí)體名。
屬性:用橢圓形表示,橢圓形內(nèi)注明屬性名稱,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái)。當(dāng)屬性較多時(shí),可以將實(shí)體與其相應(yīng)的屬性單獨(dú)用列表表示。聯(lián)系:用菱形表示,菱形內(nèi)寫明聯(lián)系名,并用無(wú)向邊將其與有關(guān)實(shí)體連接起來(lái),同時(shí)在無(wú)向邊上標(biāo)注聯(lián)系的類型(1∶1、1∶n或m∶n)。任務(wù)1理解數(shù)據(jù)模型【例題2.1】在學(xué)生選課的概念模型中,學(xué)生實(shí)體具有學(xué)號(hào)、姓名、專業(yè)名、性別、出生時(shí)間、總學(xué)分、備注等屬性,用E-R圖表示如圖2-3所示任務(wù)1理解數(shù)據(jù)模型【例題2.2】用E-R圖表示學(xué)生選課的概念模型。每個(gè)實(shí)體的屬性如下。學(xué)生的屬性:學(xué)號(hào)、姓名、專業(yè)名、性別、出生時(shí)間、總學(xué)分、備注。課程的屬性:課程號(hào)、課程名、開課學(xué)期、學(xué)時(shí)、學(xué)分。這些實(shí)體的聯(lián)系為一個(gè)學(xué)生可以選修若干門課程,每門課程由多名學(xué)生選修。用E-R圖表示如圖2-4所示任務(wù)1理解數(shù)據(jù)模型2.1.3邏輯模型數(shù)據(jù)庫(kù)領(lǐng)域中主要的邏輯模型包括層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο髷?shù)據(jù)模型、對(duì)象關(guān)系數(shù)據(jù)模型、半結(jié)構(gòu)化數(shù)據(jù)模型等。表2-1對(duì)4種常用的邏輯模型做了簡(jiǎn)單的比較,本小節(jié)主要介紹關(guān)系模型。關(guān)系模型是目前應(yīng)用最廣的一種數(shù)據(jù)模型,也是理論研究最完備的一種數(shù)據(jù)模型。任務(wù)1理解數(shù)據(jù)模型任務(wù)1理解數(shù)據(jù)模型1.關(guān)系模型的數(shù)據(jù)類型關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)是關(guān)系。在用戶看來(lái),關(guān)系就是二維表,關(guān)系模型由一組二維表組成。下面以學(xué)生情況表為例介紹一些關(guān)系模型中常用的術(shù)語(yǔ)任務(wù)1理解數(shù)據(jù)模型①關(guān)系(Relation):一個(gè)關(guān)系通常對(duì)應(yīng)一張二維表,由行和列組成,表名即關(guān)系名。實(shí)體及實(shí)體間的聯(lián)系都用二維表來(lái)表示,如表2-2所示的學(xué)生情況表。在數(shù)據(jù)庫(kù)的物理組織中,二維表是以文件形式存儲(chǔ)的。②元組(Tuple):二維表中的一行即為一個(gè)元組(也稱記錄),是眾多具有相同屬性的對(duì)象中的一個(gè),如學(xué)生關(guān)系中的(001104,嚴(yán)蔚敏,軟件技術(shù),男,2000-08-26,50)就是一個(gè)元組,記錄了一名學(xué)生的基本信息。③屬性(Attribute):二維表中的一列即為一個(gè)屬性,代表相應(yīng)數(shù)據(jù)表中存儲(chǔ)對(duì)象的共有屬性,屬性的名稱為屬性名,屬性的值稱為屬性值。表2-2中的學(xué)號(hào)、姓名等均為屬性,001104為學(xué)號(hào)的屬性值。④域(Domain):屬性的取值范圍稱為屬性的域。屬性的域是由屬性的性質(zhì)及要表達(dá)的意義確定的,如學(xué)生性別的域是(男,女)。任務(wù)1理解數(shù)據(jù)模型⑤候選鍵(CandidateKey):若關(guān)系中的某一屬性或?qū)傩越M的值能唯一地標(biāo)識(shí)一個(gè)元組,則稱該屬性或?qū)傩越M為候選鍵;候選鍵可以有多個(gè)。⑥主鍵(PrimaryKey,PK):關(guān)系中的某個(gè)屬性或?qū)傩越M能唯一確定一個(gè)元組,即確定一個(gè)實(shí)體,則該屬性或?qū)傩越M為主鍵。一個(gè)關(guān)系中的主鍵只能有一個(gè),主鍵也被稱為關(guān)鍵字。如學(xué)生表中的學(xué)號(hào)可以唯一確定一個(gè)學(xué)生,因此學(xué)號(hào)是學(xué)生表的關(guān)鍵字。而在成績(jī)表中,學(xué)號(hào)和課程號(hào)組合起來(lái)才能唯一地確定一個(gè)元組,所以,學(xué)號(hào)和課程號(hào)的組合稱為成績(jī)表的關(guān)鍵字。這種由多個(gè)屬性組成的關(guān)鍵字稱為復(fù)合關(guān)鍵字。⑦外鍵或外部關(guān)鍵字(ForeignKey,F(xiàn)K):一個(gè)關(guān)系中的屬性或?qū)傩越M不是本關(guān)系的主鍵,而是另一關(guān)系的主鍵,則稱該屬性或?qū)傩越M是該關(guān)系的外鍵。任務(wù)1理解數(shù)據(jù)模型⑧關(guān)系模式(RelationSchema):對(duì)關(guān)系的描述稱為關(guān)系模式,它描述的是二維表的結(jié)構(gòu)。一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n)例如,學(xué)生、課程、選課之間的聯(lián)系在關(guān)系模型中可以表示為如下形式。學(xué)生(學(xué)號(hào),姓名,專業(yè)名,性別,出生時(shí)間,總學(xué)分,備注)主鍵:學(xué)號(hào)課程(課程號(hào),課程名,開課學(xué)期,學(xué)時(shí),學(xué)分)主鍵:課程號(hào)成績(jī)(學(xué)號(hào),課程號(hào),成績(jī))主鍵:學(xué)號(hào)、課程號(hào)外鍵:學(xué)號(hào)、課程號(hào)⑨元數(shù)(Arity):關(guān)系模式中屬性的數(shù)目是關(guān)系的元數(shù)。⑩分量(Component):元組中的一個(gè)屬性值稱為元組的分量。任務(wù)1理解數(shù)據(jù)模型關(guān)系模型給出了關(guān)系操作的能力,關(guān)系操作的對(duì)象和結(jié)果都是集合,主要包括以下兩方面。①查詢操作:選擇(SELECT)、投影(PROJECT)、連接(JOIN)、除(DIVIDE)、并(UNION)、交(INTERSECTION)和差(DIFFERENCE)。②更新操作:插入(INSERT)、刪除(DELETE)和修改(UPDATE)。進(jìn)行插入、刪除、修改操作時(shí)要滿足關(guān)系模型的完整性約束條件。關(guān)系操作都是由關(guān)系操作語(yǔ)言實(shí)現(xiàn)的。關(guān)系模型使用的查詢語(yǔ)言是關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)用關(guān)系的運(yùn)算來(lái)表達(dá)查詢要求,關(guān)系演算用謂詞來(lái)表達(dá)查詢要求。SQL是介于關(guān)系代數(shù)和關(guān)系演算之間的語(yǔ)言。關(guān)系代數(shù)和關(guān)系演算也是關(guān)系數(shù)據(jù)庫(kù)SQL的理論基礎(chǔ)任務(wù)1理解數(shù)據(jù)模型3.關(guān)系模型的完整性約束關(guān)系的完整性就是指關(guān)系模型的數(shù)據(jù)完整性,用于確保數(shù)據(jù)的準(zhǔn)確性和一致性。關(guān)系模型的完整性有三大類:實(shí)體完整性、參照完整性和用戶定義的完整性。其中,實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,稱為關(guān)系的兩個(gè)不變性。(1)實(shí)體完整性實(shí)體完整性是指關(guān)系的關(guān)鍵字的所有屬性都不能為空。它可確保關(guān)系中的每個(gè)元組都是可識(shí)別的、唯一的。關(guān)系模型中的每個(gè)元組都對(duì)應(yīng)客觀存在的一個(gè)實(shí)例,若關(guān)系中的某個(gè)元組主鍵沒(méi)有值,則此元組在關(guān)系中一定沒(méi)有任何意義。如在學(xué)生關(guān)系中,主鍵學(xué)號(hào)能夠唯一地確定一個(gè)學(xué)生,如果某個(gè)學(xué)生的學(xué)號(hào)為空,則此學(xué)生將無(wú)法管理。任務(wù)1理解數(shù)據(jù)模型(2)參照完整性參照完整性也稱引用完整性,是指兩個(gè)表的主鍵和外鍵的數(shù)據(jù)對(duì)應(yīng)一致。它可確保有主鍵的表中有對(duì)應(yīng)其他表的外鍵的行存在?,F(xiàn)實(shí)世界中的實(shí)體之間往往存在某種聯(lián)系,在關(guān)系模型中就自然存在關(guān)系與關(guān)系間的引用。參照完整性用于描述實(shí)體之間的引用規(guī)則,即一個(gè)實(shí)體中某個(gè)屬性的值引用了另一個(gè)實(shí)體的關(guān)鍵字,其中引用關(guān)系稱為參照關(guān)系,而被引用關(guān)系稱為被參照關(guān)系,參照關(guān)系中的引用字段稱為外鍵。關(guān)系模型中的參照完整性就是通過(guò)定義外鍵來(lái)實(shí)現(xiàn)的。例如,學(xué)生、課程、學(xué)生與課程之間的多對(duì)多聯(lián)系可以用如下3個(gè)關(guān)系表示。學(xué)生(學(xué)號(hào),姓名,專業(yè)名,性別,出生時(shí)間,總學(xué)分,備注)課程(課程號(hào),課程名,開課學(xué)期,學(xué)時(shí),學(xué)分)選修(學(xué)號(hào),課程號(hào),成績(jī))任務(wù)1理解數(shù)據(jù)模型參照完整性就是限制一個(gè)關(guān)系中某個(gè)屬性的取值受另一個(gè)關(guān)系中某個(gè)屬性的取值范圍的約束。不僅兩個(gè)或兩個(gè)以上的關(guān)系間可以存在引用關(guān)系,同一關(guān)系內(nèi)部的屬性間也可以存在引用關(guān)系。參照完整性規(guī)定了關(guān)鍵字與外鍵之間的引用規(guī)則,要求主關(guān)鍵字必須是非空且不重復(fù)的,但對(duì)外鍵并無(wú)要求。外鍵可以有重復(fù)值,也可以為空任務(wù)1理解數(shù)據(jù)模型(3)用戶定義的完整性用戶定義的完整性也稱域完整性或語(yǔ)義完整性。它是指不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)應(yīng)用環(huán)境的不同,設(shè)定的一些特殊約束條件。用戶定義完整性常用于限定屬性的類型及取值范圍,這樣可以防止屬性值與數(shù)據(jù)庫(kù)語(yǔ)義矛盾。例如學(xué)生的性別應(yīng)該是男或女。任務(wù)1理解數(shù)據(jù)模型4.關(guān)系模型的主要特點(diǎn)關(guān)系模型的主要特點(diǎn)如下。①關(guān)系中的每一個(gè)數(shù)據(jù)項(xiàng)不可再分,是最基本的單位。②每一列數(shù)據(jù)項(xiàng)是同屬性的。列數(shù)根據(jù)需要而定,且各列的順序是任意的。③每一行記錄由一個(gè)事物的諸多屬性構(gòu)成。記錄的順序可以是任意的。④一個(gè)關(guān)系可看作一張二維表,不允許有相同的字段名,也不允許有相同的記錄行。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的邏輯結(jié)構(gòu)可以分為用戶級(jí)、邏輯級(jí)和物理級(jí)3個(gè)層次,反映觀察數(shù)據(jù)庫(kù)的3種角度。從數(shù)據(jù)庫(kù)最終用戶的角度看,數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)分為單用戶結(jié)構(gòu)、主從式結(jié)構(gòu)、分布式結(jié)構(gòu)、客戶端/服務(wù)器結(jié)構(gòu)、瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器多層結(jié)構(gòu)等,這是數(shù)據(jù)庫(kù)系統(tǒng)外部的體系結(jié)構(gòu)。從數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員的角度看,雖然實(shí)際的數(shù)據(jù)庫(kù)管理系統(tǒng)產(chǎn)品種類很多,支持不同的數(shù)據(jù)模型,使用不同的數(shù)據(jù)庫(kù)語(yǔ)言,建立在不同的操作系統(tǒng)之上,數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)也各不相同,但它們?cè)隗w系結(jié)構(gòu)上通常都具有相同的外模式、模式和內(nèi)模式三級(jí)模式結(jié)構(gòu)的特征,各級(jí)模式之間通過(guò)映射關(guān)系進(jìn)行聯(lián)系和轉(zhuǎn)換,如圖2-5所示。這是數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的體系結(jié)構(gòu)。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)2.2.1了解數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)1.模式在數(shù)據(jù)模型中有“型”(Type)和“值”(Value)的概念。型是指某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說(shuō)明,值是型的一個(gè)具體值。模式(Schema)也稱邏輯模式或概念模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及型的描述,不涉及具體的值。模式的一個(gè)具體值稱為模式的一個(gè)實(shí)例(Instance)。同一個(gè)模式可以有很多實(shí)例。例如,學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)模式中,包含學(xué)生記錄、課程記錄和成績(jī)記錄,現(xiàn)在可以添加一個(gè)計(jì)算機(jī)學(xué)院的成績(jī)管理數(shù)據(jù)庫(kù)實(shí)例,也可以添加一個(gè)機(jī)電學(xué)院的成績(jī)管理數(shù)據(jù)庫(kù)實(shí)例。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)2.外模式外模式也稱子模式或用戶模式,它是數(shù)據(jù)庫(kù)用戶(包括應(yīng)用程序開發(fā)人員和用戶)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用程序有關(guān)的數(shù)據(jù)的邏輯表示,屬于視圖層抽象。外模式通常是模式的子集。一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式。由于它是各個(gè)用戶的數(shù)據(jù)視圖,如果用戶在應(yīng)用需求、提取數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求等方面存在差異,則其外模式描述會(huì)有所不同。即使是模式中的同一數(shù)據(jù),它在外模式中的結(jié)構(gòu)、類型、長(zhǎng)度、保密級(jí)別等都可以不同。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)3.內(nèi)模式內(nèi)模式也稱存儲(chǔ)模式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)中的內(nèi)部表示,是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,屬于物理層抽象,例如數(shù)據(jù)是否壓縮存儲(chǔ)、是否加密,數(shù)據(jù)的存儲(chǔ)記錄結(jié)構(gòu)有何規(guī)定等。內(nèi)模式是數(shù)據(jù)庫(kù)管理系統(tǒng)管理的最低層。數(shù)據(jù)庫(kù)管理系統(tǒng)提供內(nèi)模式DDL來(lái)嚴(yán)格地定義內(nèi)模式。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)2.2.2了解數(shù)據(jù)庫(kù)系統(tǒng)的兩級(jí)映像數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式是對(duì)數(shù)據(jù)進(jìn)行抽象的3個(gè)級(jí)別,為了能夠在內(nèi)部實(shí)現(xiàn)這3個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫(kù)管理系統(tǒng)在這3級(jí)模式之間提供了兩級(jí)映像:外模式/模式映像、模式/內(nèi)模式映像。這兩級(jí)映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)具有較強(qiáng)的邏輯獨(dú)立性和物理獨(dú)立性。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)(1)外模式/模式映像模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu),外模式描述的是數(shù)據(jù)的局部邏輯結(jié)構(gòu)。同一個(gè)模式可以有多個(gè)外模式。對(duì)于每一個(gè)外模式,數(shù)據(jù)庫(kù)系統(tǒng)都提供了一個(gè)外模式/模式映像,它定義了外模式與模式之間的對(duì)應(yīng)關(guān)系。映像定義通常包含在各自外模式的描述中。當(dāng)模式改變(如增加新的關(guān)系或?qū)傩浴⒏淖儗傩缘臄?shù)據(jù)類型等)時(shí),可由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/模式映像做相應(yīng)的修改,從而保持外模式不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,因此應(yīng)用程序不必修改,保證了數(shù)據(jù)與應(yīng)用程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)(2)模式/內(nèi)模式映像數(shù)據(jù)庫(kù)中只有一個(gè)模式,也只有一個(gè)內(nèi)模式,所以模式/內(nèi)模式映像是唯一的,它用于定義數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變(如選用了另一種存儲(chǔ)結(jié)構(gòu)),為了保持模式不變,也就是應(yīng)用程序保持不變,可由數(shù)據(jù)庫(kù)管理員對(duì)模式/內(nèi)模式映像做相應(yīng)改變。這樣,就保證了數(shù)據(jù)與應(yīng)用程序的物理獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的物理獨(dú)立性。在數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)中,數(shù)據(jù)庫(kù)模式即全局邏輯結(jié)構(gòu),是數(shù)據(jù)庫(kù)的中心與關(guān)鍵,它獨(dú)立于數(shù)據(jù)庫(kù)的其他模式。因此,設(shè)計(jì)數(shù)據(jù)庫(kù)模式結(jié)構(gòu)時(shí)應(yīng)先確定數(shù)據(jù)庫(kù)的邏輯模式任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)庫(kù)的內(nèi)模式依賴于它的全局邏輯結(jié)構(gòu),但獨(dú)立于數(shù)據(jù)庫(kù)的用戶視圖,即外模式,也獨(dú)立于具體的存儲(chǔ)設(shè)備。它將全局邏輯結(jié)構(gòu)中所定義的數(shù)據(jù)結(jié)構(gòu)及其聯(lián)系按照一定的物理存儲(chǔ)策略進(jìn)行組織,以達(dá)到較好的時(shí)間與空間效率。數(shù)據(jù)庫(kù)的外模式面向具體的應(yīng)用程序,它定義在邏輯模式之上,但獨(dú)立于存儲(chǔ)模式和存儲(chǔ)設(shè)備。當(dāng)用戶需求發(fā)生較大變化,相應(yīng)外模式不能滿足其視圖要求時(shí),外模式就要做相應(yīng)的改動(dòng),所以設(shè)計(jì)外模式時(shí)應(yīng)充分考慮應(yīng)用程序的擴(kuò)充性。任務(wù)2了解數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)特定的應(yīng)用程序是在外模式描述的數(shù)據(jù)結(jié)構(gòu)上開發(fā)的,它依賴于特定的外模式,獨(dú)立于數(shù)據(jù)庫(kù)的模式和存儲(chǔ)結(jié)構(gòu)。不同的應(yīng)用程序有時(shí)可以共用同一個(gè)外模式。數(shù)據(jù)庫(kù)的兩級(jí)映像保證了數(shù)據(jù)庫(kù)外模式的穩(wěn)定性,從而從底層保證了應(yīng)用程序的穩(wěn)定性,除非應(yīng)用需求本身發(fā)生變化,否則應(yīng)用程序一般不需要修改。數(shù)據(jù)庫(kù)的三級(jí)模式和兩級(jí)映像保證了數(shù)據(jù)與應(yīng)用程序之間的獨(dú)立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去。另外,由于數(shù)據(jù)的存取由數(shù)據(jù)庫(kù)管理系統(tǒng)管理,用戶不必考慮存取路徑等細(xì)節(jié),從而簡(jiǎn)化了應(yīng)用程序的開發(fā),大大減少了應(yīng)用程序的維護(hù)和修改成本。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)2.3.1關(guān)系代數(shù)在計(jì)算機(jī)上存儲(chǔ)數(shù)據(jù)的目的是使用數(shù)據(jù),選擇好數(shù)據(jù)的組織形式后,就要確定如何使用這些數(shù)據(jù)。關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,它用關(guān)系的運(yùn)算來(lái)表達(dá)查詢。關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果亦為關(guān)系,它主要運(yùn)用高等數(shù)學(xué)中關(guān)系代數(shù)的集合的相關(guān)理論。關(guān)系代數(shù)的運(yùn)算按運(yùn)算符的不同可分為傳統(tǒng)的集合運(yùn)算和專門的關(guān)系運(yùn)算兩類。①傳統(tǒng)的集合運(yùn)算將關(guān)系看成元組的集合,其運(yùn)算是從關(guān)系的行的角度進(jìn)行的。它包括并、差、交、笛卡兒積4種運(yùn)算。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)②專門的關(guān)系運(yùn)算包括選擇、投影、連接和除等,它不僅涉及行而且涉及列,常用比較運(yùn)算符和邏輯運(yùn)算符來(lái)輔助專門的關(guān)系運(yùn)算符進(jìn)行操作。關(guān)系代數(shù)中常用的運(yùn)算及運(yùn)算符如下。集合運(yùn)算:∪(并)、―(差)、∩(交)、×(笛卡兒積)。關(guān)系運(yùn)算:∏(投影)、σ(選擇)、(連接)、÷(除)。比較運(yùn)算:>(大于)、≥(大于等于)、<(小于)、≤(小于等于)、≠(不等于)。邏輯運(yùn)算:∨(或)、∧(與)、﹃(非)。下面僅對(duì)部分運(yùn)算做簡(jiǎn)要介紹。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)1.投影運(yùn)算投影運(yùn)算是對(duì)關(guān)系中的列(屬性)進(jìn)行的運(yùn)算。它按給定的條件選取關(guān)系中的部分或全部列,將其重新排列后組成一個(gè)新的關(guān)系。投影運(yùn)算屬于單目運(yùn)算【例題2.3】將表2-2“學(xué)生情況表”記作關(guān)系R,它是一個(gè)7度關(guān)系,查詢所有學(xué)生的姓名、專業(yè)名、總學(xué)分,將查詢結(jié)果組成新表“學(xué)生專業(yè)情況表”,如表2-3所示。將“學(xué)生專業(yè)情況表”記作關(guān)系S,它是一個(gè)3度關(guān)系,并且是由R通過(guò)投影運(yùn)算得到的。記作:
S=∏姓名,專業(yè)名,總學(xué)分(R)任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)2.選擇運(yùn)算選擇運(yùn)算是對(duì)關(guān)系中的行進(jìn)行的運(yùn)算,是從指定的關(guān)系中,選取滿足條件的部分或全部行,組成一個(gè)新的關(guān)系。選擇運(yùn)算屬于單目運(yùn)算,選擇的結(jié)果是原關(guān)系的一個(gè)子集,且關(guān)系的模型不變。【例題2.4】在表2-2所示的“學(xué)生情況表”中,查詢網(wǎng)絡(luò)技術(shù)專業(yè)的學(xué)生,查詢得到的關(guān)系如表2-4所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)3.連接運(yùn)算連接運(yùn)算是按照給定的條件,把兩個(gè)關(guān)系中的一切可能的組合方式拼接起來(lái),形成一個(gè)新的關(guān)系,就是對(duì)兩個(gè)關(guān)系進(jìn)行笛卡兒積的選擇運(yùn)算。連接運(yùn)算是雙目運(yùn)算。連接運(yùn)算中有兩種很重要也很常用的連接:等值連接和自然連接。(1)等值連接。如果兩個(gè)關(guān)系R和S中分別存在數(shù)目相等且可比的屬性組A和B,在R和S的笛卡兒積中選取A、B屬性值相等的元組稱為等值連接。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)【例題2.5】將學(xué)生關(guān)系和選課關(guān)系進(jìn)行連接,能得到學(xué)生及其選課的情況,如表2-5(關(guān)系R)和表2-6(關(guān)系S)。查詢關(guān)系R和S中姓名屬性值相等的元組。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)則關(guān)系R與S等值連接的結(jié)果如表2-7所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)(2)自然連接。自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的屬性組的值必須相同,并且在結(jié)果中把重復(fù)的屬性去掉。自然連接是最常用的一種連接運(yùn)算,在關(guān)系運(yùn)算中起著重要作用。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)【例題2.6】例題2.5中關(guān)系R和S的自然連接結(jié)果如表2-8所示。由此可見(jiàn),查詢時(shí)應(yīng)考慮優(yōu)化,以便提高查詢效率。如果有可能,應(yīng)當(dāng)首先進(jìn)行選擇運(yùn)算,使關(guān)系中元組的個(gè)數(shù)盡量少,然后進(jìn)行投影運(yùn)算,使關(guān)系中屬性的個(gè)數(shù)較少,最后進(jìn)行連接運(yùn)算。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)2.3.2關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL1.SQL的主要特點(diǎn)SQL具有數(shù)據(jù)查詢(DataQuery)、數(shù)據(jù)操縱(DataManipulation)、數(shù)據(jù)定義(DataDefinition)和數(shù)據(jù)控制(DataControl)功能,其主要特點(diǎn)如下。①綜合統(tǒng)一。②SQL是非過(guò)程化的語(yǔ)言。③SQL采用面向集合的操作方式。④以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式。SQL既是獨(dú)立的語(yǔ)言,又是嵌入式語(yǔ)言。⑤語(yǔ)言簡(jiǎn)潔,易學(xué)易用。此外,SQL支持?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)的三級(jí)模式結(jié)構(gòu),模式對(duì)應(yīng)基本表,外模式對(duì)應(yīng)視圖或部分基本表,內(nèi)模式對(duì)應(yīng)存儲(chǔ)文件。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)2.SQL的組成
SQL由以下幾部分組成。(1)DDLDDL用于執(zhí)行數(shù)據(jù)庫(kù)的任務(wù),對(duì)數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)中的各種對(duì)象進(jìn)行創(chuàng)建、刪除、修等操作。DDL的主要語(yǔ)句及功能如表2-9所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)(2)DMLDML用于操縱數(shù)據(jù)庫(kù)中的各種對(duì)象,檢索和修改數(shù)據(jù)。DML的主要語(yǔ)句及功能如表2-10所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(kù)(3)DCLDCL用于安全管理,確定哪些用戶可以查看或修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),DCL的主要語(yǔ)句及功能如表2-11所示。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化2.4.1第一范式(1NF)在關(guān)系數(shù)據(jù)庫(kù)中,對(duì)關(guān)系模式的基本要求是滿足第一范式,這樣的關(guān)系模式就是合法的、允許的。第一范式是指數(shù)據(jù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。由此可見(jiàn),第一范式主要針對(duì)列進(jìn)行規(guī)范化。從用戶角度看,關(guān)系的邏輯結(jié)構(gòu)是一個(gè)二維表,每個(gè)表代表一類信息(實(shí)體)的集合,但事實(shí)上不是所有的二維表都是關(guān)系。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化例如,將學(xué)號(hào)、姓名、聯(lián)系電話組成一張表,但一個(gè)學(xué)生可能有一個(gè)移動(dòng)電話和一個(gè)家庭電話,所以這張表就不是關(guān)系。將其規(guī)范成第一范式有以下3種方法。①重復(fù)存儲(chǔ)學(xué)號(hào)和姓名,關(guān)鍵字是聯(lián)系電話。②學(xué)號(hào)為關(guān)鍵字,聯(lián)系電話分為移動(dòng)電話和家庭電話。③學(xué)號(hào)為關(guān)鍵字,但每條記錄只能有一個(gè)聯(lián)系電話,要么是移動(dòng)電話,要么是家庭電話。以上3種方法中,第一種方法最不可取,按實(shí)際情況選取后兩種方法。這種將非關(guān)系的二維表轉(zhuǎn)化為關(guān)系,就是關(guān)系規(guī)范化的過(guò)程。通過(guò)規(guī)范化可以使從數(shù)據(jù)庫(kù)中得到的結(jié)果更加準(zhǔn)確。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化2.4.2第二范式(2NF)第二范式是在第一范式的基礎(chǔ)上建立起來(lái)的,即滿足第二范式必須先滿足第一范式。有些滿足第一范式的關(guān)系模式存在插入異常、刪除異常、修改復(fù)雜、數(shù)據(jù)冗余等問(wèn)題。例如,在分析學(xué)生基本信息時(shí),得到表2-12所示的表。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化表2-12用于保存學(xué)生基本信息,其中包括學(xué)生學(xué)號(hào)、姓名及課程成績(jī)等信息,如果要?jiǎng)h除其中的一個(gè)學(xué)生,就必須同時(shí)刪除一個(gè)相應(yīng)的成績(jī),規(guī)范化就是要解決這個(gè)問(wèn)題。可以將這個(gè)表轉(zhuǎn)化為兩個(gè)表,一個(gè)用于存儲(chǔ)每個(gè)學(xué)生的基本信息,另一個(gè)用于存儲(chǔ)每個(gè)學(xué)生的成績(jī)信息,這樣對(duì)其中一個(gè)表進(jìn)行添加或刪除操作都不會(huì)影響另一個(gè)表。分解后的關(guān)系如表2-13和表2-14所示。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化第二范式要求數(shù)據(jù)表中的每個(gè)實(shí)例或行必須可以被唯一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的唯一標(biāo)識(shí)。例如表2-12學(xué)生基本信息表中添加了學(xué)號(hào)列,因?yàn)槊總€(gè)學(xué)生的學(xué)號(hào)是唯一的,因此每個(gè)學(xué)生可以被唯一區(qū)分。這個(gè)唯一列被稱為主鍵。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化第二范式要求實(shí)體的屬性完全依賴主鍵。完全依賴是指不能存在僅依賴主鍵一部分的屬性。如果存在,那么這個(gè)屬性和主鍵這一部分應(yīng)該被分離出來(lái)形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間具有一對(duì)多關(guān)系。換言之,第二范式是指數(shù)據(jù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的部分函數(shù)依賴(部分函數(shù)依賴指的是存在復(fù)合關(guān)鍵字中的某些字段決定非關(guān)鍵字段),即所有非關(guān)鍵字段都完全依賴于任意一組候選關(guān)鍵字。數(shù)據(jù)庫(kù)的設(shè)計(jì)范式是數(shù)據(jù)庫(kù)設(shè)計(jì)需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫(kù)是簡(jiǎn)潔的、結(jié)構(gòu)明晰的,同時(shí),不會(huì)發(fā)生插入、刪除和更新操作異常。反之,數(shù)據(jù)庫(kù)會(huì)比較混亂,可能會(huì)有大量不需要的冗余信息,給數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)人員制造麻煩。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化【例題2.7】在選課關(guān)系表SelectCourse(學(xué)號(hào),姓名,出生時(shí)間,課程名稱,成績(jī),學(xué)分)中,關(guān)鍵字為復(fù)合關(guān)鍵字(學(xué)號(hào),課程名稱),因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號(hào),課程名稱)→(姓名,出生時(shí)間,成績(jī),學(xué)分)。這個(gè)數(shù)據(jù)表不滿足第二范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:(課程名稱)→(學(xué)分);(學(xué)號(hào))→(姓名,出生時(shí)間)。即存在復(fù)合關(guān)鍵字中的字段決定非關(guān)鍵字的情況。
由于不符合第二范式,這個(gè)選課關(guān)系表會(huì)存在如下問(wèn)題。(1)數(shù)據(jù)冗余。同一門課程由n個(gè)學(xué)生選修,學(xué)分就重復(fù)n-1次;同一個(gè)學(xué)生選修m門課程,姓名和出生時(shí)間就重復(fù)m-1次。(2)更新異常。若調(diào)整了某門課程的學(xué)分,數(shù)據(jù)表中所有行的學(xué)分值都要更新,否則會(huì)出現(xiàn)同一門課程學(xué)分不同的情況。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化(3)插入異常。假設(shè)要開設(shè)一門新的課程,暫時(shí)還沒(méi)有人選修。這時(shí),由于還沒(méi)有“學(xué)號(hào)”關(guān)鍵字,課程名稱和學(xué)分也無(wú)法記錄入數(shù)據(jù)庫(kù)。(4)刪除異常。假設(shè)一批學(xué)生已經(jīng)完成課程的選修,這些選修記錄就應(yīng)該從數(shù)據(jù)表中刪除。但是,與此同時(shí),課程名稱和學(xué)分信息也被刪除了。很顯然,這也會(huì)導(dǎo)致插入異常。假設(shè)把選課關(guān)系表SelectCourse改為如下3個(gè)表。學(xué)生:xs(學(xué)號(hào),姓名,出生時(shí)間)。課程:kc(課程名稱,學(xué)分)。成績(jī):cj(學(xué)號(hào),課程名稱,成績(jī))。這樣的數(shù)據(jù)表是符合第二范式的,它已消除了數(shù)據(jù)冗余、更新異常、插入異常和刪除異常。另外,所有單關(guān)鍵字的數(shù)據(jù)表都符合第二范式,因?yàn)槠渲胁豢赡艽嬖趶?fù)合關(guān)鍵字。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化2.4.3第三范式(3NF)在第二范式的基礎(chǔ)上,第三范式要求一個(gè)數(shù)據(jù)表中不包含已在其他表中包含的非主鍵信息。例如,存在一個(gè)班級(jí)信息表,其中每個(gè)班級(jí)都有班級(jí)編號(hào)、班級(jí)名、班級(jí)簡(jiǎn)介等信息。那么在學(xué)生信息表中列出班級(jí)編號(hào)后就不能再將班級(jí)名、班級(jí)簡(jiǎn)介等與班級(jí)有關(guān)的信息加入學(xué)生信息表中。如果不存在班級(jí)信息表,則根據(jù)第三范式創(chuàng)建它,否則就會(huì)有大量的數(shù)據(jù)冗余。換言之,第三范式是指在第二范式的基礎(chǔ)上,數(shù)據(jù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴。所謂傳遞函數(shù)依賴,指的是如果存在“A→B→C”的決定關(guān)系,則C的傳遞函數(shù)依賴于A。因此,滿足第三范式的數(shù)據(jù)表應(yīng)該不存在依賴關(guān)系:關(guān)鍵字段→非關(guān)鍵字段x→非關(guān)鍵字段y。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化假定學(xué)生關(guān)系表為Student(學(xué)號(hào),姓名,出生時(shí)間,所在學(xué)院,學(xué)院地點(diǎn),學(xué)院電話),關(guān)鍵字為單一關(guān)鍵字“學(xué)號(hào)”,因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號(hào))→(姓名,出生時(shí)間,所在學(xué)院,學(xué)院地點(diǎn),學(xué)院電話)。這個(gè)數(shù)據(jù)庫(kù)是符合第二范式的,但是不符合第三范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號(hào))→(所在學(xué)院)→(學(xué)院地點(diǎn),學(xué)院電話)。即存在非關(guān)鍵字段學(xué)院地點(diǎn)、學(xué)院電話對(duì)關(guān)鍵字段學(xué)號(hào)的傳遞函數(shù)依賴。顯然它也存在數(shù)據(jù)冗余、更新異常、插入異常和刪除異常的問(wèn)題。如果把學(xué)生關(guān)系表分為如下兩個(gè)表。學(xué)生:(學(xué)號(hào),姓名,出生時(shí)間,所在學(xué)院)。學(xué)院:(學(xué)院,地點(diǎn),電話)。則這樣的數(shù)據(jù)表是符合第三范式的,它已消除了數(shù)據(jù)冗余、更新異常、插入異常和刪除異常。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化2.4.4BC范式鮑依斯—科得范式(BoyceCoddNormalForm,BCNF)是由Boyce和科德(Codd)提出的,比3NF又進(jìn)了一步,通常認(rèn)為是修正的第三范式。BC范式是指在第三范式的基礎(chǔ)上,數(shù)據(jù)表中如果不存在任何字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化【例題2.8】假設(shè)學(xué)生基本信息管理關(guān)系表為StudentManage(學(xué)生ID,班級(jí)ID,班主任ID,學(xué)生姓名,班級(jí)名),且存在一名學(xué)生在一個(gè)班級(jí)里,一個(gè)班里有一名班主任的關(guān)系。這個(gè)數(shù)據(jù)表中存在如下決定關(guān)系:(學(xué)生ID,班級(jí)ID)→(學(xué)生姓名,班級(jí)名,班主任ID)(班主任ID,學(xué)生ID)→(班級(jí)名,班級(jí)ID)。所以,(學(xué)生ID,班級(jí)ID)和(班主任ID,學(xué)生ID)都是StudentManage表的候選關(guān)鍵字,表中非候選關(guān)鍵字不存在傳遞函數(shù)依賴,它是符合第三范式的。但是,由于存在如下決定關(guān)系:(學(xué)生ID)→(班級(jí)ID,班主任ID);(班主任ID,班級(jí)ID)→(學(xué)生ID)。即存在關(guān)鍵字段決定關(guān)鍵字段的情況,所以它不符合BC范式。它會(huì)出現(xiàn)如下異常情況。(1)刪除異常。當(dāng)班主任信息被清除后,所有“學(xué)生ID”和“學(xué)生姓名”信息被刪除的同時(shí),“班級(jí)ID”和“班級(jí)名”信息也會(huì)被刪除。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化(2)插入異常。當(dāng)班級(jí)里沒(méi)有分配班主任時(shí),無(wú)法給班級(jí)添加學(xué)生信息。(3)更新異常。如果班主任更換了,則表中所有行的班主任ID都要修改。假設(shè)把學(xué)生基本信息管理關(guān)系表分解為兩個(gè)關(guān)系表。學(xué)生信息管理:StudentManage(學(xué)生ID,學(xué)生姓名,班級(jí)ID)。班級(jí)信息管理:Class(班級(jí)ID,班級(jí)名,班主任ID)。這樣的數(shù)據(jù)表是符合BC范式的,它已消除了刪除異常、插入異常和更新異常??傊?,關(guān)系模式規(guī)范化目的是使結(jié)構(gòu)更合理,消除插入異常、刪除異常和更新異常,使數(shù)據(jù)冗余盡量少,便于插入、刪除和更新數(shù)據(jù)任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化關(guān)系模式規(guī)范化的基本思想是逐步消除數(shù)據(jù)依賴中不合適的部分,使模式中的各關(guān)系模式達(dá)到某種程度的“分離”,讓一個(gè)關(guān)系模式描述一個(gè)實(shí)體或?qū)嶓w間的一種聯(lián)系。關(guān)系模式規(guī)范化的方法是將關(guān)系模式投影分解為兩個(gè)或兩個(gè)以上的模式。如果一個(gè)關(guān)系模式中的每一個(gè)屬性都是不可再分的數(shù)據(jù)項(xiàng),則稱它滿足第一范式。消除第一范式中非主屬性對(duì)碼的部分函數(shù)依賴,則得到第二范式。消除第二范式中非主屬性對(duì)碼的傳遞函數(shù)依賴,則得到第三范式。消除第三范式中主屬性對(duì)碼的部分函數(shù)依賴和傳遞函數(shù)依賴,則得到BC范式。消除BC范式中非平凡且非函數(shù)依賴的多值依賴,則得到第四范式。任務(wù)5了解數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程任務(wù)2-5了解數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程
在實(shí)際項(xiàng)目開發(fā)中,如果系統(tǒng)的數(shù)據(jù)存儲(chǔ)量較大,涉及的表較多,表與表之間的關(guān)系比較復(fù)雜,就必須先規(guī)范地設(shè)計(jì)數(shù)據(jù)庫(kù),然后創(chuàng)建數(shù)據(jù)庫(kù)和表。數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,設(shè)計(jì)優(yōu)化的數(shù)據(jù)庫(kù)的邏輯模式和物理結(jié)構(gòu),并據(jù)此創(chuàng)建數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)和管理數(shù)據(jù),滿足用戶的應(yīng)用需求,包括信息管理需求和數(shù)據(jù)操作需求。數(shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)是為用戶提供一個(gè)高效、安全的數(shù)據(jù)庫(kù),滿足用戶的使用需求。良好的數(shù)據(jù)庫(kù)設(shè)計(jì)表現(xiàn)為訪問(wèn)效率高;減少數(shù)據(jù)冗余,節(jié)省存儲(chǔ)空間,便于進(jìn)一步擴(kuò)展;可以使應(yīng)用程序的開發(fā)變得更容易。數(shù)據(jù)庫(kù)設(shè)計(jì)一般分為以下6個(gè)階段,其中,需求分析和概念結(jié)構(gòu)設(shè)計(jì)可以獨(dú)立于任何數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行,邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)與選用的數(shù)據(jù)庫(kù)管理系統(tǒng)密切相關(guān)。要?jiǎng)?chuàng)建一個(gè)完善的數(shù)據(jù)庫(kù)是不可能一蹴而就的,往往要反復(fù)進(jìn)行這6個(gè)階段。任務(wù)5了解數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程1.?dāng)?shù)據(jù)庫(kù)的需求分析需求分析簡(jiǎn)單地說(shuō)就是分析用戶的要求。需求分析是數(shù)據(jù)庫(kù)設(shè)計(jì)的第一步,是比較困難和耗費(fèi)時(shí)間的一步,也是整個(gè)設(shè)計(jì)過(guò)程的基礎(chǔ)。需求分析階段的主要任務(wù)是通過(guò)與用戶溝通,充分調(diào)查研究,搜集基礎(chǔ)數(shù)據(jù),逐步明確用戶對(duì)系統(tǒng)的需求,包括數(shù)據(jù)需求和業(yè)務(wù)處理需求,確定系統(tǒng)的功能,最終得到系統(tǒng)需求分析說(shuō)明書。需求分析做得是否充分和準(zhǔn)確,直接決定了創(chuàng)建數(shù)據(jù)庫(kù)的速度與質(zhì)量。需求分析做得不好,會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)返工重做。任務(wù)5了解數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程2.?dāng)?shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)將需求分析得到的用戶需求抽象為概念模型的過(guò)程就是概念結(jié)構(gòu)設(shè)計(jì)。它是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵。概念結(jié)構(gòu)設(shè)計(jì)的任務(wù)主要包括兩個(gè)方面:概念數(shù)據(jù)庫(kù)模式設(shè)計(jì)和事
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年落葉大班標(biāo)準(zhǔn)教案及反思
- 保潔外包合同范例
- 住宅使用權(quán)變更合同范例
- 水資源合理利用與開發(fā)策略計(jì)劃
- 海關(guān)業(yè)務(wù)知識(shí)培訓(xùn)課件
- 如何應(yīng)對(duì)工作中的壓力與挑戰(zhàn)計(jì)劃
- 第3課:《日食》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年六年級(jí)下冊(cè)科學(xué) 教科版
- 2025年羽毛球課程標(biāo)準(zhǔn)教案全
- 學(xué)習(xí)之道與方法指導(dǎo)計(jì)劃
- 第五單元《習(xí)作:圍繞中心意思寫》教學(xué)設(shè)計(jì)-2024-2025學(xué)年六年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 中建CFG樁施工方案
- 氫氟酸安全技術(shù)說(shuō)明書MSDS
- 中學(xué)國(guó)防教育配教案
- 人民調(diào)解實(shí)務(wù) 課件 第6-10章 人民調(diào)解程序-人民調(diào)解文書
- 6AM2U7 Rules around us Rules and signs ppt英語(yǔ)教學(xué)課件
- 管道安全檢查表
- 中國(guó)政府開放數(shù)據(jù)利用研究報(bào)告
- 拍攝短視頻的腳本范文(可用8篇)
- 復(fù)方雷尼替丁
- 2023年青島港灣職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)模擬試題及答案解析
- 25噸汽車吊吊裝施工方案
評(píng)論
0/150
提交評(píng)論