TP7數(shù)據(jù)庫設計_第1頁
TP7數(shù)據(jù)庫設計_第2頁
TP7數(shù)據(jù)庫設計_第3頁
TP7數(shù)據(jù)庫設計_第4頁
TP7數(shù)據(jù)庫設計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫設計數(shù)據(jù)庫設計Contents熟悉數(shù)據(jù)庫設計流程1理解數(shù)據(jù)庫設計三大范式2三大范式的應用34為什么需要設計數(shù)據(jù)庫 2-1 設計上有差異嗎?結論:當數(shù)據(jù)庫比較復雜時我們需要設計數(shù)據(jù)庫4為什么需要設計數(shù)據(jù)庫 2-2良好的數(shù)據(jù)庫設計:q 節(jié)省數(shù)據(jù)的存儲空間q 能夠保證數(shù)據(jù)的完整性q 方便進行數(shù)據(jù)庫應用系統(tǒng)的開發(fā)糟糕的數(shù)據(jù)庫設計:q 數(shù)據(jù)冗余、存儲空間浪費q 內(nèi)存空間浪費q 數(shù)據(jù)更新和插入的異常5軟件項目開發(fā)周期 需求分析階段需求分析階段:分析客戶的業(yè)務和數(shù)據(jù)處理需求:分析客戶的業(yè)務和數(shù)據(jù)處理需求; 概要設計階段概要設計階段:設計數(shù)據(jù)庫的:設計數(shù)據(jù)庫的E-R模型圖,確認需求模型圖,確認需求信信息

2、的息的正確和完整正確和完整; 詳細設計階段詳細設計階段:將:將E-R圖轉(zhuǎn)換為多張表,進行圖轉(zhuǎn)換為多張表,進行邏輯設計邏輯設計并并應用數(shù)據(jù)庫設計的三大范式進行審核應用數(shù)據(jù)庫設計的三大范式進行審核; 代碼編寫階段:選擇具體數(shù)據(jù)庫進行物理實現(xiàn),并編寫代碼編寫階段:選擇具體數(shù)據(jù)庫進行物理實現(xiàn),并編寫 代碼代碼實現(xiàn)前端應用實現(xiàn)前端應用; 軟件測試階段:軟件測試階段: 安裝部署:安裝部署:現(xiàn)實世界建模信息世界數(shù)據(jù)庫世界模型轉(zhuǎn)換 規(guī)范化6設計數(shù)據(jù)庫的步驟4-1 收集信息收集信息: 與該系統(tǒng)有關人員進行交流、坐談,充分理解數(shù)據(jù)庫需要與該系統(tǒng)有關人員進行交流、坐談,充分理解數(shù)據(jù)庫需要完成的任務完成的任務BBS論

3、壇的基本功能:l用戶注冊和登錄,后臺數(shù)據(jù)庫需要存放用戶的注冊信息和在線狀態(tài)信息;l用戶發(fā)貼,后臺數(shù)庫需要存放貼子相關信息,如貼子內(nèi)容、標題等;l論壇版塊管理:后臺數(shù)據(jù)庫需要存放各個版塊信息,如版主、版塊名稱、貼子數(shù)等;7設計數(shù)據(jù)庫的步驟4-2 標識對象標識對象(實體(實體Entity) 標識數(shù)據(jù)庫要管理的關鍵對象或?qū)嶓w標識數(shù)據(jù)庫要管理的關鍵對象或?qū)嶓w 實體一般是名詞:l用戶:論壇普通用戶、各版塊的版主。l用戶發(fā)的主貼l用戶發(fā)的跟貼(回貼)l版塊:論壇的各個版塊信息8設計數(shù)據(jù)庫的步驟4-3論壇用戶:l呢稱l密碼l電子郵件l生日l性別l用戶的等級l備注信息l注冊日期l狀態(tài)l積分主貼l發(fā)貼人l發(fā)貼表

4、情l回復數(shù)量l標題l正文l發(fā)貼時間l點擊數(shù)l狀態(tài):l最后回復時間回貼l貼子編號l回貼人,l回貼表情l標題l正文l回貼時間l點擊數(shù)版塊l版塊名稱l版主l本版格言l點擊率l發(fā)貼數(shù)q標識每個實體的屬性(Attribute)9設計數(shù)據(jù)庫的步驟4-4 標識對象之間的關系標識對象之間的關系(Relationship)l跟貼和主貼有主從關系:我們需要在跟貼對象中表明它是誰的跟貼;l版塊和用戶有關系:從用戶對象中可以根據(jù)版塊對象查出對應的版主用戶的情況;l主貼和版塊有主從關系:需要表明發(fā)貼是屬于哪個版塊的;l跟貼和版塊有主從關系:需要表明跟貼是屬于哪個版塊的;10繪制E-R圖 4-1 E-R(EntityRe

5、lationship)實體關系圖實體關系圖 符合符合含義含義實體,一般是名詞屬性,一般是名詞關系,一般是動詞11繪制E-R圖 4-2管理bbsUser(用戶,版主)出生日期昵稱版塊名稱版主bbsSection(版塊)12繪制E-R圖 4-3 映射基數(shù)映射基數(shù)一對一X X X X Y Y Y Y X X X X Y Y Y Y 一對多X X X X Y Y Y 多對一X X X X Y Y Y Y 多對多 1 N M N13繪制E-R圖111M1MMM M用戶積分性別用戶等級備注信息注冊日期版塊名稱本版留言發(fā)貼數(shù)狀態(tài)密碼昵稱電子郵件生日論壇用戶(BBSUser)管理發(fā)表發(fā)表跟隨屬于屬于點擊率版主

6、標題發(fā)貼人貼子編號正文點擊率版塊(BBSSection)發(fā)貼(BBSTopic)發(fā)貼人正文狀態(tài)貼子編號所在版塊最后回復時間發(fā)貼表情回復數(shù)量點擊率發(fā)貼時間標題M跟貼(BBSReply)所在版塊發(fā)貼時間最后回復時間發(fā)貼表情1論壇E-R圖 M14如何將E-R圖轉(zhuǎn)換為表 3-1q 將各實體轉(zhuǎn)換為對應的表,將各屬性轉(zhuǎn)換為各表對應的列q 標識每個表的主鍵列,需要注意的是:沒有主鍵的表添加ID編號列,它沒有實際含義,用于做主鍵或外鍵,例如用戶表中的“UID”列,版塊表中添加“SID”列,發(fā)貼表和跟貼表中的“TID”列 q 在表之間建立主外鍵,體現(xiàn)實體之間的映射關系 15 如何將E-R圖轉(zhuǎn)換為表 3-2UID

7、主鍵TID主鍵RID主鍵SID主鍵16如何將E-R圖轉(zhuǎn)換為表添加各表之間的關系17數(shù)據(jù)規(guī)范化 僅有好的僅有好的RDBMS并不足以避免數(shù)據(jù)冗余,必須在數(shù)據(jù)庫的并不足以避免數(shù)據(jù)冗余,必須在數(shù)據(jù)庫的設計中創(chuàng)建好的表結構設計中創(chuàng)建好的表結構Dr E.F.codd 最初定義了規(guī)范化的三個級別,范式是具有最初定義了規(guī)范化的三個級別,范式是具有最小冗余的表結構。這些范式是:最小冗余的表結構。這些范式是: 第一范式(1st NF First Normal Fromate) 第二范式(2nd NFSecond Normal Fromate) 第三范式(3rd NF Third Normal Fromate)18

8、第一范式 (1st NF)BuyerIDCountryCity1342中國英國日本美國北京倫敦東京紐約BuyerIDAddress1234中國北京市 美國紐約市英國倫敦日本東京市 第一范式的目標是確保每列的原子性第一范式的目標是確保每列的原子性 如果每列都是不可再分的最小數(shù)據(jù)單元(也稱為如果每列都是不可再分的最小數(shù)據(jù)單元(也稱為最小的原子單元),則滿足第一范式(最小的原子單元),則滿足第一范式(1NF)19第二范式 (2nd NF) 如果一個關系滿足如果一個關系滿足1NF,并且除了主鍵以外的其他列,都,并且除了主鍵以外的其他列,都依賴與該主鍵,則滿足第二范式(依賴與該主鍵,則滿足第二范式(2N

9、F) 要求每列都和主鍵列相關要求每列都和主鍵列相關 第二范式要求每個表只描述一件事情第二范式要求每個表只描述一件事情Orders字段例子訂單編號產(chǎn)品編號訂購日期價 格001A0012000-2-3$29.00 Orders字段例子訂單編號訂購日期0012000-2-3Products字段例子產(chǎn)品編號價 格A001$29.0020第三范式 (3rd NF) 如果一個關系滿足如果一個關系滿足2NF,并且除了主鍵以外的其他列,并且除了主鍵以外的其他列都不傳遞依賴于主鍵列,則滿足第三范式(都不傳遞依賴于主鍵列,則滿足第三范式(3NF) 第三范式的目標確保每個列和主鍵列直接相關,而不第三范式的目標確保每

10、個列和主鍵列直接相關,而不是間接相關。是間接相關。 Orders字段例子訂單編號訂購日期顧客編號0012000-2-3AB001顧客姓名 Tony Orders字段例子訂單編號訂購日期顧客編號0012000-2-3AB001 21規(guī)范化實例 5-1假設某建筑公司要設計一個數(shù)據(jù)庫。公司的業(yè)務規(guī)假設某建筑公司要設計一個數(shù)據(jù)庫。公司的業(yè)務規(guī)則概括說明如下:則概括說明如下: 公司承擔多個工程項目,每一項工程有:工程號、工程名公司承擔多個工程項目,每一項工程有:工程號、工程名稱、施工人員等稱、施工人員等 公司有多名職工,每一名職工有:職工號、姓名、性別、公司有多名職工,每一名職工有:職工號、姓名、性別、

11、職務(工程師、技術員)等職務(工程師、技術員)等 公司按照工時和小時工資率支付工資,小時工資率由職工公司按照工時和小時工資率支付工資,小時工資率由職工的職務決定(例如,技術員的小時工資率與工程師不同)的職務決定(例如,技術員的小時工資率與工程師不同) 公司定期制定一個工資報表,如圖公司定期制定一個工資報表,如圖- -1 1所示所示22規(guī)范化實例 5-2工程號工程號工程名稱工程名稱職工號職工號姓名姓名職務職務小時工資率小時工資率工時工時實發(fā)工資實發(fā)工資A1花園大廈1001齊光明工程師6513845.001002李思岐技術員6016960.001004葛宇宏律師60191140.00小計2945.

12、00A2立交橋1001齊光明工程師6515975.001003鞠明亮工人5517935.00小計1910.00A3臨江飯店1002李思岐技術員60181080.001004葛宇洪技術員6014840.00小計1920.00圖-1 某公司的工資表23規(guī)范化實例 5-3工程號工程號工程名稱工程名稱職工號職工號姓名姓名職務職務小時工資率小時工資率工時工時A1花園大廈1001齊光明工程師6513A1花園大廈1002李思岐技術員6016A1花園大廈1001齊光明工程師6513A1花園大廈1003鞠明亮工人5517A3臨江飯店1002李思岐技術員6018A3臨江飯店1004葛宇洪技術員6014圖-2 某公

13、司的項目工時表24規(guī)范化實例 5-41.表中包含大量的冗余,可能會導致數(shù)據(jù)異常:表中包含大量的冗余,可能會導致數(shù)據(jù)異常: 更新異常更新異常 例如,修改職工號例如,修改職工號=1001的職務,則必須修改所有職的職務,則必須修改所有職工號工號=1001的行的行 添加異常添加異常 若要增加一個新的職工時,首先必須給這名職工分配一若要增加一個新的職工時,首先必須給這名職工分配一個工程。或者為了添加一名新職工的數(shù)據(jù),先給這名職個工程。或者為了添加一名新職工的數(shù)據(jù),先給這名職工分配一個虛擬的工程。(因為主關鍵字不能為空)工分配一個虛擬的工程。(因為主關鍵字不能為空) 刪除異常刪除異常 例如,例如,1001

14、號職工要辭職,則必須刪除所有職工號號職工要辭職,則必須刪除所有職工號1001的數(shù)據(jù)行。這樣的刪除操作,很可能丟失了其它有的數(shù)據(jù)行。這樣的刪除操作,很可能丟失了其它有用的數(shù)據(jù)用的數(shù)據(jù)25規(guī)范化實例 5-52采用這種方法設計表的結構,雖然很容采用這種方法設計表的結構,雖然很容易產(chǎn)生工資報表,但是每當一名職工分配易產(chǎn)生工資報表,但是每當一名職工分配一個工程時,都要重復輸入大量的數(shù)據(jù)。一個工程時,都要重復輸入大量的數(shù)據(jù)。這種重復的輸入操作,很可能導致數(shù)據(jù)的這種重復的輸入操作,很可能導致數(shù)據(jù)的不一致性。不一致性。26一張表描述了多件事情,如圖-3所示。應用范式規(guī)范化設計工程號工程名稱職工號姓名職務小時工

15、資率工時圖-3 函數(shù)依賴圖工程信息員工信息項目工時信息27應用第二范式規(guī)范化工程號工程名稱職工號姓名職務小時工資率工程號職工號工時圖-4 應用第二范式工程表員工表項目工時表滿足第三范式嗎? 28應用第三范式規(guī)范化工程號工程名稱職工號姓名職務職務小時工資率工程號職工號工時工程表員工表職務表工程表規(guī)范化與性能 規(guī)范不是必須的。規(guī)范不是必須的。 進行規(guī)范化的同時,還需要綜合考慮數(shù)據(jù)庫的性進行規(guī)范化的同時,還需要綜合考慮數(shù)據(jù)庫的性能能。 通過在給定的表中添加冗余的字段,以避免查詢過程中,多表連接造成的時間損耗。30總結 2-1 在需求分析階段,設計數(shù)據(jù)庫的一般步驟為:在需求分析階段,設計數(shù)據(jù)庫的一般步驟為:收集信息標識對象標識每個對象的屬性標識對象之間的關系 在概要設

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論