MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元2 數(shù)據(jù)庫基本原理_第1頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元2 數(shù)據(jù)庫基本原理_第2頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元2 數(shù)據(jù)庫基本原理_第3頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元2 數(shù)據(jù)庫基本原理_第4頁
MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(微課版)單元2 數(shù)據(jù)庫基本原理_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單元2數(shù)據(jù)庫基本原理《MySQL數(shù)據(jù)庫管理與應(yīng)用任務(wù)式教程(慕課版)》學(xué)習(xí)內(nèi)容任務(wù)1理解數(shù)據(jù)模型

2任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)任務(wù)4卸載MySQL

2任務(wù)3了解關(guān)系數(shù)據(jù)庫

2任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化

2任務(wù)5了解數(shù)據(jù)庫設(shè)計(jì)的過程學(xué)習(xí)目標(biāo)任務(wù)4卸載MySQL【知識目標(biāo)】

掌握數(shù)據(jù)模型的概念、組成和類型。掌握實(shí)體-聯(lián)系模型的基本概念。掌握E-R圖的組成及畫法。掌握關(guān)系模型的組成要素和主要特點(diǎn)。了解數(shù)據(jù)庫的三級模式結(jié)構(gòu)和二級映像。理解關(guān)系代數(shù)中的選擇、投影和連接運(yùn)算。初步了解關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL。了解數(shù)據(jù)規(guī)范化的基本概念及其范式。掌握數(shù)據(jù)庫設(shè)計(jì)的方法與步驟?!灸芰δ繕?biāo)】

能夠設(shè)計(jì)具體的數(shù)據(jù)庫應(yīng)用系統(tǒng)。會畫E-R圖。會用范式規(guī)范數(shù)據(jù)。【素質(zhì)目標(biāo)】引導(dǎo)學(xué)生了解國產(chǎn)數(shù)據(jù)庫管理系統(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ù)模型的概念模型是人們對現(xiàn)實(shí)世界中的事物和過程的描述及抽象表達(dá)。數(shù)據(jù)庫是相關(guān)數(shù)據(jù)的集合,它不僅反映數(shù)據(jù)本身的內(nèi)容,還反映數(shù)據(jù)之間的聯(lián)系。在數(shù)據(jù)庫中,用數(shù)據(jù)模型這個(gè)工具來抽象、表示、處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息,以便計(jì)算機(jī)能夠處理這些對象。因此,數(shù)據(jù)庫中的數(shù)據(jù)模型是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象和歸納,也就是說,數(shù)據(jù)模型是用來描述數(shù)據(jù)、組織數(shù)據(jù)和對數(shù)據(jù)進(jìn)行操作的。數(shù)據(jù)模型用于描述數(shù)據(jù)庫系統(tǒng)的靜態(tài)特征、動態(tài)特征和完整性約束條件。構(gòu)成數(shù)據(jù)模型的三要素為數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)的完整性約束。任務(wù)1理解數(shù)據(jù)模型

數(shù)據(jù)結(jié)構(gòu)是對數(shù)據(jù)靜態(tài)特征的描述。數(shù)據(jù)的靜態(tài)特征包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系和對數(shù)據(jù)取值范圍的約束。所以,數(shù)據(jù)結(jié)構(gòu)是所研究對象的類型的集合。在數(shù)據(jù)庫系統(tǒng)中,通常按數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,如關(guān)系結(jié)構(gòu)的數(shù)據(jù)模型是關(guān)系模型。(1)數(shù)據(jù)結(jié)構(gòu)(2)數(shù)據(jù)操作

數(shù)據(jù)操作是指對數(shù)據(jù)動態(tài)特征的描述,包括對數(shù)據(jù)進(jìn)行的操作及相關(guān)操作規(guī)則。數(shù)據(jù)庫的操作主要有檢索和更新(包括插入、刪除、修改)兩大類。數(shù)據(jù)模型要定義這些操作的確切含義、操作符號、操作規(guī)則(如優(yōu)先級)以及實(shí)現(xiàn)操作的語言。因此,數(shù)據(jù)操作完全可以看成對數(shù)據(jù)庫中各種對象的操作的集合。任務(wù)1理解數(shù)據(jù)模型

數(shù)據(jù)的完整性約束是對數(shù)據(jù)靜態(tài)和動態(tà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ù)必須遵守特定的語義約束條件,如學(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ù)模型(簡稱概念模型),另一類是邏輯數(shù)據(jù)模型(簡稱邏輯模型)和物理數(shù)據(jù)模型(簡稱物理模型)。概念模型也稱信息模型,它是面向用戶的,用于按照用戶的觀點(diǎn)來對數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫設(shè)計(jì),與具體的數(shù)據(jù)庫管理系統(tǒng)無關(guān)。邏輯模型和物理模型是面向計(jì)算機(jī)系統(tǒng)的。邏輯模型是概念模型的數(shù)據(jù)化,用于按照計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對數(shù)據(jù)建模,是現(xiàn)實(shí)世界的計(jì)算機(jī)模擬,與使用的數(shù)據(jù)管理系統(tǒng)的種類有關(guān),主要用于數(shù)據(jù)庫管理系統(tǒng)的實(shí)現(xiàn)。任務(wù)1理解數(shù)據(jù)模型物理模型是對數(shù)據(jù)最底層的抽象,它用于描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,或在磁盤或磁帶上的存儲方式和存取方法。物理模型的具體實(shí)現(xiàn)是數(shù)據(jù)庫管理系統(tǒng)的任務(wù)。數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。各種機(jī)器上實(shí)現(xiàn)的數(shù)據(jù)庫管理系統(tǒng)軟件都是基于某種數(shù)據(jù)模型或者支持某種數(shù)據(jù)模型的。

任務(wù)1理解數(shù)據(jù)模型由于計(jì)算機(jī)不可能直接處理現(xiàn)實(shí)世界中的具體事物,更不能處理事物與事物之間的聯(lián)系,因此必須把現(xiàn)實(shí)世界的具體事物轉(zhuǎn)換成計(jì)算機(jī)能夠處理的對象?,F(xiàn)實(shí)世界轉(zhuǎn)化為計(jì)算機(jī)世界的過程如圖2-1所示。任務(wù)1理解數(shù)據(jù)模型2.1.2概念模型1.信息世界的基本概念概念模型用于信息世界的建模,反映現(xiàn)實(shí)世界中的信息及其關(guān)系,能滿足用戶對數(shù)據(jù)的處理要求,是現(xiàn)實(shí)世界到信息世界的第一層抽象。概念模型也是用戶和數(shù)據(jù)庫設(shè)計(jì)人員之間進(jìn)行交流的工具,數(shù)據(jù)庫設(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è)屬性來刻畫,如學(xué)生實(shí)體可以用學(xué)號、姓名、專業(yè)、性別、出生時(shí)間等屬性來描述。屬性的具體取值稱為屬性值。如(001104,嚴(yán)蔚敏,軟件技術(shù),男,2000-08-26,50)這些屬性組合起來描述了一個(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í)體的一個(gè)屬性或多個(gè)屬性的組合稱為關(guān)鍵字。如學(xué)號是學(xué)生實(shí)體的關(guān)鍵字,而在學(xué)生選課關(guān)系中,學(xué)號和課程號組合在一起才能唯一標(biāo)識某個(gè)學(xué)生某門課程的考試成績。任務(wù)1理解數(shù)據(jù)模型(5)實(shí)體型(EntityType)用實(shí)體名及其屬性名集合來抽象和描述同類的實(shí)體,稱為實(shí)體型,通常我們所說的實(shí)體就是指實(shí)體型。如學(xué)生(學(xué)號,姓名,專業(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類①一對一聯(lián)系(1∶1)②一對多聯(lián)系(1∶n)③多對多聯(lián)系(m∶n)任務(wù)1理解數(shù)據(jù)模型2.概念模型的表示方法在概念模型的眾多表示方法中,最常用的一種是實(shí)體-聯(lián)系(E-R)方法,也稱E-R模型。該方法用E-R圖來描述現(xiàn)實(shí)世界的概念模型,可以直觀地表示現(xiàn)實(shí)世界中各類對象的特征和對象之間的聯(lián)系。下面對實(shí)體(型)、屬性、聯(lián)系進(jìn)行簡要介紹。

實(shí)體:用矩形表示,矩形內(nèi)寫明實(shí)體名。

屬性:用橢圓形表示,橢圓形內(nèi)注明屬性名稱,并用無向邊將其與相應(yīng)的實(shí)體連接起來。當(dāng)屬性較多時(shí),可以將實(shí)體與其相應(yīng)的屬性單獨(dú)用列表表示。聯(lián)系:用菱形表示,菱形內(nèi)寫明聯(lián)系名,并用無向邊將其與有關(guān)實(shí)體連接起來,同時(shí)在無向邊上標(biāo)注聯(lián)系的類型(1∶1、1∶n或m∶n)。任務(wù)1理解數(shù)據(jù)模型【例題2.1】在學(xué)生選課的概念模型中,學(xué)生實(shí)體具有學(xué)號、姓名、專業(yè)名、性別、出生時(shí)間、總學(xué)分、備注等屬性,用E-R圖表示如圖2-3所示任務(wù)1理解數(shù)據(jù)模型【例題2.2】用E-R圖表示學(xué)生選課的概念模型。每個(gè)實(shí)體的屬性如下。學(xué)生的屬性:學(xué)號、姓名、專業(yè)名、性別、出生時(shí)間、總學(xué)分、備注。課程的屬性:課程號、課程名、開課學(xué)期、學(xué)時(shí)、學(xué)分。這些實(shí)體的聯(lián)系為一個(gè)學(xué)生可以選修若干門課程,每門課程由多名學(xué)生選修。用E-R圖表示如圖2-4所示任務(wù)1理解數(shù)據(jù)模型2.1.3邏輯模型數(shù)據(jù)庫領(lǐng)域中主要的邏輯模型包括層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο髷?shù)據(jù)模型、對象關(guān)系數(shù)據(jù)模型、半結(jié)構(gòu)化數(shù)據(jù)模型等。表2-1對4種常用的邏輯模型做了簡單的比較,本小節(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)系。在用戶看來,關(guān)系就是二維表,關(guān)系模型由一組二維表組成。下面以學(xué)生情況表為例介紹一些關(guān)系模型中常用的術(shù)語任務(wù)1理解數(shù)據(jù)模型①關(guān)系(Relation):一個(gè)關(guān)系通常對應(yīng)一張二維表,由行和列組成,表名即關(guān)系名。實(shí)體及實(shí)體間的聯(lián)系都用二維表來表示,如表2-2所示的學(xué)生情況表。在數(shù)據(jù)庫的物理組織中,二維表是以文件形式存儲的。②元組(Tuple):二維表中的一行即為一個(gè)元組(也稱記錄),是眾多具有相同屬性的對象中的一個(gè),如學(xué)生關(guān)系中的(001104,嚴(yán)蔚敏,軟件技術(shù),男,2000-08-26,50)就是一個(gè)元組,記錄了一名學(xué)生的基本信息。③屬性(Attribute):二維表中的一列即為一個(gè)屬性,代表相應(yīng)數(shù)據(jù)表中存儲對象的共有屬性,屬性的名稱為屬性名,屬性的值稱為屬性值。表2-2中的學(xué)號、姓名等均為屬性,001104為學(xué)號的屬性值。④域(Domain):屬性的取值范圍稱為屬性的域。屬性的域是由屬性的性質(zhì)及要表達(dá)的意義確定的,如學(xué)生性別的域是(男,女)。任務(wù)1理解數(shù)據(jù)模型⑤候選鍵(CandidateKey):若關(guān)系中的某一屬性或?qū)傩越M的值能唯一地標(biāo)識一個(gè)元組,則稱該屬性或?qū)傩越M為候選鍵;候選鍵可以有多個(gè)。⑥主鍵(PrimaryKey,PK):關(guān)系中的某個(gè)屬性或?qū)傩越M能唯一確定一個(gè)元組,即確定一個(gè)實(shí)體,則該屬性或?qū)傩越M為主鍵。一個(gè)關(guān)系中的主鍵只能有一個(gè),主鍵也被稱為關(guān)鍵字。如學(xué)生表中的學(xué)號可以唯一確定一個(gè)學(xué)生,因此學(xué)號是學(xué)生表的關(guān)鍵字。而在成績表中,學(xué)號和課程號組合起來才能唯一地確定一個(gè)元組,所以,學(xué)號和課程號的組合稱為成績表的關(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):對關(guān)系的描述稱為關(guān)系模式,它描述的是二維表的結(jié)構(gòu)。一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n)例如,學(xué)生、課程、選課之間的聯(lián)系在關(guān)系模型中可以表示為如下形式。學(xué)生(學(xué)號,姓名,專業(yè)名,性別,出生時(shí)間,總學(xué)分,備注)主鍵:學(xué)號課程(課程號,課程名,開課學(xué)期,學(xué)時(shí),學(xué)分)主鍵:課程號成績(學(xué)號,課程號,成績)主鍵:學(xué)號、課程號外鍵:學(xué)號、課程號⑨元數(shù)(Arity):關(guān)系模式中屬性的數(shù)目是關(guān)系的元數(shù)。⑩分量(Component):元組中的一個(gè)屬性值稱為元組的分量。任務(wù)1理解數(shù)據(jù)模型關(guān)系模型給出了關(guān)系操作的能力,關(guān)系操作的對象和結(jié)果都是集合,主要包括以下兩方面。①查詢操作:選擇(SELECT)、投影(PROJECT)、連接(JOIN)、除(DIVIDE)、并(UNION)、交(INTERSECTION)和差(DIFFERENCE)。②更新操作:插入(INSERT)、刪除(DELETE)和修改(UPDATE)。進(jìn)行插入、刪除、修改操作時(shí)要滿足關(guān)系模型的完整性約束條件。關(guān)系操作都是由關(guān)系操作語言實(shí)現(xiàn)的。關(guān)系模型使用的查詢語言是關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)用關(guān)系的運(yùn)算來表達(dá)查詢要求,關(guān)系演算用謂詞來表達(dá)查詢要求。SQL是介于關(guān)系代數(shù)和關(guān)系演算之間的語言。關(guān)系代數(shù)和關(guān)系演算也是關(guān)系數(shù)據(jù)庫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è)元組都是可識別的、唯一的。關(guān)系模型中的每個(gè)元組都對應(yīng)客觀存在的一個(gè)實(shí)例,若關(guān)系中的某個(gè)元組主鍵沒有值,則此元組在關(guān)系中一定沒有任何意義。如在學(xué)生關(guān)系中,主鍵學(xué)號能夠唯一地確定一個(gè)學(xué)生,如果某個(gè)學(xué)生的學(xué)號為空,則此學(xué)生將無法管理。任務(wù)1理解數(shù)據(jù)模型(2)參照完整性參照完整性也稱引用完整性,是指兩個(gè)表的主鍵和外鍵的數(shù)據(jù)對應(yīng)一致。它可確保有主鍵的表中有對應(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)系模型中的參照完整性就是通過定義外鍵來實(shí)現(xiàn)的。例如,學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系可以用如下3個(gè)關(guān)系表示。學(xué)生(學(xué)號,姓名,專業(yè)名,性別,出生時(shí)間,總學(xué)分,備注)課程(課程號,課程名,開課學(xué)期,學(xué)時(shí),學(xué)分)選修(學(xué)號,課程號,成績)任務(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ù)的,但對外鍵并無要求。外鍵可以有重復(fù)值,也可以為空任務(wù)1理解數(shù)據(jù)模型(3)用戶定義的完整性用戶定義的完整性也稱域完整性或語義完整性。它是指不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)應(yīng)用環(huán)境的不同,設(shè)定的一些特殊約束條件。用戶定義完整性常用于限定屬性的類型及取值范圍,這樣可以防止屬性值與數(shù)據(jù)庫語義矛盾。例如學(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ù)庫系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)的邏輯結(jié)構(gòu)可以分為用戶級、邏輯級和物理級3個(gè)層次,反映觀察數(shù)據(jù)庫的3種角度。從數(shù)據(jù)庫最終用戶的角度看,數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)分為單用戶結(jié)構(gòu)、主從式結(jié)構(gòu)、分布式結(jié)構(gòu)、客戶端/服務(wù)器結(jié)構(gòu)、瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫服務(wù)器多層結(jié)構(gòu)等,這是數(shù)據(jù)庫系統(tǒng)外部的體系結(jié)構(gòu)。從數(shù)據(jù)庫應(yīng)用開發(fā)人員的角度看,雖然實(shí)際的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品種類很多,支持不同的數(shù)據(jù)模型,使用不同的數(shù)據(jù)庫語言,建立在不同的操作系統(tǒng)之上,數(shù)據(jù)的存儲結(jié)構(gòu)也各不相同,但它們在體系結(jié)構(gòu)上通常都具有相同的外模式、模式和內(nèi)模式三級模式結(jié)構(gòu)的特征,各級模式之間通過映射關(guān)系進(jìn)行聯(lián)系和轉(zhuǎn)換,如圖2-5所示。這是數(shù)據(jù)庫系統(tǒng)內(nèi)部的體系結(jié)構(gòu)。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)2.2.1了解數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)1.模式在數(shù)據(jù)模型中有“型”(Type)和“值”(Value)的概念。型是指某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說明,值是型的一個(gè)具體值。模式(Schema)也稱邏輯模式或概念模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及型的描述,不涉及具體的值。模式的一個(gè)具體值稱為模式的一個(gè)實(shí)例(Instance)。同一個(gè)模式可以有很多實(shí)例。例如,學(xué)生成績管理數(shù)據(jù)庫模式中,包含學(xué)生記錄、課程記錄和成績記錄,現(xiàn)在可以添加一個(gè)計(jì)算機(jī)學(xué)院的成績管理數(shù)據(jù)庫實(shí)例,也可以添加一個(gè)機(jī)電學(xué)院的成績管理數(shù)據(jù)庫實(shí)例。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)2.外模式外模式也稱子模式或用戶模式,它是數(shù)據(jù)庫用戶(包括應(yīng)用程序開發(fā)人員和用戶)能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用程序有關(guān)的數(shù)據(jù)的邏輯表示,屬于視圖層抽象。外模式通常是模式的子集。一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式。由于它是各個(gè)用戶的數(shù)據(jù)視圖,如果用戶在應(yīng)用需求、提取數(shù)據(jù)的方式、對數(shù)據(jù)保密的要求等方面存在差異,則其外模式描述會有所不同。即使是模式中的同一數(shù)據(jù),它在外模式中的結(jié)構(gòu)、類型、長度、保密級別等都可以不同。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)3.內(nèi)模式內(nèi)模式也稱存儲模式,是數(shù)據(jù)在數(shù)據(jù)庫中的內(nèi)部表示,是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,屬于物理層抽象,例如數(shù)據(jù)是否壓縮存儲、是否加密,數(shù)據(jù)的存儲記錄結(jié)構(gòu)有何規(guī)定等。內(nèi)模式是數(shù)據(jù)庫管理系統(tǒng)管理的最低層。數(shù)據(jù)庫管理系統(tǒng)提供內(nèi)模式DDL來嚴(yán)格地定義內(nèi)模式。一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)2.2.2了解數(shù)據(jù)庫系統(tǒng)的兩級映像數(shù)據(jù)庫系統(tǒng)的三級模式是對數(shù)據(jù)進(jìn)行抽象的3個(gè)級別,為了能夠在內(nèi)部實(shí)現(xiàn)這3個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫管理系統(tǒng)在這3級模式之間提供了兩級映像:外模式/模式映像、模式/內(nèi)模式映像。這兩級映像保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)具有較強(qiáng)的邏輯獨(dú)立性和物理獨(dú)立性。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)(1)外模式/模式映像模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu),外模式描述的是數(shù)據(jù)的局部邏輯結(jié)構(gòu)。同一個(gè)模式可以有多個(gè)外模式。對于每一個(gè)外模式,數(shù)據(jù)庫系統(tǒng)都提供了一個(gè)外模式/模式映像,它定義了外模式與模式之間的對應(yīng)關(guān)系。映像定義通常包含在各自外模式的描述中。當(dāng)模式改變(如增加新的關(guān)系或?qū)傩浴⒏淖儗傩缘臄?shù)據(jù)類型等)時(shí),可由數(shù)據(jù)庫管理員對各個(gè)外模式/模式映像做相應(yīng)的修改,從而保持外模式不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,因此應(yīng)用程序不必修改,保證了數(shù)據(jù)與應(yīng)用程序的邏輯獨(dú)立性,簡稱數(shù)據(jù)的邏輯獨(dú)立性。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)(2)模式/內(nèi)模式映像數(shù)據(jù)庫中只有一個(gè)模式,也只有一個(gè)內(nèi)模式,所以模式/內(nèi)模式映像是唯一的,它用于定義數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。當(dāng)數(shù)據(jù)庫的存儲結(jié)構(gòu)改變(如選用了另一種存儲結(jié)構(gòu)),為了保持模式不變,也就是應(yīng)用程序保持不變,可由數(shù)據(jù)庫管理員對模式/內(nèi)模式映像做相應(yīng)改變。這樣,就保證了數(shù)據(jù)與應(yīng)用程序的物理獨(dú)立性,簡稱數(shù)據(jù)的物理獨(dú)立性。在數(shù)據(jù)庫的三級模式結(jié)構(gòu)中,數(shù)據(jù)庫模式即全局邏輯結(jié)構(gòu),是數(shù)據(jù)庫的中心與關(guān)鍵,它獨(dú)立于數(shù)據(jù)庫的其他模式。因此,設(shè)計(jì)數(shù)據(jù)庫模式結(jié)構(gòu)時(shí)應(yīng)先確定數(shù)據(jù)庫的邏輯模式任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)庫的內(nèi)模式依賴于它的全局邏輯結(jié)構(gòu),但獨(dú)立于數(shù)據(jù)庫的用戶視圖,即外模式,也獨(dú)立于具體的存儲設(shè)備。它將全局邏輯結(jié)構(gòu)中所定義的數(shù)據(jù)結(jié)構(gòu)及其聯(lián)系按照一定的物理存儲策略進(jìn)行組織,以達(dá)到較好的時(shí)間與空間效率。數(shù)據(jù)庫的外模式面向具體的應(yīng)用程序,它定義在邏輯模式之上,但獨(dú)立于存儲模式和存儲設(shè)備。當(dāng)用戶需求發(fā)生較大變化,相應(yīng)外模式不能滿足其視圖要求時(shí),外模式就要做相應(yīng)的改動,所以設(shè)計(jì)外模式時(shí)應(yīng)充分考慮應(yīng)用程序的擴(kuò)充性。任務(wù)2了解數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)特定的應(yīng)用程序是在外模式描述的數(shù)據(jù)結(jié)構(gòu)上開發(fā)的,它依賴于特定的外模式,獨(dú)立于數(shù)據(jù)庫的模式和存儲結(jié)構(gòu)。不同的應(yīng)用程序有時(shí)可以共用同一個(gè)外模式。數(shù)據(jù)庫的兩級映像保證了數(shù)據(jù)庫外模式的穩(wěn)定性,從而從底層保證了應(yīng)用程序的穩(wěn)定性,除非應(yīng)用需求本身發(fā)生變化,否則應(yīng)用程序一般不需要修改。數(shù)據(jù)庫的三級模式和兩級映像保證了數(shù)據(jù)與應(yīng)用程序之間的獨(dú)立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去。另外,由于數(shù)據(jù)的存取由數(shù)據(jù)庫管理系統(tǒng)管理,用戶不必考慮存取路徑等細(xì)節(jié),從而簡化了應(yīng)用程序的開發(fā),大大減少了應(yīng)用程序的維護(hù)和修改成本。任務(wù)3了解關(guān)系數(shù)據(jù)庫2.3.1關(guān)系代數(shù)在計(jì)算機(jī)上存儲數(shù)據(jù)的目的是使用數(shù)據(jù),選擇好數(shù)據(jù)的組織形式后,就要確定如何使用這些數(shù)據(jù)。關(guān)系代數(shù)是一種抽象的查詢語言,它用關(guān)系的運(yùn)算來表達(dá)查詢。關(guān)系代數(shù)的運(yùn)算對象是關(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ù)庫②專門的關(guān)系運(yùn)算包括選擇、投影、連接和除等,它不僅涉及行而且涉及列,常用比較運(yùn)算符和邏輯運(yùn)算符來輔助專門的關(guān)系運(yùn)算符進(jìn)行操作。關(guān)系代數(shù)中常用的運(yùn)算及運(yùn)算符如下。集合運(yùn)算:∪(并)、―(差)、∩(交)、×(笛卡兒積)。關(guān)系運(yùn)算:∏(投影)、σ(選擇)、(連接)、÷(除)。比較運(yùn)算:>(大于)、≥(大于等于)、<(小于)、≤(小于等于)、≠(不等于)。邏輯運(yùn)算:∨(或)、∧(與)、﹃(非)。下面僅對部分運(yùn)算做簡要介紹。任務(wù)3了解關(guān)系數(shù)據(jù)庫1.投影運(yùn)算投影運(yùn)算是對關(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通過投影運(yùn)算得到的。記作:

S=∏姓名,專業(yè)名,總學(xué)分(R)任務(wù)3了解關(guān)系數(shù)據(jù)庫2.選擇運(yùn)算選擇運(yùn)算是對關(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ù)庫3.連接運(yùn)算連接運(yùn)算是按照給定的條件,把兩個(gè)關(guān)系中的一切可能的組合方式拼接起來,形成一個(gè)新的關(guān)系,就是對兩個(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ù)庫【例題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ù)庫則關(guān)系R與S等值連接的結(jié)果如表2-7所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(2)自然連接。自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的屬性組的值必須相同,并且在結(jié)果中把重復(fù)的屬性去掉。自然連接是最常用的一種連接運(yùn)算,在關(guān)系運(yùn)算中起著重要作用。任務(wù)3了解關(guān)系數(shù)據(jù)庫【例題2.6】例題2.5中關(guān)系R和S的自然連接結(jié)果如表2-8所示。由此可見,查詢時(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ù)庫2.3.2關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL1.SQL的主要特點(diǎn)SQL具有數(shù)據(jù)查詢(DataQuery)、數(shù)據(jù)操縱(DataManipulation)、數(shù)據(jù)定義(DataDefinition)和數(shù)據(jù)控制(DataControl)功能,其主要特點(diǎn)如下。①綜合統(tǒng)一。②SQL是非過程化的語言。③SQL采用面向集合的操作方式。④以同一種語法結(jié)構(gòu)提供多種使用方式。SQL既是獨(dú)立的語言,又是嵌入式語言。⑤語言簡潔,易學(xué)易用。此外,SQL支持?jǐn)?shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu),模式對應(yīng)基本表,外模式對應(yīng)視圖或部分基本表,內(nèi)模式對應(yīng)存儲文件。任務(wù)3了解關(guān)系數(shù)據(jù)庫2.SQL的組成

SQL由以下幾部分組成。(1)DDLDDL用于執(zhí)行數(shù)據(jù)庫的任務(wù),對數(shù)據(jù)庫以及數(shù)據(jù)庫中的各種對象進(jìn)行創(chuàng)建、刪除、修等操作。DDL的主要語句及功能如表2-9所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(2)DMLDML用于操縱數(shù)據(jù)庫中的各種對象,檢索和修改數(shù)據(jù)。DML的主要語句及功能如表2-10所示。任務(wù)3了解關(guān)系數(shù)據(jù)庫(3)DCLDCL用于安全管理,確定哪些用戶可以查看或修改數(shù)據(jù)庫中的數(shù)據(jù),DCL的主要語句及功能如表2-11所示。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化2.4.1第一范式(1NF)在關(guān)系數(shù)據(jù)庫中,對關(guān)系模式的基本要求是滿足第一范式,這樣的關(guān)系模式就是合法的、允許的。第一范式是指數(shù)據(jù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。由此可見,第一范式主要針對列進(jìn)行規(guī)范化。從用戶角度看,關(guān)系的邏輯結(jié)構(gòu)是一個(gè)二維表,每個(gè)表代表一類信息(實(shí)體)的集合,但事實(shí)上不是所有的二維表都是關(guān)系。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化例如,將學(xué)號、姓名、聯(lián)系電話組成一張表,但一個(gè)學(xué)生可能有一個(gè)移動電話和一個(gè)家庭電話,所以這張表就不是關(guān)系。將其規(guī)范成第一范式有以下3種方法。①重復(fù)存儲學(xué)號和姓名,關(guān)鍵字是聯(lián)系電話。②學(xué)號為關(guān)鍵字,聯(lián)系電話分為移動電話和家庭電話。③學(xué)號為關(guān)鍵字,但每條記錄只能有一個(gè)聯(lián)系電話,要么是移動電話,要么是家庭電話。以上3種方法中,第一種方法最不可取,按實(shí)際情況選取后兩種方法。這種將非關(guān)系的二維表轉(zhuǎn)化為關(guān)系,就是關(guān)系規(guī)范化的過程。通過規(guī)范化可以使從數(shù)據(jù)庫中得到的結(jié)果更加準(zhǔn)確。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化2.4.2第二范式(2NF)第二范式是在第一范式的基礎(chǔ)上建立起來的,即滿足第二范式必須先滿足第一范式。有些滿足第一范式的關(guān)系模式存在插入異常、刪除異常、修改復(fù)雜、數(shù)據(jù)冗余等問題。例如,在分析學(xué)生基本信息時(shí),得到表2-12所示的表。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化表2-12用于保存學(xué)生基本信息,其中包括學(xué)生學(xué)號、姓名及課程成績等信息,如果要刪除其中的一個(gè)學(xué)生,就必須同時(shí)刪除一個(gè)相應(yīng)的成績,規(guī)范化就是要解決這個(gè)問題??梢詫⑦@個(gè)表轉(zhuǎn)化為兩個(gè)表,一個(gè)用于存儲每個(gè)學(xué)生的基本信息,另一個(gè)用于存儲每個(gè)學(xué)生的成績信息,這樣對其中一個(gè)表進(jìn)行添加或刪除操作都不會影響另一個(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è)列,以存儲各個(gè)實(shí)例的唯一標(biāo)識。例如表2-12學(xué)生基本信息表中添加了學(xué)號列,因?yàn)槊總€(gè)學(xué)生的學(xué)號是唯一的,因此每個(gè)學(xué)生可以被唯一區(qū)分。這個(gè)唯一列被稱為主鍵。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化第二范式要求實(shí)體的屬性完全依賴主鍵。完全依賴是指不能存在僅依賴主鍵一部分的屬性。如果存在,那么這個(gè)屬性和主鍵這一部分應(yīng)該被分離出來形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間具有一對多關(guān)系。換言之,第二范式是指數(shù)據(jù)表中不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的部分函數(shù)依賴(部分函數(shù)依賴指的是存在復(fù)合關(guān)鍵字中的某些字段決定非關(guān)鍵字段),即所有非關(guān)鍵字段都完全依賴于任意一組候選關(guān)鍵字。數(shù)據(jù)庫的設(shè)計(jì)范式是數(shù)據(jù)庫設(shè)計(jì)需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫是簡潔的、結(jié)構(gòu)明晰的,同時(shí),不會發(fā)生插入、刪除和更新操作異常。反之,數(shù)據(jù)庫會比較混亂,可能會有大量不需要的冗余信息,給數(shù)據(jù)庫應(yīng)用程序開發(fā)人員制造麻煩。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化【例題2.7】在選課關(guān)系表SelectCourse(學(xué)號,姓名,出生時(shí)間,課程名稱,成績,學(xué)分)中,關(guān)鍵字為復(fù)合關(guān)鍵字(學(xué)號,課程名稱),因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號,課程名稱)→(姓名,出生時(shí)間,成績,學(xué)分)。這個(gè)數(shù)據(jù)表不滿足第二范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:(課程名稱)→(學(xué)分);(學(xué)號)→(姓名,出生時(shí)間)。即存在復(fù)合關(guān)鍵字中的字段決定非關(guān)鍵字的情況。

由于不符合第二范式,這個(gè)選課關(guā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é)分值都要更新,否則會出現(xiàn)同一門課程學(xué)分不同的情況。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化(3)插入異常。假設(shè)要開設(shè)一門新的課程,暫時(shí)還沒有人選修。這時(shí),由于還沒有“學(xué)號”關(guān)鍵字,課程名稱和學(xué)分也無法記錄入數(shù)據(jù)庫。(4)刪除異常。假設(shè)一批學(xué)生已經(jīng)完成課程的選修,這些選修記錄就應(yīng)該從數(shù)據(jù)表中刪除。但是,與此同時(shí),課程名稱和學(xué)分信息也被刪除了。很顯然,這也會導(dǎo)致插入異常。假設(shè)把選課關(guān)系表SelectCourse改為如下3個(gè)表。學(xué)生:xs(學(xué)號,姓名,出生時(shí)間)。課程:kc(課程名稱,學(xué)分)。成績:cj(學(xué)號,課程名稱,成績)。這樣的數(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è)班級信息表,其中每個(gè)班級都有班級編號、班級名、班級簡介等信息。那么在學(xué)生信息表中列出班級編號后就不能再將班級名、班級簡介等與班級有關(guān)的信息加入學(xué)生信息表中。如果不存在班級信息表,則根據(jù)第三范式創(chuàng)建它,否則就會有大量的數(shù)據(jù)冗余。換言之,第三范式是指在第二范式的基礎(chǔ)上,數(shù)據(jù)表中不存在非關(guān)鍵字段對任一候選關(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é)號,姓名,出生時(shí)間,所在學(xué)院,學(xué)院地點(diǎn),學(xué)院電話),關(guān)鍵字為單一關(guān)鍵字“學(xué)號”,因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號)→(姓名,出生時(shí)間,所在學(xué)院,學(xué)院地點(diǎn),學(xué)院電話)。這個(gè)數(shù)據(jù)庫是符合第二范式的,但是不符合第三范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:(學(xué)號)→(所在學(xué)院)→(學(xué)院地點(diǎn),學(xué)院電話)。即存在非關(guān)鍵字段學(xué)院地點(diǎn)、學(xué)院電話對關(guān)鍵字段學(xué)號的傳遞函數(shù)依賴。顯然它也存在數(shù)據(jù)冗余、更新異常、插入異常和刪除異常的問題。如果把學(xué)生關(guān)系表分為如下兩個(gè)表。學(xué)生:(學(xué)號,姓名,出生時(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ù)表中如果不存在任何字段對任一候選關(guān)鍵字段的傳遞函數(shù)依賴。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化【例題2.8】假設(shè)學(xué)生基本信息管理關(guān)系表為StudentManage(學(xué)生ID,班級ID,班主任ID,學(xué)生姓名,班級名),且存在一名學(xué)生在一個(gè)班級里,一個(gè)班里有一名班主任的關(guān)系。這個(gè)數(shù)據(jù)表中存在如下決定關(guān)系:(學(xué)生ID,班級ID)→(學(xué)生姓名,班級名,班主任ID)(班主任ID,學(xué)生ID)→(班級名,班級ID)。所以,(學(xué)生ID,班級ID)和(班主任ID,學(xué)生ID)都是StudentManage表的候選關(guān)鍵字,表中非候選關(guān)鍵字不存在傳遞函數(shù)依賴,它是符合第三范式的。但是,由于存在如下決定關(guān)系:(學(xué)生ID)→(班級ID,班主任ID);(班主任ID,班級ID)→(學(xué)生ID)。即存在關(guān)鍵字段決定關(guān)鍵字段的情況,所以它不符合BC范式。它會出現(xiàn)如下異常情況。(1)刪除異常。當(dāng)班主任信息被清除后,所有“學(xué)生ID”和“學(xué)生姓名”信息被刪除的同時(shí),“班級ID”和“班級名”信息也會被刪除。任務(wù)4實(shí)現(xiàn)關(guān)系的規(guī)范化(2)插入異常。當(dāng)班級里沒有分配班主任時(shí),無法給班級添加學(xué)生信息。(3)更新異常。如果班主任更換了,則表中所有行的班主任ID都要修改。假設(shè)把學(xué)生基本信息管理關(guān)系表分解為兩個(gè)關(guān)系表。學(xué)生信息管理:StudentManage(學(xué)生ID,學(xué)生姓名,班級ID)。班級信息管理:Class(班級ID,班級名,班主任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),則稱它滿足第一范式。消除第一范式中非主屬性對碼的部分函數(shù)依賴,則得到第二范式。消除第二范式中非主屬性對碼的傳遞函數(shù)依賴,則得到第三范式。消除第三范式中主屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴,則得到BC范式。消除BC范式中非平凡且非函數(shù)依賴的多值依賴,則得到第四范式。任務(wù)5了解數(shù)據(jù)庫設(shè)計(jì)的過程任務(wù)2-5了解數(shù)據(jù)庫設(shè)計(jì)的過程

在實(shí)際項(xiàng)目開發(fā)中,如果系統(tǒng)的數(shù)據(jù)存儲量較大,涉及的表較多,表與表之間的關(guān)系比較復(fù)雜,就必須先規(guī)范地設(shè)計(jì)數(shù)據(jù)庫,然后創(chuàng)建數(shù)據(jù)庫和表。數(shù)據(jù)庫設(shè)計(jì)是指對于一個(gè)給定的應(yīng)用環(huán)境,設(shè)計(jì)優(yōu)化的數(shù)據(jù)庫的邏輯模式和物理結(jié)構(gòu),并據(jù)此創(chuàng)建數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲和管理數(shù)據(jù),滿足用戶的應(yīng)用需求,包括信息管理需求和數(shù)據(jù)操作需求。數(shù)據(jù)庫設(shè)計(jì)的目標(biāo)是為用戶提供一個(gè)高效、安全的數(shù)據(jù)庫,滿足用戶的使用需求。良好的數(shù)據(jù)庫設(shè)計(jì)表現(xiàn)為訪問效率高;減少數(shù)據(jù)冗余,節(jié)省存儲空間,便于進(jìn)一步擴(kuò)展;可以使應(yīng)用程序的開發(fā)變得更容易。數(shù)據(jù)庫設(shè)計(jì)一般分為以下6個(gè)階段,其中,需求分析和概念結(jié)構(gòu)設(shè)計(jì)可以獨(dú)立于任何數(shù)據(jù)庫管理系統(tǒng)進(jìn)行,邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)與選用的數(shù)據(jù)庫管理系統(tǒng)密切相關(guān)。要創(chuàng)建一個(gè)完善的數(shù)據(jù)庫是不可能一蹴而就的,往往要反復(fù)進(jìn)行這6個(gè)階段。任務(wù)5了解數(shù)據(jù)庫設(shè)計(jì)的過程1.?dāng)?shù)據(jù)庫的需求分析需求分析簡單地說就是分析用戶的要求。需求分析是數(shù)據(jù)庫設(shè)計(jì)的第一步,是比較困難和耗費(fèi)時(shí)間的一步,也是整個(gè)設(shè)計(jì)過程的基礎(chǔ)。需求分析階段的主要任務(wù)是通過與用戶溝通,充分調(diào)查研究,搜集基礎(chǔ)數(shù)據(jù),逐步明確用戶對系統(tǒng)的需求,包括數(shù)據(jù)需求和業(yè)務(wù)處理需求,確定系統(tǒng)的功能,最終得到系統(tǒng)需求分析說明書。需求分析做得是否充分和準(zhǔn)確,直接決定了創(chuàng)建數(shù)據(jù)庫的速度與質(zhì)量。需求分析做得不好,會導(dǎo)致整個(gè)數(shù)據(jù)庫設(shè)計(jì)返工重做。任務(wù)5了解數(shù)據(jù)庫設(shè)計(jì)的過程2.?dāng)?shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)將需求分析得到的用戶需求抽象為概念模型的過程就是概念結(jié)構(gòu)設(shè)計(jì)。它是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵。概念結(jié)構(gòu)設(shè)計(jì)的任務(wù)主要包括兩個(gè)方面:概念數(shù)據(jù)庫模式設(shè)計(jì)和事

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論