第5章數(shù)據(jù)庫(kù)表的規(guī)范化_第1頁(yè)
第5章數(shù)據(jù)庫(kù)表的規(guī)范化_第2頁(yè)
第5章數(shù)據(jù)庫(kù)表的規(guī)范化_第3頁(yè)
第5章數(shù)據(jù)庫(kù)表的規(guī)范化_第4頁(yè)
第5章數(shù)據(jù)庫(kù)表的規(guī)范化_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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)介

主要學(xué)習(xí)內(nèi)容

-什么是規(guī)范化,以及它在數(shù)據(jù)庫(kù)設(shè)計(jì)中的作用

-范式1NF、2NF、3NF-范式如何從低范式轉(zhuǎn)換為高范式

-規(guī)范化和ER建模被同時(shí)用來(lái)生成優(yōu)秀的數(shù)據(jù)庫(kù)設(shè)計(jì)

-要求非規(guī)范化以有效生成信息的情況

第5章數(shù)據(jù)庫(kù)表的規(guī)范化§5.1數(shù)據(jù)表和規(guī)范化表是數(shù)據(jù)庫(kù)設(shè)計(jì)過程中的基本構(gòu)件。規(guī)范化(normalization)是估算并校正表結(jié)構(gòu)以使數(shù)據(jù)冗余最小化的過程,它可以幫助消除數(shù)據(jù)異常。規(guī)范化通過叫做“范式”的一組平臺(tái)進(jìn)行工作。前3個(gè)平臺(tái)記述為第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。從結(jié)構(gòu)的觀點(diǎn)來(lái)看,2NF優(yōu)于1NF,而3NF優(yōu)于2NF。出于大多數(shù)商務(wù)數(shù)據(jù)庫(kù)設(shè)計(jì)目的考慮,在規(guī)范化過程中對(duì)3NF的需要最多。實(shí)際應(yīng)用中會(huì)涉及規(guī)范化和非規(guī)范化的權(quán)衡?!?.1數(shù)據(jù)表和規(guī)范化—規(guī)范化需要§5.1.1數(shù)據(jù)表和規(guī)范化—規(guī)范化需要續(xù)報(bào)表中的總費(fèi)用為派生值,它沒必要存儲(chǔ)在數(shù)據(jù)表中?!?.1.1數(shù)據(jù)表和規(guī)范化—規(guī)范化需要續(xù)

但該表與關(guān)系數(shù)據(jù)庫(kù)要求不符合,而且在數(shù)據(jù)處理方面做的不好:主鍵標(biāo)包括空值表項(xiàng)目引起數(shù)據(jù)不一致。例如,可以將JOB_CLASS值“Elect.Engineer”輸入為“Elect.Eng”。表顯示了數(shù)據(jù)冗余。從而生成了下面的異常:

—更新異常

—插入異常

—?jiǎng)h除異?!?.1.2數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第一范式步驟1:消除重復(fù)組

先從介紹表格式中的數(shù)據(jù)開始,在表格式中,每個(gè)單元格都有單個(gè)值,而且沒有重復(fù)組。為了消除重復(fù)組,通過確保每一個(gè)重復(fù)組屬性包括一個(gè)合適的數(shù)據(jù)值來(lái)消除空值。步驟2:標(biāo)識(shí)鍵標(biāo)為了保持惟一標(biāo)識(shí)任何屬性值的正確的主鍵標(biāo),新鍵標(biāo)必須由PROJ_NUM和EMP_NUM的組合組成步驟3:標(biāo)識(shí)所有依賴,步驟2中PK的標(biāo)識(shí)意味著你已經(jīng)標(biāo)識(shí)了下面的依賴:

PROJ_NUM,EMP_NUM—>PROJ_NAME,EMP_NAME,

JOB_CLASS,CHG_HOUR,HOURSPROJ_NUM—>PROJ_NAME§5.1.2數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第一范式PRJ_NUMPRJ_NAMEEMP_NUMEMP_NAMEJOB_CLASSCHG_HOURHOURS部分依賴部分依賴傳遞依賴§5.1.2數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第一范式續(xù)部分依賴(partialdependencies):只基于復(fù)合主鍵標(biāo)的一部分的依賴。傳遞依賴(transitivedependency):一個(gè)非主屬性對(duì)于另一個(gè)非主屬性的依賴依賴圖(dependencydiagram)

§5.1.2數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第一范式續(xù)術(shù)語(yǔ)1NF(第一范式,firstnormalform)描述了表格式,在表格式中:定義了所有鍵標(biāo)屬性。表中沒有重復(fù)組。換句話說(shuō),每一行/列插入僅可以包括一個(gè)值,而不是一組值。所有屬性都依賴于主鍵標(biāo)。所有的關(guān)系表都滿足1NF,該范式的問題是包括了部分依賴,也就是說(shuō),只基于鍵標(biāo)一部分的依賴。1NF到2NF的轉(zhuǎn)換很簡(jiǎn)單:從上圖所示的1NF格式開始,完成下面的步驟:步驟1:標(biāo)識(shí)所有鍵標(biāo)組件

PROJ_NUM EMP_NUM PROJ_NUMEMP_NUM

每一個(gè)組件將成為新表中的鍵標(biāo)。換句話說(shuō),原始表現(xiàn)在分成了3個(gè)表。我們把這些表分別叫做PROJECT,EMPLOYEE和ASSIGN。步驟2:標(biāo)識(shí)依賴屬性

3個(gè)新表PROJECT,EMPLOYEE和ASSIGN可以描述如下:

PROJECT(PROJ_NUM,PROJ_NAME)

EMPLOYEE(EMP_NUM,EMP_NAME,JOB_CLASS,CHG_HOUR)

ASSIGN(PROJ_NUM,EMP_NUM,ASSIGN_HOURS)§5.1.3數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第二范式PRJ_NUMPRJ_NAMEEMP_NUMEMP_NAMEJOB_CLASSCHG_HOURASSIGN_HOURS傳遞依賴§5.1.3數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第二范式續(xù)表名:PROJECTEMP_NUMPRJ_NUM表名:EMPLOYEE表名:ASSIGN§5.1.3數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第二范式續(xù)術(shù)語(yǔ)2NF(第二范式,secondnormalform):它屬于1NF。它不包括部分依賴;也就是說(shuō),沒有屬性只依賴于主鍵標(biāo)的一部分由于只有表的主鍵標(biāo)由幾個(gè)屬性組成時(shí),部分依賴才存在,所以主鍵標(biāo)只有單個(gè)屬性組成的表屬于1NF,那么他就自動(dòng)屬于2NF。

屬于2NF的表仍可能顯示出傳遞依賴;也就是說(shuō),一個(gè)或多個(gè)屬性可以在功能上依賴于非鍵標(biāo)屬性?!?.1.4數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第三范式

通過完成下面的3個(gè)步驟,可以很容易地消除由圖5-4中所示的數(shù)據(jù)庫(kù)體系結(jié)構(gòu)引起的數(shù)據(jù)異常:步驟1:標(biāo)識(shí)每一個(gè)新的行列式(determinant)對(duì)于每一個(gè)傳遞依賴,將它的行列式寫為新表的PK(行列式是它的值確定行中其他值的任何屬性)

步驟2:標(biāo)識(shí)依賴屬性,

標(biāo)識(shí)依賴于步驟1中所標(biāo)識(shí)的每一個(gè)行列式的屬性,并標(biāo)識(shí)依賴。在本例中,寫為:JOB_CLASS—>CHG_HOUR,命名表來(lái)反映它的內(nèi)容和功能。在本例中,JOB似乎是合適的。步驟3:從傳遞依賴中消除依賴屬性從具有這樣的傳遞關(guān)系的每一個(gè)表中消除傳遞關(guān)系(一個(gè)或多個(gè))中的所有依賴屬性。PRJ_NUMPRJ_NAMEEMP_NUMEMP_NAMEJOB_CLASSASSIGN_HOURS§5.1.4數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第三范式續(xù)表名:PROJECTEMP_NUMPRJ_NUM表名:EMPLOYEE表名:ASSIGNJOB_CLASSCHG_HOUR表名:JOB§5.1.4數(shù)據(jù)表和規(guī)范化—轉(zhuǎn)換為第三范式續(xù)術(shù)語(yǔ)3NF(第三范式,thirdnormalform):它屬于2NF。它不包括傳遞依賴?!?.1.5數(shù)據(jù)表和規(guī)范化—改進(jìn)的設(shè)計(jì)

依靠規(guī)范化我們消除了數(shù)據(jù)冗余,但是我們不能僅僅依賴規(guī)范化做出好的設(shè)計(jì),現(xiàn)在我們來(lái)看看如何在規(guī)范化的基礎(chǔ)上提高數(shù)據(jù)庫(kù)的操作性能和提供數(shù)據(jù)的能力。PK分配命名約定屬性原子性添加屬性精制PKPRJ_NUMPRJ_NAME表名:PROJECTPRJ_NUMPRJ_NAME表名:PROJECTJOB_DESCRIPTIONJOB_CHG_HOUR表名:JOBEMP_NUMJOB_CODEJOB_CLASSCHG_HOUR表名:JOB—

PK分配—命名約定—添加屬性§5.1.5數(shù)據(jù)表和規(guī)范化—改進(jìn)的設(shè)計(jì)PRJ_NUMPRJ_NAME表名:PROJECTJOB_DESCRIPTIONJOB_CHG_HOUR表名:JOBEMP_NUMJOB_CODE§5.1.5數(shù)據(jù)表和規(guī)范化—改進(jìn)的設(shè)計(jì)續(xù)EMP_NUMEMP_NAMEJOB_CLASS表名:EMPLOYEEEMP_HIREDATEEMP_FNAMEEMP_NUMEMP_LNAMEEMP_INITIALJOB_CODE—命名的原子性—添加屬性§5.1.5數(shù)據(jù)表和規(guī)范化—改進(jìn)的設(shè)計(jì)續(xù)§5.1.5數(shù)據(jù)表和規(guī)范化—改進(jìn)的設(shè)計(jì)續(xù)ASSIGN_HOURSPRJ_NUMASSIGN_NUMASSIGN_DATEEMP_NUMASSIGN_HOURSEMP_NUMPRJ_NUM表名:ASSIGN—精制PK§5.1.5數(shù)據(jù)表和規(guī)范化—改進(jìn)的設(shè)計(jì)續(xù)§5.2規(guī)范化和數(shù)據(jù)庫(kù)設(shè)計(jì)

為了確解說(shuō)明規(guī)范化在設(shè)計(jì)過程中的作用,我們從概念設(shè)計(jì)的角度說(shuō)明建筑公司簡(jiǎn)單業(yè)務(wù)的數(shù)據(jù)庫(kù)設(shè)計(jì)過程.

商務(wù)規(guī)則:公司管理很多工程。每一個(gè)工程要求很多雇員。一個(gè)雇員可以分配到幾個(gè)不同的工程。一些雇員沒有分配到工程處,而且執(zhí)行與工程不是特別相關(guān)的任務(wù)。一些雇員是勞動(dòng)供應(yīng)源的一部分,所有工程組都需要他們的服務(wù)工作。例如,公司的管理文書不分配到任何一個(gè)具體的工程。每一個(gè)雇員具有一個(gè)(單個(gè))主要的工作種類。這個(gè)工作種類決定每小時(shí)開單率。很多雇員的工作種類可能相同。例如公司雇用一個(gè)以上的電工。

§5.3非規(guī)范化

盡管規(guī)范化關(guān)系的創(chuàng)建是很重要的數(shù)據(jù)庫(kù)設(shè)計(jì)目標(biāo),但它只是很多這樣的目標(biāo)中的一個(gè)。優(yōu)秀的數(shù)據(jù)庫(kù)設(shè)計(jì)還要考慮處理要求。當(dāng)分解表來(lái)符合規(guī)范化要求時(shí),數(shù)據(jù)庫(kù)表的數(shù)量增加。加入更多數(shù)量的表占用了額外的磁盤輸入/輸出(I/O)操作和處理邏輯,因此減慢了系統(tǒng)速度。為了加快處理速度,可能有非常偶然的情況允許一

溫馨提示

  • 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)論