數(shù)據(jù)庫建模實(shí)踐指南_第1頁
數(shù)據(jù)庫建模實(shí)踐指南_第2頁
數(shù)據(jù)庫建模實(shí)踐指南_第3頁
數(shù)據(jù)庫建模實(shí)踐指南_第4頁
數(shù)據(jù)庫建模實(shí)踐指南_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫建模實(shí)踐指南1第1頁,課件共33頁,創(chuàng)作于2023年2月本章導(dǎo)讀數(shù)據(jù)庫設(shè)計(jì)既是信息系統(tǒng)建設(shè)必備的基礎(chǔ),又是軟件工程實(shí)踐的主要內(nèi)容,所以計(jì)算機(jī)及軟件專業(yè)方向的大學(xué)生、研究生和軟件工程師,都要特別重視數(shù)據(jù)庫設(shè)計(jì)。數(shù)據(jù)庫設(shè)計(jì)雖然是一個(gè)理論問題,但更主要的是一個(gè)實(shí)踐問題。本章的特點(diǎn)是,將數(shù)據(jù)庫設(shè)計(jì)的理論與實(shí)踐緊密相結(jié)合,并通過案例,說明數(shù)據(jù)庫設(shè)計(jì)中需要解決的各種問題。2第2頁,課件共33頁,創(chuàng)作于2023年2月本章對讀者的要求

要求具體內(nèi)容了解1)為什么要建立規(guī)范化理論2)第一范式、第二范式、第三范式3)數(shù)據(jù)庫規(guī)范化設(shè)計(jì)的優(yōu)點(diǎn)4)數(shù)據(jù)庫規(guī)范化設(shè)計(jì)的缺點(diǎn)

理解1)關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的實(shí)質(zhì),就是在數(shù)據(jù)庫設(shè)計(jì)中實(shí)現(xiàn)屬性原子化、主鍵原子化、實(shí)體原子化2)數(shù)據(jù)庫設(shè)計(jì)評價(jià)3)數(shù)據(jù)庫建模經(jīng)典案例分析

掌握1)數(shù)據(jù)庫設(shè)計(jì)方法與技巧2)對象-關(guān)系映射

3第3頁,課件共33頁,創(chuàng)作于2023年2月數(shù)據(jù)庫設(shè)計(jì)規(guī)范化理論及其反思

1972年,E.F.Codd博士提出了規(guī)范化理論來指導(dǎo)數(shù)據(jù)庫的設(shè)計(jì),從而開辟了數(shù)據(jù)庫史上新的一頁。規(guī)范化是通過一系列的測試,來檢查設(shè)計(jì)的關(guān)系是否符合某一范式的要求。后來越來越多的范式被提出。一個(gè)范式是在另一個(gè)范式之上再做進(jìn)一步的約束而形成的。但是,很少有人對這些范式及研究范式的人提出過疑問、進(jìn)行過反思。4第4頁,課件共33頁,創(chuàng)作于2023年2月范式

第一范式(FirstNormalForm,1NF):表的每個(gè)列包含且只包含一個(gè)值。第二范式(SecondNormalForm,2NF):一個(gè)第一范式的表中,每個(gè)非主鍵列都可以從主鍵列得到(完全依賴于主鍵)。第三范式(ThirdNormalForm,3NF):一個(gè)第二范式表中的所有非主鍵列的值,能且只能從主鍵列中得到(不得傳遞)。第三范式已經(jīng)解決了大部分日常使用中會(huì)出現(xiàn)的操作異常,剩下的是那些不常出現(xiàn)的操作問題,要解決這些問題,需要更高的范式進(jìn)行約束。5第5頁,課件共33頁,創(chuàng)作于2023年2月數(shù)據(jù)庫規(guī)范化設(shè)計(jì)的優(yōu)點(diǎn)

規(guī)范化設(shè)計(jì)為數(shù)據(jù)庫提供了許多的好處:

?大大改進(jìn)數(shù)據(jù)庫的整體組織;

?減少了數(shù)據(jù)冗余

?增強(qiáng)了數(shù)據(jù)的一致性;

?增加數(shù)據(jù)庫設(shè)計(jì)的靈活性能減少從用戶、開發(fā)人員到數(shù)據(jù)庫管理員的工作量,使他們能把更多的精力投入到其他工作中。數(shù)據(jù)冗余的有效控制,能簡化數(shù)據(jù)結(jié)構(gòu),節(jié)省數(shù)據(jù)的存儲空間,數(shù)據(jù)的不一致性也大大改善,同時(shí)也減輕應(yīng)用程序?yàn)榱司S護(hù)數(shù)據(jù)的一致性而所花費(fèi)的代價(jià)。在進(jìn)行業(yè)務(wù)擴(kuò)充與改造時(shí),數(shù)據(jù)庫的修改也變得相對容易。6第6頁,課件共33頁,創(chuàng)作于2023年2月數(shù)據(jù)庫規(guī)范化設(shè)計(jì)的缺點(diǎn)

對數(shù)據(jù)庫設(shè)計(jì)進(jìn)行一定程度的規(guī)范化,的確能優(yōu)化數(shù)據(jù)庫的操作,但不必要的規(guī)范化卻會(huì)帶來不必要的麻煩,降低性能,例如多表聯(lián)合查詢的查詢速度要比單表查詢慢,有時(shí)為了處理事務(wù)與數(shù)據(jù)查詢,規(guī)范化的數(shù)據(jù)庫比非規(guī)范化的數(shù)據(jù)庫要占用更多的CPU,內(nèi)存和I/O等等。規(guī)范化的目的,只是為了提升數(shù)據(jù)庫的性能。當(dāng)發(fā)現(xiàn)規(guī)范化后反而造成了不必要的開銷,從而降低了數(shù)據(jù)庫的性能,此時(shí),你應(yīng)該退一步,相應(yīng)降低范式的級別,才會(huì)看到海闊天空的世界。7第7頁,課件共33頁,創(chuàng)作于2023年2月關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的反思

反思1:讓數(shù)據(jù)庫規(guī)范化設(shè)計(jì)的理論,從數(shù)學(xué)家的書本中或課堂上解放出來,變成軟件分析師或設(shè)計(jì)師的強(qiáng)大設(shè)計(jì)武器。解放方法:就是要通俗理解各級范式。所謂通俗理解,就是從工程應(yīng)用上去理解,從數(shù)據(jù)庫設(shè)計(jì)上去理解,而不要從抽象的數(shù)學(xué)上(函數(shù)依賴、多值依賴、連接依賴等)去理解。8第8頁,課件共33頁,創(chuàng)作于2023年2月反思2:數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的目標(biāo)或?qū)嵸|(zhì),就是要在數(shù)據(jù)庫設(shè)計(jì)中實(shí)現(xiàn)“三化”,即“屬性原子化、主鍵原子化、實(shí)體原子化”,或者說是“列原子化、鍵原子化、表原子化”。其中,最難的是“實(shí)體原子化”,第三范式以上的各級范式,實(shí)質(zhì)上都是為了解決“實(shí)體原子化”的問題。關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的反思

9第9頁,課件共33頁,創(chuàng)作于2023年2月反思3:要辯證地看待“三化”思想。在實(shí)際設(shè)計(jì)中,為了提高數(shù)據(jù)庫的運(yùn)行性能,有時(shí)要進(jìn)行一定程度的反規(guī)范化設(shè)計(jì),即適當(dāng)增加冗余,達(dá)到以空間換時(shí)間的目的。這就叫做理論聯(lián)系實(shí)際、實(shí)事求是。理解了這三個(gè)反思,就能將深?yuàn)W的數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論,變成通俗易懂的數(shù)據(jù)庫設(shè)計(jì)實(shí)踐指南,就能成為一個(gè)企業(yè)派的數(shù)據(jù)庫分析與設(shè)計(jì)專家。關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的反思

10第10頁,課件共33頁,創(chuàng)作于2023年2月關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的實(shí)質(zhì)

通過上述討論,得出如下定理。關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)理論的實(shí)質(zhì),就是在數(shù)據(jù)庫設(shè)計(jì)中實(shí)現(xiàn)屬性原子化、主鍵原子化、實(shí)體原子化。由此可見,從軟件工程師的角度來看,關(guān)系數(shù)據(jù)庫規(guī)范化設(shè)計(jì)的理論,歸根到底就是一句話:“屬性原子化、主鍵原子化、實(shí)體原子化,再加上適當(dāng)?shù)臄?shù)據(jù)冗余”,即“三個(gè)原子化加上適當(dāng)?shù)娜哂唷?。只要記住這句話,軟件工程師在關(guān)系數(shù)據(jù)庫設(shè)計(jì)中就不會(huì)迷失方向。11第11頁,課件共33頁,創(chuàng)作于2023年2月數(shù)據(jù)庫設(shè)計(jì)評價(jià)

2.功能評價(jià)

(1)描述事務(wù)要求將每個(gè)事務(wù)的需求描述存檔,檢查模型是否提供了事務(wù)處理所需要的所有信息(實(shí)體,關(guān)系和其他屬性)。例如圖書館信息管理系統(tǒng),現(xiàn)在要求查詢讀者當(dāng)前所借閱圖書的列表,這就要求數(shù)據(jù)庫中存有讀者信息,借閱信息并且這兩個(gè)實(shí)體間要有聯(lián)系才能完成這樣一個(gè)操作。

(2)使用事務(wù)路徑需要設(shè)計(jì)人員對業(yè)務(wù)相當(dāng)?shù)氖煜?,熟悉整個(gè)業(yè)務(wù)的流程,包括一些細(xì)節(jié)的東西,然后在腦海中模擬程序的執(zhí)行路徑,預(yù)測得到在執(zhí)行的過程中需要使用數(shù)據(jù)庫中的哪些元素,這對設(shè)計(jì)人員有較高的要求。12第12頁,課件共33頁,創(chuàng)作于2023年2月2.性能評價(jià)性能評價(jià)主要涉及開銷問題,包括查詢開銷、報(bào)表生成開銷、事務(wù)更新開銷、內(nèi)外存占用的開銷等等,性能評價(jià)與優(yōu)化密不可分,要在性能上得到提升,需要對包括數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫表的設(shè)計(jì)等多方面進(jìn)行優(yōu)化。數(shù)據(jù)庫設(shè)計(jì)評價(jià)

13第13頁,課件共33頁,創(chuàng)作于2023年2月數(shù)據(jù)庫設(shè)計(jì)方法與技巧

數(shù)據(jù)庫是信息系統(tǒng)的核心,數(shù)據(jù)庫設(shè)計(jì)的優(yōu)劣直接影響信息系統(tǒng)的成敗,良好的數(shù)據(jù)庫設(shè)計(jì)不僅能支撐信息系統(tǒng)順利完成業(yè)務(wù)邏輯,同時(shí)也為程序員代碼的編寫提供了便利。數(shù)據(jù)庫設(shè)計(jì)需要進(jìn)行設(shè)計(jì)、評價(jià)、再設(shè)計(jì)、再評價(jià)的過程,其中知識和經(jīng)驗(yàn)的積累是必不可少的。關(guān)于數(shù)據(jù)庫設(shè)計(jì)的方法與技巧,14第14頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧1:客戶是上帝

無論何時(shí)何地,客戶的需求總是放在第一位的,設(shè)計(jì)數(shù)據(jù)庫是為滿足需求而做的。不要憑空想象,不要理所當(dāng)然。一切為了客戶,客戶就是上帝,這些觀念不但在日常的商業(yè)消費(fèi)行為中滲透,也應(yīng)在數(shù)據(jù)庫設(shè)計(jì)中灌輸。

舉例:選擇表(學(xué)號,課外活動(dòng)項(xiàng)目,費(fèi)用)若規(guī)定:1人只參加1項(xiàng)活動(dòng)選擇表(學(xué)號,課外活動(dòng)項(xiàng)目,費(fèi)用)若規(guī)定:1人可以參加多項(xiàng)活動(dòng)

15第15頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧2:主鍵的選取

在一個(gè)關(guān)系數(shù)據(jù)庫中,要求每一個(gè)表都有一個(gè)主鍵,建議使用一個(gè)與實(shí)體無關(guān)的無任何實(shí)際意義的序列號來充當(dāng),這樣的設(shè)計(jì)可以提高數(shù)據(jù)庫的可移植性。怎樣實(shí)現(xiàn)系統(tǒng)自動(dòng)生成序列號呢?下面給出兩種實(shí)現(xiàn)方法:(1)

數(shù)據(jù)庫生成機(jī)制。有的DBMS提供某種序列號生成機(jī)制,如MicrosoftSQLServer提供的一個(gè)Identity的屬性,允許每一個(gè)表內(nèi)可以有一個(gè)Identity列。Oracle提供了Sequence對象,可以提供序列鍵值。但其他一些數(shù)據(jù)庫引擎則沒有相應(yīng)的機(jī)制,例如Sybase就沒有類似的功能。

16第16頁,課件共33頁,創(chuàng)作于2023年2月有時(shí),某些商業(yè)化的系統(tǒng)需要支持幾種主要的數(shù)據(jù)庫。這樣的系統(tǒng)就不能使用MicrosoftSQLServer或Oracle那樣的特有的機(jī)制,而是必須使用某種具有一般性的機(jī)制。除非你能保證在系統(tǒng)的生命周期里始終遠(yuǎn)行在同一種數(shù)據(jù)庫管理系統(tǒng)上。(2)

程序生成機(jī)制可以使用一個(gè)表,在其內(nèi)部設(shè)有兩個(gè)列,一個(gè)列存放鍵名,一個(gè)列存放鍵值。程序使用SQL語句自動(dòng)管理鍵值。

有時(shí)選擇表中若干重要的屬性聯(lián)合起來作為主鍵,甚至把所有屬性作為主鍵。這些設(shè)計(jì)思路都可以提高數(shù)據(jù)庫的可移植性方法與技巧2:主鍵的選取17第17頁,課件共33頁,創(chuàng)作于2023年2月鍵名鍵值學(xué)生信息表序列號1008010157成績表序列號10009715688表中總是存放最后一個(gè)記錄的ID號在請求一個(gè)鍵值時(shí),先更新表中的鍵值作為下一個(gè)可用值,后把舊值提供給程序方法與技巧2:主鍵的選取例:18第18頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧3:發(fā)現(xiàn)西瓜

要善于識別與正確處理兩個(gè)實(shí)體之間的多對多關(guān)系、要學(xué)會(huì)“列變行”的設(shè)計(jì)技巧之外,遵循“西瓜理論與西瓜方法”。所謂“西瓜理論與西瓜方法”,其實(shí)質(zhì)就是要求設(shè)計(jì)人員能夠分清主次,抓住主要矛盾,分清問題的主要方面與次要方面,以主要帶動(dòng)次要,從而設(shè)計(jì)出滿足用戶需求的數(shù)據(jù)庫。那么,怎樣才能發(fā)現(xiàn)主要矛盾與次要矛盾,分清問題的主要方面與次要方面,也即是找到大西瓜呢?在這種尋找中,知識和經(jīng)驗(yàn)是最重要的,但還是有一些方法可以遵循。

19第19頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧4:樹型結(jié)構(gòu)

在開發(fā)系統(tǒng)的時(shí)候,都會(huì)遇到樹型結(jié)構(gòu)這一類的問題,例如一些明顯的主從結(jié)構(gòu)、各大網(wǎng)站上常見的細(xì)分類別、應(yīng)用系統(tǒng)的組織結(jié)構(gòu)、Web系統(tǒng)的菜單樹等。使用數(shù)據(jù)庫對這些信息進(jìn)行存儲,以下給出兩種數(shù)據(jù)庫的設(shè)計(jì)方案。20第20頁,課件共33頁,創(chuàng)作于2023年2月(1)方案1

21第21頁,課件共33頁,創(chuàng)作于2023年2月(2)方案2

22第22頁,課件共33頁,創(chuàng)作于2023年2月(2)方案——舉例ID類別名父ID層級代碼1根類別00000002類別110100003類別1.1201010004類別1.2201020005類別210200006類別2.150201007類別2.25020200只需按用戶的需求修改層級代碼的長度和位數(shù)查詢時(shí)只需對層級代碼值進(jìn)行判斷(大于1則向右移2個(gè)空格)23第23頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧5:權(quán)限管理設(shè)計(jì)

在開發(fā)管理信息系統(tǒng)時(shí),都會(huì)涉及到用戶的權(quán)限管理的問題,雖然目前許多大、中型的數(shù)據(jù)庫管理系統(tǒng)已經(jīng)幫助我們解決了多用戶多權(quán)限的管理問題,但不能依賴數(shù)據(jù)庫管理系統(tǒng)級別的權(quán)限設(shè)置,主要原因有兩個(gè):(1)那些大、中型后臺數(shù)據(jù)庫系統(tǒng)軟件所提供的多用戶及其權(quán)限設(shè)置都是針對數(shù)據(jù)庫的共有屬性,并不一定能完全滿足某些特例的需求。24第24頁,課件共33頁,創(chuàng)作于2023年2月(2)不要過多的依賴后臺數(shù)據(jù)庫系統(tǒng)軟件的某些特殊功能,多種大、中型后臺數(shù)據(jù)庫系統(tǒng)軟件之間并不完全兼容。否則一旦日后需要轉(zhuǎn)換數(shù)據(jù)庫平臺或后臺數(shù)據(jù)庫系統(tǒng)軟件版本升級,之前的架構(gòu)設(shè)計(jì)很可能無法重用。因此,有必要自行設(shè)計(jì)一套能適應(yīng)以后使用的權(quán)限管理的數(shù)據(jù)庫設(shè)計(jì)方案。方法與技巧5:權(quán)限管理設(shè)計(jì)

25第25頁,課件共33頁,創(chuàng)作于2023年2月權(quán)限管理

26第26頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧5:權(quán)限管理設(shè)計(jì)

名稱類型約束說明用戶組功能OIDint無重復(fù)本表PK用戶組OIDintNotNull用戶組表的PK,本表FK功能OIDintNotNull功能表的PK,本表FK名稱類型約束說明功能表OIDint無重復(fù)PK功能名稱Varchar(20)NotNull功能描述Varchar(50)NotNull用戶組功能表功能表27第27頁,課件共33頁,創(chuàng)作于2023年2月用戶組表用戶表名稱類型約束說明用戶組OIDintNotNull本表PK用戶組名Varchar(20)NotNull無重復(fù)用戶組名稱名稱類型約束說明用戶OIDint無重復(fù)本表PK用戶組OIDintNotNull用戶組表的PK,本表FK用戶名Varchar(20)NotNull用戶名用戶密碼Varchar(8)NotNull方法與技巧5:權(quán)限管理設(shè)計(jì)

28第28頁,課件共33頁,創(chuàng)作于2023年2月方法與技巧6:單表模式

在現(xiàn)實(shí)中往往需要填寫一些通用的表格,這類表格是登記在一定特定的范圍之內(nèi)的信息,例如《中華人民共和國機(jī)動(dòng)車行駛證》,不是針對某一種車型設(shè)計(jì)的。行駛證中的“號牌號碼、車輛類型、總質(zhì)量、整備質(zhì)量、外廓尺寸、檢驗(yàn)記錄”是各種類型的車輛的公共屬性,“核定載質(zhì)量、準(zhǔn)牽引總質(zhì)量、駕駛室共乘、貨箱內(nèi)部尺寸、后軸鋼板彈簧片數(shù)”是貨運(yùn)車輛的專有屬性,“核

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論