一、設(shè)計(jì)過程包含五個(gè)主要步驟。
第 1 步:確定實(shí)體和關(guān)系
第 2 步:確定所需數(shù)據(jù)
第 3 步:規(guī)范化數(shù)據(jù)
第 4 步:解析關(guān)系
第 5 步:驗(yàn)證設(shè)計(jì)
二、閱讀別人的概念模型圖:
不管是從左到右讀取還是從右到左讀取,下面的規(guī)則都會(huì)使讀取這些圖示變得容易:讀取 (1) 第一個(gè)實(shí)體的名稱,(2) 第一個(gè)實(shí)體 旁邊的角色,(3) 到第二個(gè)實(shí)體 的連接的基數(shù),(4) 第二個(gè)實(shí)體的名稱。
三、確定所需數(shù)據(jù)(實(shí)體屬性的設(shè)計(jì))需要注意的:
確定支持?jǐn)?shù)據(jù)時(shí),一定要參考前面確定的活動(dòng)以了解將如何訪問這些數(shù)據(jù)。
例如,在某些情況下可能需要按雇員的名字列出雇員,而在另一些情況下可能需要按姓氏列出。要滿足這兩種需要,應(yīng)創(chuàng)建一個(gè) First Name 屬性和一個(gè) Last Name 屬性,而不應(yīng)創(chuàng)建一個(gè)既包含名字又包含姓氏的屬性。將姓氏和名字分開后,以后可以創(chuàng)建兩個(gè)索引,分別適用于這兩項(xiàng)任務(wù)。
請(qǐng)選擇一致的名稱。使用一致的名稱可以使數(shù)據(jù)庫(kù)便于維護(hù),并且便于閱讀報(bào)告和輸出窗口。
例如,如果一個(gè)屬性使用了縮略名稱,如 Emp_status,則另一個(gè)屬性不應(yīng)使用完整名稱,如 Employee_ID。應(yīng)使名稱保持一致,如 Emp_status 和 Emp_ID。
在這個(gè)階段,數(shù)據(jù)是否與正確的實(shí)體相關(guān)聯(lián)并不十分重要。您可以根據(jù)自己的判斷進(jìn)行設(shè)計(jì)。在下一節(jié)中,將對(duì)設(shè)計(jì)進(jìn)行測(cè)試,檢查您的判斷是否正確。
四、規(guī)范化是指一系列測(cè)試,通過這些測(cè)試可以消除冗余的數(shù)據(jù),并確保數(shù)據(jù)與正確的實(shí)體或關(guān)系相關(guān)聯(lián)。共有五項(xiàng)測(cè)試。本節(jié)介紹其中前三項(xiàng)測(cè)試。這三項(xiàng)測(cè)試最重要,因此也最常使用。
五、范式:
數(shù)據(jù)規(guī)范化包括幾項(xiàng)測(cè)試。數(shù)據(jù)在通過了第一項(xiàng)測(cè)試后,我們認(rèn)為它滿足第一范式;通過了第二項(xiàng)測(cè)試后,它滿足第二范式;通過了第三項(xiàng)測(cè)試后,則滿足第三范式。
六、標(biāo)識(shí)符是唯一地標(biāo)識(shí)實(shí)體中各行的一組屬性,至少由一個(gè)屬性組成。
七、解析關(guān)系:
執(zhí)行完規(guī)范化過程后,設(shè)計(jì)幾乎就完成了。唯一還需要做的事情就是生成與概念數(shù)據(jù)模型相對(duì)應(yīng)的物理數(shù)據(jù)模型。這個(gè)過程也稱作解析關(guān)系,因?yàn)槠渲猩婕暗拇罅抗ぷ骶褪菍⒏拍钅P椭械年P(guān)系轉(zhuǎn)換為相應(yīng)的表和外鍵關(guān)系。
八、概念數(shù)據(jù)模型可以簡(jiǎn)化設(shè)計(jì)過程,因?yàn)樗鼘⒋罅考?xì)節(jié)隱藏起來(lái)。例如,多對(duì)多關(guān)系總會(huì)生成一個(gè)額外的表和兩個(gè)外鍵引用。在概念數(shù)據(jù)模型中,通常可以用一個(gè)連接來(lái)標(biāo)識(shí)這類結(jié)構(gòu)。
九、域(用戶定義的數(shù)據(jù)類型)
十、數(shù)據(jù)庫(kù)對(duì)象的定義構(gòu)成了數(shù)據(jù)庫(kù)模式:您可以將模式看做一個(gè)空數(shù)據(jù)庫(kù)。(是否可以理解成C#的命名空間或java里的包概念)
十一、