精選了其中的 60 個(gè)最佳技巧,并把這些技巧編寫(xiě)成了本文,為了方便索引其內容劃分為 5 個(gè)部分:
第一部分介紹了設計數據庫之前12個(gè)基本技巧,包括命名規范和明確業(yè)務(wù)需求等(數據庫設計經(jīng)驗談(1) );第二部分介紹設計數據庫表24個(gè)指南性技巧,涵蓋表內字段設計以及應該避免的常見(jiàn)問(wèn)題等(數據庫設計經(jīng)驗談 (2) );第三部分主要介紹選擇鍵和索引,包含10個(gè)技巧專(zhuān)門(mén)涉及系統生成的主鍵的正確用法,還有何時(shí)以及如何索引字段以獲得最佳性能等(數據庫設計經(jīng)驗談 (3) )。本次第四部分主要討論保證數據完整性,如何保持數據庫的清晰和健壯,如何把有害數據降低到最小程度。
第 4 部分 - 保證數據的完整性
用約束而非商務(wù)規則強制數據完整性
如果你按照商務(wù)規則來(lái)處理需求,那么你應當檢查商務(wù)層次/用戶(hù)界面:如果商務(wù)規則以后發(fā)生變化,那么只需要進(jìn)行更新即可。假如需求源于維護數據完整性的需要,那么在數據庫層面上需要施加限制條件。如果你在數據層確實(shí)采用了約束,你要保證有辦法把更新不能通過(guò)約束檢查的原因采用用戶(hù)理解的語(yǔ)言通知用戶(hù)界面。除非你的字段命名很冗長(cháng),否則字段名本身還不夠。
只要有可能,請采用數據庫系統實(shí)現數據的完整性。這不但包括通過(guò)標準化實(shí)現的完整性而且還包括數據的功能性。在寫(xiě)數據的時(shí)候還可以增加觸發(fā)器來(lái)保證數據的正確性。不要依賴(lài)于商務(wù)層保證數據完整性;它不能保證表之間(外鍵)的完整性所以不能強加于其他完整性規則之上。
分布式數據系統
對分布式系統而言,在你決定是否在各個(gè)站點(diǎn)復制所有數據還是把數據保存在一個(gè)地方之前應該估計一下未來(lái) 5 年或者 10 年的數據量。當你把數據傳送到其他站點(diǎn)的時(shí)候,最好在數據庫字段中設置一些標記。在目的站點(diǎn)收到你的數據之后更新你的標記。為了進(jìn)行這種數據傳輸,請寫(xiě)下你自己的批處理或者調度程序以特定時(shí)間間隔運行而不要讓用戶(hù)在每天的工作后傳輸數據。本地拷貝你的維護數據,比如計算常數和利息率等,設置版本號保證數據在每個(gè)站點(diǎn)都完全一致。
強制指示完整性(參照完整性)
沒(méi)有好辦法能在有害數據進(jìn)入數據庫之后消除它,所以你應該在它進(jìn)入數據庫之前將其剔除。激活數據庫系統的指示完整性特性。這樣可以保持數據的清潔而能迫使開(kāi)發(fā)人員投入更多的時(shí)間處理錯誤條件。
關(guān)系
如果兩個(gè)實(shí)體之間存在多對一關(guān)系,而且還有可能轉化為多對多關(guān)系,那么你最好一開(kāi)始就設置成多對多關(guān)系。從現有的多對一關(guān)系轉變?yōu)槎鄬Χ嚓P(guān)系比一開(kāi)始就是多對多關(guān)系要難得多。
采用視圖
為了在你的數據庫和你的應用程序代碼之間提供另一層抽象,你可以為你的應用程序建立專(zhuān)門(mén)的視圖而不必非要應用程序直接訪(fǎng)問(wèn)數據表。這樣做還等于在處理數據庫變更時(shí)給你提供了更多的自由。
給數據保有和恢復制定計劃
考慮數據保有策略并包含在設計過(guò)程中,預先設計你的數據恢復過(guò)程。采用可以發(fā)布給用戶(hù)/開(kāi)發(fā)人員的數據字典實(shí)現方便的數據識別同時(shí)保證對數據源文檔化。編寫(xiě)在線(xiàn)更新來(lái)“更新查詢(xún)”供以后萬(wàn)一數據丟失可以重新處理更新。
用存儲過(guò)程讓系統做重活
解決了許多麻煩來(lái)產(chǎn)生一個(gè)具有高度完整性的數據庫解決方案之后,我決定封裝一些關(guān)聯(lián)表的功能組,提供一整套常規的存儲過(guò)程來(lái)訪(fǎng)問(wèn)各組以便加快速度和簡(jiǎn)化客戶(hù)程序代碼的開(kāi)發(fā)。數據庫不只是一個(gè)存放數據的地方,它也是簡(jiǎn)化編碼之地。
使用查找
控制數據完整性的最佳方式就是限制用戶(hù)的選擇。只要有可能都應該提供給用戶(hù)一個(gè)清晰的價(jià)值列表供其選擇。這樣將減少鍵入代碼的錯誤和誤解同時(shí)提供數據的一致性。某些公共數據特別適合查找:國家代碼、狀態(tài)代碼等。
預告:在第五部分將介紹各種小技巧,不包括在以上 4 個(gè)部分中的其他技巧,五花八門(mén),有了它們希望你的數據庫開(kāi)發(fā)工作會(huì )更輕松一些。
相關(guān)推薦:2010年全國計算機等考二級C:程序設計實(shí)戰匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |