數(shù)據(jù)庫反規(guī)范化_第1頁
數(shù)據(jù)庫反規(guī)范化_第2頁
數(shù)據(jù)庫反規(guī)范化_第3頁
數(shù)據(jù)庫反規(guī)范化_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、反規(guī)范化目標(biāo):確定是否放松規(guī)范化規(guī)則程度引入受控冗余數(shù)據(jù)來改善系統(tǒng)性能。為什么要加入反規(guī)范化呢,原因在于規(guī)范化的目標(biāo)是減少冗余和提高表設(shè)計(jì)的靈活性,但是與此同時(shí)也增 加了在查詢數(shù)據(jù)連接查詢的難度。如果系統(tǒng)對(duì)查詢的頻率和性能要求很高,那么我們就不能不在設(shè)計(jì)和冗 余上權(quán)衡,已得到一個(gè)折中的解決方法。而而折中的方式就是引入受控冗余來降低規(guī)范化程度。當(dāng)然反規(guī)范化確實(shí)帶來了不少缺點(diǎn):1. 反規(guī)范化是實(shí)現(xiàn)更加復(fù)雜2. 反規(guī)范化經(jīng)常會(huì)犧牲設(shè)計(jì)的靈活性3. 反規(guī)范化可能加快檢索速度,但是會(huì)減低更新和插入數(shù)據(jù)的速度對(duì)于反規(guī)范化,有以下類型可遵循的:1. 合并一對(duì)一的關(guān)系這個(gè)很容易理解,對(duì)于兩個(gè)已有的一對(duì)一關(guān)系的

2、表,將其合并,并選擇其中的一個(gè)表的主鍵作為新表的主鍵。2. 復(fù)雜一對(duì)多關(guān)系的非鍵列來減少連接查詢?yōu)榱藴p少或刪除經(jīng)常性的查詢鏈接,我們可以考慮對(duì)于一個(gè)1:n關(guān)系的兩個(gè)表添加冗余項(xiàng),其實(shí)際操作是在1關(guān)系中的主表中選取岀經(jīng)常被 n關(guān)系的表連接訪問的屬性,直接冗余添加的n關(guān)系表中。 例子:簾 studentidS(fepticl<FK)deptdeptid> sex7 name這是一個(gè)學(xué)生-部門表關(guān)系,假設(shè)如果系統(tǒng)每天要通過student表中的deptid外鍵來查詢department 的deptname ,而且其頻率是10000 / day 。很明顯,通過 student 表中的dept

3、id 外鍵來查詢department的deptname必須通過連接查詢才能得到相關(guān)結(jié)果,而連接查詢往往起查詢速度慢直接表查詢一個(gè)數(shù)量級(jí),在高頻率訪問的條件下,引入冗余,改造表來減低規(guī)范化程度如下:Stmlei it9 studentid ®deptj£t(FK)depttd dept n 甘 rr 日 deptQ sexQ named e ptname在student表中添加冗余項(xiàng) deptname。這樣可以大大的減少在此關(guān)系上的鏈接查詢,進(jìn)入提高的 系統(tǒng)的性能。3. 復(fù)制多對(duì)多關(guān)系中的列來減少連接查詢對(duì)于n : m關(guān)系的表,舉個(gè)例子,其表結(jié)構(gòu)應(yīng)該是:Student : T

4、eacher :每一個(gè)學(xué)生都可以由多個(gè)老師教,每個(gè)老師也可以教多個(gè)學(xué)生。對(duì)于這樣的一個(gè)表結(jié)構(gòu),其連接查詢就在于用關(guān)系表的外鍵來查詢student和teacher表中相關(guān)的數(shù)據(jù)。,和明顯,這里包含了兩個(gè)連接步驟,如果查詢頻率過高,那么連接查詢總體消耗的效率那就不言而喻了。對(duì)于這樣 的表,弓I入冗余點(diǎn)在于在 stu_tea表中田間student或teacher表中的一些關(guān)鍵列,這些列式經(jīng)常通過 連接查詢得到的。假設(shè)經(jīng)常被連接查詢的關(guān)鍵列式 和teacher.teachername。那可以考慮將這兩列加入到stu_tea中。這樣可以極大的減少連接查詢的次數(shù)。事 student

5、id> depl J sex/ nameUiljM伽cl儻*te ache ridleathernamei idSB studentid (Fk) WltachaFid CFK)z sludenthame這樣添加了 teachername 和studentname ,減少了連接查詢這兩項(xiàng)屬性的必要性。4. 引入重復(fù)列減少連接查詢。其實(shí)在1NF是我們就要消除重復(fù)屬性列,一般一個(gè)表擁有重復(fù)屬性列是因?yàn)樗麚碛辛硕嘀祵傩裕?NF中,我們一般都會(huì)將重復(fù)屬性列拆解,將其分為一個(gè)1 :n的關(guān)系,1關(guān)系代表主表,n代表重復(fù)屬性列值。但是如果考慮到我們?cè)诓樵冎貜?fù)屬性列值的頻率很高的情況下,那也可以考慮引

6、入重復(fù)列來消GO卩PH呼羽 companyidname3 address1除連接查詢。例子:r«i3 lelidS companyid (FK)-J numb&r一個(gè)公司通常擁有過個(gè)辦公電話,則有company : tel = 1 : n 。為了得到某個(gè)某個(gè)公司的電話號(hào)碼,我們必須先查詢到相關(guān)公司的companyid ,然后在從tel表中查詢相關(guān)的電話號(hào)碼。如果這樣的查詢太過頻繁,我們可以考慮的解決方法是:company鼻 compared丿 name? address丿 tslnumberlj teinumbotiy tekumber35. 使用分區(qū)表使用分區(qū)表通常都是用來解決一個(gè)含有非常大量數(shù)據(jù)的表的方法。對(duì)于這樣的一個(gè)分解,有兩種方法可選:水平分區(qū)法20:80 :將表中的記錄分開放到幾個(gè)較小的表。垂直分區(qū)法: 將表中的列分布在一些較小的表中,通過復(fù)制原表的主鍵來保證可以重構(gòu)原表。當(dāng)然,反規(guī)范化的確加重了數(shù)據(jù)庫維護(hù)數(shù)據(jù)完整性的代價(jià),為了很好的保證數(shù)據(jù)庫數(shù)據(jù)的一致 性,我們可以選擇的幾種解決事務(wù)處理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論