2015-第9章數(shù)據(jù)庫設(shè)計_第1頁
2015-第9章數(shù)據(jù)庫設(shè)計_第2頁
2015-第9章數(shù)據(jù)庫設(shè)計_第3頁
2015-第9章數(shù)據(jù)庫設(shè)計_第4頁
2015-第9章數(shù)據(jù)庫設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本章主要內(nèi)容邏輯模型與物理模型關(guān)系數(shù)據(jù)庫模型將E-R圖轉(zhuǎn)換為關(guān)系字段設(shè)計代碼設(shè)計12邏輯模型和物理模型數(shù)據(jù)建模和系統(tǒng)開發(fā)生命周期系統(tǒng)規(guī)劃階段企業(yè)范圍的數(shù)據(jù)模型(主要實體)概念數(shù)據(jù)模型(E-R及具體項目的實體)系統(tǒng)設(shè)計階段邏輯數(shù)據(jù)模型(關(guān)系)和物理文件與數(shù)據(jù)庫設(shè)計(文件組織)系統(tǒng)實施階段Implemenion: 實施數(shù)據(jù)庫和文件定義(DBMS具體代碼)系統(tǒng)分析階段概念數(shù)據(jù)模型( E-R 及屬性)階段Maenance:( 數(shù)據(jù)模型評估)3邏輯模型和物理模型數(shù)據(jù)庫的設(shè)計主要包含兩個步驟:首先是開發(fā)邏輯數(shù)據(jù)庫模型,最常見的類型是關(guān)系數(shù)據(jù)庫模型。在邏輯數(shù)據(jù)庫設(shè)計中,使用規(guī)范化方法建立數(shù)據(jù)模型,使得模型具

2、有簡單、無冗余性和最小成本等特性。然后通過數(shù)據(jù)庫物理設(shè)計定義用于數(shù)據(jù)的計算機(jī)文檔和數(shù)據(jù)庫的技術(shù)規(guī)范。通常,邏輯與物理數(shù)據(jù)庫設(shè)計可以和其他系統(tǒng)設(shè)計同步進(jìn)行,如輸入輸出設(shè)計等。4E-R圖轉(zhuǎn)化為關(guān)系模型:(1)表示實體。E-R圖中的每一個實體類型都轉(zhuǎn)變成為一個關(guān)系。實體類型的標(biāo)識符成為關(guān)系的主碼,而實體類型的其他屬性成為關(guān)系中的非主碼屬性。(2)表示關(guān)系。在設(shè)計關(guān)系數(shù)據(jù)庫時必須體現(xiàn)出E-R圖中的每一種關(guān)系。要表達(dá)一種關(guān)系取決于它的內(nèi)在性質(zhì)。例 時候通過將一個屬性在一個關(guān)系中設(shè)為主碼而在另一個關(guān)系中設(shè)為外碼來表達(dá)關(guān)系;而在另一些時候,用新建一個單獨的關(guān)系來表示出這種聯(lián)系。(3)規(guī)范化關(guān)系。面兩個步驟中

3、建立的關(guān)系可能存在不必要的冗余,所以需要進(jìn)行規(guī)范化使其結(jié)構(gòu)完善。(4)合并關(guān)系。到此為止,在數(shù)據(jù)庫設(shè)計中已經(jīng)建立了各種關(guān)系,既有從用戶角度自下而上建立的關(guān)系,也有從一個或多個E-R圖中轉(zhuǎn)化而來的關(guān)系。在這些關(guān)系中可能存在冗余關(guān)系(多個關(guān)系描述同一個實體類型),它們必須被合并、重范化并消除冗余。5實體轉(zhuǎn)換規(guī)則每個基本實體、關(guān)聯(lián)實體和弱實體都被實現(xiàn)成一個獨立表,表名可能按照DBMS名規(guī)則和大小限制進(jìn)行格式化。例如,命名為MEMBER ORDERED PRODUCT的邏輯實體可能被變換為名為tblMemberOrdProd的物理表。標(biāo)識主碼,并且實現(xiàn)為表中的一個索引。每個副碼實現(xiàn)為表中的索引。對于任

4、何被確定為子集準(zhǔn)則的非主屬性,應(yīng)該建立索引。標(biāo)識外鍵,這些外鍵實現(xiàn)了數(shù)據(jù)模型的關(guān)系,并使得表可以在 和應(yīng)用程序中被連接。屬性轉(zhuǎn)換規(guī)則屬性采用字段實現(xiàn),這些字段對應(yīng)表中的列。字段名稱需要按照DBMS的約束和規(guī)則被縮短或者重新格式化。數(shù)據(jù)類型:每個DBMS支持不同的數(shù)據(jù)類型和術(shù)語,例如在Acs中,固定長度字符數(shù)據(jù)用TEXT表示,而在MS SQL Server和Oracle中,采用CHAR(size)表示。選擇一個數(shù)據(jù)類型需要在以下四個目標(biāo)之間進(jìn)行權(quán)衡,這些目標(biāo)對于不同的應(yīng)用有不同的重要程度:最小化空間。能夠表示一個字段所有可能的值。改進(jìn)字段的數(shù)據(jù)完整性。支持字段的所有數(shù)據(jù)操作??栈蚍强?。不同DBM

5、S可能使用不同的預(yù)留字顯示該特性。按照定義,主碼值不能為空。域:許多DBMS可以自動編輯數(shù)據(jù),以確保字段包含合法數(shù)據(jù),這對于應(yīng)用程序確保數(shù)據(jù)完整性是一個很大的優(yōu)點。默認(rèn)值。但用戶或者程序員創(chuàng)建一個包含空值字段的時,許多DBMS使用默認(rèn)值自動設(shè)置值。有些情況下,空值可以作為默認(rèn)值。關(guān)系轉(zhuǎn)換規(guī)則關(guān)系的表示方法既依賴于關(guān)系層次(一元、二元、三元的),也依賴于關(guān)系數(shù)量。在E-R圖中實現(xiàn)二元一對多(1:N)關(guān)系的方法如下:通過將1:N關(guān)系中1這邊的實體的主碼屬性作為外碼添加到關(guān)系中N這邊的關(guān)系中。注意,上述方法中存在一個特例。如果關(guān)系中N這邊的實體需要關(guān)系中1這邊的屬性作為它的部分主碼(稱為弱實體),則

6、被選擇的屬性不再作為非主碼,而是作為主碼的一部分加入到關(guān)系N這邊。對于兩個實體A和B之間二元、一元的1:1關(guān)系(對于一元關(guān)系,A和B將是相同實體類),則可以用如下三種選擇之一表示該關(guān)系:(1)將A中的主碼作為外碼加到B中。(2)將B中的主碼作為外碼加到A中。(3)兼有上述二者。以客戶配置訂單的關(guān)系為例,配置關(guān)系連接了客戶和訂單兩個實體,客戶和訂單分別是兩個獨立的實體類轉(zhuǎn)化而來的關(guān)系(見圖9.3)。關(guān)系CUSTOMER中的主碼客戶號(關(guān)系中1的這邊)作為外碼加到了關(guān)系ORDER中(關(guān)系中N的這邊)??蛻粲唵慰蛻籼栍唵翁柵渲糜嗁徣掌诘刂返截浫掌诔鞘姓劭蹖τ诙?元的M:N關(guān)系,即假設(shè)在兩個實體類

7、A和B之間有一個二元的多對多(M:N)關(guān)系(或聯(lián)合實體)。對于這樣一種關(guān)系,新建一個獨立關(guān)系C,其主碼是由該關(guān)系中兩個實體的主碼組成,而M:N關(guān)系中的所有非主碼屬性都要包含在關(guān)系C中。如圖9.4所示,該請求關(guān)系(M:N)連接客戶和訂單兩個實體。在轉(zhuǎn)化時,可將該E-R圖轉(zhuǎn)換為三個關(guān)系(訂單,訂單線和產(chǎn)品)。其中訂單明細(xì)關(guān)系是由請求關(guān)系生成的,它的主碼由訂單和產(chǎn)品的主碼組成(訂單號,產(chǎn)品號)。非主碼屬性訂購數(shù)量也出現(xiàn)在訂單項中。訂購數(shù)量產(chǎn)品訂單產(chǎn)品號描述 城市(其他屬性)訂單號 訂購日期到貨日期請求訂單關(guān)系訂單號訂購日期到貨日期訂單明細(xì)訂單號產(chǎn)品號訂購數(shù)量產(chǎn)品產(chǎn)品號描述城市其他屬性10有些時候,根

8、據(jù)M:N關(guān)系新建關(guān)系的主碼可能不只包括現(xiàn)有兩個相關(guān)關(guān)系的所有主碼,如圖9.5所示。在這種情況下,日期必須是運送關(guān)系的一部分主鍵,以區(qū)分運送表的每一行。如下:客戶關(guān)系客戶號供應(yīng)商供應(yīng)商號 地址運送客戶號供應(yīng)商號日期 數(shù)量11運送供應(yīng)商供應(yīng)商號地址客戶客戶號日期數(shù)量E-R到關(guān)系的轉(zhuǎn)化原則E-R結(jié)構(gòu)關(guān)系描述常規(guī)實體創(chuàng)建一個帶有主碼和非主碼屬性的關(guān)系。弱實體創(chuàng)建帶有組合主碼(包括該弱實體所依賴實體的主碼)和非主碼屬性的關(guān)系。二元或一元1:1關(guān)系在任意一個實體對應(yīng)的關(guān)系中放置另一個實體的主碼。或者對兩個實體都做同樣的操作。二元1:N關(guān)系將1這邊的實體的主碼作為N這邊實體對應(yīng)關(guān)系的一個外碼。二元或一元M:

9、N關(guān)系或關(guān)聯(lián)實體使用相關(guān)實體的主碼以及聯(lián)系或聯(lián)合實體的非碼屬性來創(chuàng)建帶有組合主碼的關(guān)系。二元或一元M:N關(guān)系或帶有附加碼的關(guān)聯(lián)實體使用相關(guān)實體的主碼和與聯(lián)系或聯(lián)合實體關(guān)聯(lián)的附加非碼屬性,及關(guān)系或聯(lián)合實體的非碼屬性來創(chuàng)建帶有組合主碼的關(guān)系。二元或一元M:N關(guān)系或自己有碼的關(guān)聯(lián)實體創(chuàng)建帶有主碼的關(guān)系,該主碼與關(guān)系或聯(lián)合實體相關(guān),外加關(guān)系或聯(lián)合實體的非主碼和相關(guān)實體的主碼(作為外碼屬性)。父類/子類關(guān)系為父類創(chuàng)建關(guān)系,該關(guān)系包含主碼和與子類共同的所有非碼屬性,此外為每個子類創(chuàng)建只包括相同主碼(用相同的或局部名字)和只在各子類中出現(xiàn)的非碼屬性的獨立關(guān)系。關(guān)系合并同義屬性有些情況下,多個名稱不同的屬性描

10、述了一個實體的同一個特征。這種屬性稱為同義屬性(synonyms)。例如,員工號和員工_Number可能就是同義屬性。當(dāng)合并那些存在同義屬性的關(guān)系時,應(yīng)該盡可能地征詢用戶的同意,為該屬性選擇一個規(guī)范化的名稱,消去其他名稱。另一個代替方案是為那些同義屬性重新命名。2.異義屬性還有一種情況存在,即一個屬性名稱可能有多個含義或者描述了多個特征,稱之為異義屬性(homonym)。例如,賬戶這個詞可以指支票帳戶、儲蓄賬戶、 賬戶等。因此,它的含義取決于它的使用情形。當(dāng)合并關(guān)系時要留意發(fā)現(xiàn)是否有異義屬性。關(guān)系合并3. 非主碼間的依賴當(dāng)兩個3NF關(guān)系合并成一個時可能產(chǎn)生非主碼間的依賴。舉例如下:學(xué)生1(學(xué)號

11、,專業(yè))學(xué)生2(學(xué)號,輔導(dǎo)員)由于STUDENT1和STUDENT2主碼相同,所以兩個關(guān)系合并后的關(guān)系為:學(xué)生(學(xué)號,專業(yè),輔導(dǎo)員)但是,假如每一個專業(yè)只有一個輔導(dǎo)員,則輔導(dǎo)員就是函數(shù)依賴于專業(yè),即:專業(yè)輔導(dǎo)員如果這種依賴存在,因為包含非主碼間的函數(shù)依賴,學(xué)生就滿足2NF而不是3NF。分析員可以通過生成兩個關(guān)系,并將專業(yè)作為學(xué)生中的一個外碼來實現(xiàn)3NF。具體如下:學(xué)生(學(xué)號,專業(yè))專業(yè)輔導(dǎo)員(專業(yè),輔導(dǎo)員)關(guān)系合并4.類/子類在用戶的視圖或者關(guān)系中可能隱含存在著類/子類關(guān)系。假設(shè)有下面兩個醫(yī)院關(guān)系:1(,地址,治療日期)2(,號)表面上這兩個關(guān)系可以合并成一個關(guān)系。但是,如果有兩種不同的:住院

12、和出院。1實際上包含的屬性是對所有,而2中卻包含了一個針對住院的屬房號)。此時,需要為這些實體新建一個類/子類關(guān)系:(,地址)住院(,號)出院(,治療日期)轉(zhuǎn)換為DBMS規(guī)定的模型一般的數(shù)據(jù)模型還需要向特定DBMS規(guī)定的模型進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換的主要依據(jù)是所選用的DBMS的功能及限制,沒有通用規(guī)則。數(shù)據(jù)類型:每個DBMS支持不同的數(shù)據(jù)類型和術(shù)語,例如在Acs中,固定長度字符數(shù)據(jù)用TEXT表示,而在MS SQL Server和Oracle中,采用 CHAR(size)表示。字段大小:不同DBMS表達(dá)實數(shù)的精度不同??栈蚍强铡2煌珼BMS可能使用不同的預(yù)留字顯示該特性。按照定義,主碼值不能為空。域:許多

13、DBMS可以自動編輯數(shù)據(jù),以確保字段包含合法數(shù)據(jù),這對于應(yīng)用程序確保數(shù)據(jù)完整性是一個很大的優(yōu)點。默認(rèn)值。但用戶或者程序員創(chuàng)建一個包含空值字段的時,許多DBMS使用默認(rèn)值自動設(shè)置值。有些情況下,空值可以作為默認(rèn)值??刂茢?shù)據(jù)完整性數(shù)據(jù)完整性是有關(guān)信任,為數(shù)據(jù)庫提供了所需的控制。任何數(shù)據(jù)庫必須至少設(shè)計三類數(shù)據(jù)完整性:主鍵完整性每張表都應(yīng)該有一個主鍵,不允許主鍵為空。域完整性必須設(shè)計合適的控制確保每個字段具有合法值。完整性(參照完整性)確保一張表的外鍵值匹配相關(guān)表中的主鍵值。完整性(參照完整性)規(guī)則刪除:瀑布式刪除表中的一個必須自動地緊跟著刪除相關(guān)表中的匹配。刪除:限制式不允許刪除表中,除非與之匹配的

14、已經(jīng)從相關(guān)表中刪除。許多關(guān)系型DBMS可以自動強(qiáng)行執(zhí)行該規(guī)則。刪除:置空表中一個的刪除必須自動緊跟著將相關(guān)表中任何相匹配的鍵值設(shè)置為NULL。只有當(dāng)希望刪除主表而又不想刪除對應(yīng)的事務(wù)表(為了保存歷史數(shù)據(jù))時,這條規(guī)則才有用。通過設(shè)置外鍵為NULL,可以告知該沒有對應(yīng)的主,但不會把它指向不存在的主。規(guī)劃數(shù)據(jù)庫容量數(shù)據(jù)庫容量規(guī)劃可以采用簡單的算法進(jìn)行計算。對于每個表,求和字段大小,得到的是表的大小。對于每個表,大小乘以表中可能包含的實例數(shù)量,得到表的大小。估算時,需要考慮合理時間段(例如3年)的增長。求和表大小,得到數(shù)據(jù)庫大小。在該大小基礎(chǔ)上加上一個空間余量緩沖(例如10%),以考慮未預(yù)期的。代碼

15、設(shè)計代碼作用1、唯一化現(xiàn)實世界中的事物必須轉(zhuǎn)換為機(jī)器可以識別和區(qū)分的符號語言,因此,現(xiàn)實事物必須采用唯一標(biāo)識,這是編制代碼的首要任務(wù)。以人事 管理中的職工 為例,由于 經(jīng)常有重名現(xiàn)象,因此難以作為唯一標(biāo)識,所以需要編制職工代碼來對每位員工進(jìn)行標(biāo)識。2、規(guī)范化盡管已確保代碼具有唯一性,但如果代碼是雜亂無章的,使用起來也不方便。所以,除了保證標(biāo)識唯一性之外,還需要使編制出的代碼易于辨認(rèn),也就是按照一定的規(guī)范編制代碼。例如,財政部關(guān)于會計科目編碼的規(guī)定,以 “1”開頭的表示資產(chǎn)類科 目;以“2”表示負(fù)債類科目;“3”表示權(quán)益類科目;“4”表示成本類科目等。3、系統(tǒng)化系統(tǒng)所用代碼應(yīng)盡量標(biāo)準(zhǔn)化。在實際工

16、作中,一般企業(yè)所用大部分碼都有國家或行業(yè)標(biāo)準(zhǔn)。例如,會計領(lǐng)域中,一級會計科目由國家財政部進(jìn)行標(biāo)準(zhǔn)分類,二級科目由各部委或者行業(yè) 進(jìn)行標(biāo)準(zhǔn)分類,企業(yè)則只能對會計業(yè)務(wù)中的明細(xì)帳幕,即三、四科目進(jìn)行分類,而且這個分類必須參照一、二級科目的規(guī)律進(jìn)行。代碼設(shè)計的原則代碼設(shè)計1、必須保證有足夠的容量要足以包括規(guī)定范圍內(nèi)的所有對象。如果容量不夠,不便于今后變化和擴(kuò)充,隨著環(huán)境的變化這種分類很快就失去了生命力。2、按屬性系統(tǒng)化類不能是無原則的,必須遵循一定的規(guī)律。根據(jù)實際情況并結(jié)合具體管理的要求來劃分是 分類的基本方法。分類應(yīng)按照處理對象的各種具體屬性系統(tǒng)地進(jìn)行。如 分類方法中,哪一層次是按照什么屬性來分類,

17、哪一層次是標(biāo)識一個什么類型的對象集合等都必須系統(tǒng)地進(jìn)行, 的分類才比較容易建立,比較容易為別人所接受。3、分類要有一定的柔性不至于在出現(xiàn)變更時破壞分類的結(jié)構(gòu)。所謂柔性是指在一定情況下分類結(jié)構(gòu)對于增設(shè)或變更處理對象的可容納程度。柔性好的系統(tǒng)在一般的情況下增加分類不會破壞其結(jié)構(gòu)。但是柔性往往還會帶來別的一些問 題,如冗余度大等,這都是設(shè)計分類時必須考慮。4、注意本分類系統(tǒng)與外系統(tǒng)、已有系統(tǒng)的協(xié)調(diào)。任何一項工作都是從原有的基礎(chǔ)上發(fā)展起來的,故分類時一定要注意新老分類的協(xié)調(diào)性,以便于系統(tǒng)的聯(lián)系、移植、協(xié)作以及新老系統(tǒng)的 平穩(wěn)過渡。代碼設(shè)計目前常用的代碼種類:順序碼 :以某種順序形式編碼。如各種票據(jù)的,

18、都是順序碼。這種編碼的優(yōu)點是簡單,易于追加,缺點是可識別性差。數(shù)字碼:數(shù)字碼是以純數(shù)字形式編碼,數(shù)字碼是在各類管理中最常用的一類編碼形式。區(qū)間碼:將順序碼分成若干區(qū)段,每一區(qū)段代表部分編碼對象。層次碼:在代碼結(jié)構(gòu)中,為實體的每個屬性確定一位或幾位編碼,并排成一定的層次關(guān)系。舉例我國目前使用的居民 就是采用一個15位的數(shù)字碼,前 6位表示地區(qū)編碼,中間6位表示出生年月日,最后3位表示順序號和其它狀態(tài)( 等)。這種數(shù)字碼屬層次碼。這種編碼優(yōu)點是易于校對,易于處理,缺點是不便 。代碼設(shè)計目前常用的代碼種類:字符碼以純字符形式編碼(英文、漢語拼音等)。這類編碼常見的有 在程序設(shè)計中的字段名、變量名編碼

19、。例如:在開發(fā)一個成本管理信息系統(tǒng)時,在數(shù)據(jù)庫設(shè)計時,所有表名均以C-開始,視圖名用C-V-開始。例如產(chǎn)生各種材料匯總的視圖:材料成本表C-CLCB,C-V-CLHZ。這就是一個典型的純字符碼。這種編碼優(yōu)點是可輔助 ,缺點是校對不易,不易反映分類的結(jié)構(gòu)?;旌洗a即以數(shù)字和字符混合形式編碼?;旌洗a是在各類管理中最常用的另一類編碼形式。這種編碼的優(yōu)點是易于識別,易于表現(xiàn)對象的系列性,缺點是不易校對。例如:GB x表示國際標(biāo)準(zhǔn)的某類編碼,IEEE802.X表示某類網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn)名稱的編碼。所有的汽車牌照 ,都是混合碼。線分類方法線分類方法是目前用得最多的 法,尤其是在手工處理的情況下它幾乎成了唯一的方法

20、。線分類方法的主要方式首先給定母項, 母項下分若干子項,由對象的母項分大集合,由大集合確定小集合,最后到具體對象。線分類方法線分類劃分原則:唯一性和不交叉性。否則分類后如果出現(xiàn)有二義性,將會給后繼工作帶來諸多不便線分類法的特點:結(jié)構(gòu)清晰,容易識別和,容易進(jìn)行有規(guī)律的查找。與傳統(tǒng)方法相似,對手工系統(tǒng)有較好的適應(yīng)性。缺點:結(jié)構(gòu)不靈活,柔性較差。面分類法主要從面角度來考慮分類。面分類方法的特點:柔性好,面的增加、刪除、修改都很容易可實現(xiàn)按任意組配面的信息檢索,對機(jī)器處理有良好的適應(yīng)性缺點不易直觀識別,不便于。例如:代碼3212表示材料為鋼的 1.0mm圓頭的鍍鉻螺釘。代碼的校驗錄入代碼時的可能錯誤:識別錯誤:1/7,0/O,Z/2,D/O,S/5,易位錯誤:12345/13245,雙易位錯誤:12345/13254,隨機(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論