一 邏輯模型中的信息可以用三個概念來描述:
(1) 實體(如果一個對象擁有許多特性和值,那么它可能是個實體)
(2) 屬性(如果一個對象擁有一個特性的值,那么它可能是屬性)
(3) 關(guān)系(如果一個對象的描述包含了一個動詞短語,那么它可能是關(guān)系)
二 數(shù)據(jù)庫設(shè)計可以分成以下四個部分
(1)表關(guān)系的規(guī)范化和完善。
(2)實體、數(shù)據(jù)和關(guān)系完整性的判別。
(3)創(chuàng)建數(shù)據(jù)的物理示意圖。
(4)創(chuàng)建數(shù)據(jù)庫對象(觸發(fā)器、存儲過程和索引)。
數(shù)據(jù)規(guī)范化的五個層次:
(1)消除重復(fù)的數(shù)據(jù)組(1NF,或第一范式)
(2)消除多余的數(shù)據(jù)(2NF,或第二范式)
(3)消除不依賴于鍵標的列(3NF,或第三范式)
(4)分離獨立的多個關(guān)系(4NF,或第四范式)
(5)分離語義相關(guān)的多個關(guān)系(5NF,或第五范式)
技巧:為了實現(xiàn)3NF的數(shù)據(jù)庫設(shè)計,一個簡單的規(guī)則就是記住每個屬性都必須依附于該鍵標而且只能包含定義該鍵標的那些項目。
注意:第三范式對于大多數(shù)數(shù)據(jù)庫已足夠了,但是它還不能完全處理下面這樣的情形:一個實體有兩個或多個侯選鍵標,他們是組合鍵標并且至少有一個公用屬性。為了彌補這種不足,引入了修正的第三范式,稱為BCNF。
三 數(shù)據(jù)完整性
(1)實體完整性。每個行是包含該含的實體的惟一實體。這類完整性通常是通過在主鍵標字段生成一個惟一索引強行的實現(xiàn)。
(2)域完整性。確保實際數(shù)據(jù)值的正確性。這類完整性是通過設(shè)置數(shù)據(jù)類型、空值能力和數(shù)據(jù)庫規(guī)劃以及缺省而強制實現(xiàn)的。
(3)引用完整性。確保外部鍵標值與父表中主鍵標值正確匹配。這類完整性還用于限制或級聯(lián)從父實體到子實體的變化。這類完整性通常是用觸發(fā)器或是其他聲明的引用完整性約束實現(xiàn)的。
四 三層結(jié)構(gòu)理論
它是一種邏輯上的層次劃分,它將應(yīng)用功能分成用戶界面層、中間層和數(shù)據(jù)層。三層結(jié)構(gòu)業(yè)務(wù)處理流程圖如下:
五 數(shù)據(jù)庫設(shè)計
(1)包括兩個組成部分:邏輯設(shè)計和物理設(shè)計。邏輯數(shù)據(jù)庫設(shè)計包括使用數(shù)據(jù)庫組件為業(yè)務(wù)需求進行數(shù)據(jù)建模。物理數(shù)據(jù)設(shè)計將邏輯設(shè)計映射到物理媒體上。
(2)數(shù)據(jù)庫建模板工具:個人還是不喜歡用visio,更喜歡用powerdesigner,因為前者將邏輯設(shè)計和物理設(shè)計揉到一塊,這種一步到位的設(shè)計總是不那么嚴謹,需要靠經(jīng)驗來保證數(shù)據(jù)庫設(shè)計的合理性,而后者的概念視圖和物理視圖,將數(shù)據(jù)庫概念的理論知識在實踐得到很好應(yīng)用,經(jīng)驗和理論都可以得到發(fā)揮.打個不恰當?shù)谋确?一步到位的設(shè)計,有點想VB是弱類型的,變量的定義,可以不管類型,編譯不出錯,但是運行時不合理的類型轉(zhuǎn)換是會出錯的,所以需要經(jīng)驗來保證類型的一致性,而C#的是強類型的,編譯時就可以檢查類型處理的是否合理,所以大部分類型轉(zhuǎn)換錯誤都可以在編譯期間發(fā)現(xiàn). 當然,如果讓我寫文檔,那無疑前者是很好的繪圖工具,各種各樣的流程圖繪起來非常方便!