數(shù)據(jù)庫(kù)建模實(shí)踐指南_第1頁(yè)
數(shù)據(jù)庫(kù)建模實(shí)踐指南_第2頁(yè)
數(shù)據(jù)庫(kù)建模實(shí)踐指南_第3頁(yè)
數(shù)據(jù)庫(kù)建模實(shí)踐指南_第4頁(yè)
數(shù)據(jù)庫(kù)建模實(shí)踐指南_第5頁(yè)
已閱讀5頁(yè),還剩28頁(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)介

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

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

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

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

3第3頁(yè),共33頁(yè),2023年,2月20日,星期五數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范化理論及其反思

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

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

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

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

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

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

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

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

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

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

10第10頁(yè),共33頁(yè),2023年,2月20日,星期五關(guān)系數(shù)據(jù)庫(kù)規(guī)范化設(shè)計(jì)理論的實(shí)質(zhì)

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

2.功能評(píng)價(jià)

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

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

13第13頁(yè),共33頁(yè),2023年,2月20日,星期五數(shù)據(jù)庫(kù)設(shè)計(jì)方法與技巧

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

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

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

15第15頁(yè),共33頁(yè),2023年,2月20日,星期五方法與技巧2:主鍵的選取

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

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

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

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

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

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

19第19頁(yè),共33頁(yè),2023年,2月20日,星期五方法與技巧4:樹型結(jié)構(gòu)

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

21第21頁(yè),共33頁(yè),2023年,2月20日,星期五(2)方案2

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

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

25第25頁(yè),共33頁(yè),2023年,2月20日,星期五權(quán)限管理

26第26頁(yè),共33頁(yè),2023年,2月20日,星期五方法與技巧5:權(quán)限管理設(shè)計(jì)

名稱類型約束說(shuō)明用戶組功能OIDint無(wú)重復(fù)本表PK用戶組OIDintNotNull用戶組表的PK,本表FK功能OIDintNotNull功能表的PK,本表FK名稱類型約束說(shuō)明功能表OIDint無(wú)重復(fù)PK功能名稱Varchar(20)NotNull功能描述Varchar(50)NotNull用戶組功能表功能表27第27頁(yè),共33頁(yè),2023年,2月20日,星期五用戶組表用戶表名稱類型約束說(shuō)明用戶組OIDintNotNull本表PK用戶組名Varchar(20)NotNull無(wú)重復(fù)用戶組名稱名稱類型約束說(shuō)明用戶OIDint無(wú)重復(fù)本表PK用戶組OIDintNotNull用戶組表的PK,本表FK用戶名Varchar(20)NotNull用戶名用戶密碼Varchar(8)NotNull方法與技巧5:權(quán)限管理設(shè)計(jì)

28第28頁(yè),共33頁(yè),2023年,2月20日,星期五方法與技巧6:?jiǎn)伪砟J?/p>

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

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論