數據庫設計-邏輯設計
概念結構設計:
定義:將需求分析得到的用戶需求抽象成信息結構,即概念模型。
概念模型:通常的描述工具是E-R模型圖。
數據庫概念模型的設計方法:
概念設計的步驟:
- 進行數據抽象,設計局部概念模式
- 分解法:將一個大的需求分解成一個個的小的需求,具體到單個用戶的基本需求,為每個用戶或用戶組建立一個對應的局部E-R模型
- 常用抽象方法:
- 聚集:將若干對象和它們之間的聯系組合成一個新的對象。
- 例如:學生屬性信息(學號,姓名,性別)聚集成一個學生實體。
- 概括:將一組具有某些共同特征的對象合並成更高層面的對象。
- 例如:對不同學生(本科生,研究生)統一概括出共同特征,並抽象成學生實體。
- 聚集:將若干對象和它們之間的聯系組合成一個新的對象。
- 將局部概念模式綜合成全局概念模式
- 將各個局部概念模式合並成一個全局概念模式。
- 解決冗余問題
- 解決對象定義不一致問題:同名異意,異名同意。
概念設計中涉及到的專有名詞:
-
-
- 關系:一個關系對應一張表。
- 元組:一個元組對應表中的一行記錄。
- 屬性:一個屬性對應表中的一列記錄。
- 主屬性:候選碼中出現的屬性。
- 非主屬性:沒有在任何候選碼中出現。
- 候選碼:可以唯一標識元組的屬性組。
- 主碼:候選碼之中的一個。
- 域:屬性的取值范圍。
- 分量:元組中的一個屬性值。
-
ER圖圖例說明:
-
-
- 矩形:表示實體集。
- 菱形:聯系集。
- 橢圓:實體的屬性。
- 線段:實體與屬性之間的聯系。
-
局部概念結構設計:
- 選擇局部應用:根據系統具體情況,在多層的數據流圖中選擇一個適當層次的數據流圖,從該數據流圖出發,設計局部E-R模型。
- 逐一設計局部E-R模型:參照數據字典和數據流圖,確定每個局部應用應該包含那些實體,實體有包含那些屬性,以及實體之間的聯系和類型。
- 實體的定義:現實世界中事物。
- 例如:學生
- 屬性的定義:描述實體的性質。
- 例如:學號,姓名,性別
聯系的定義:實體之間的關系:一對一;一對多;多對多。
- 例如:一個學生對應一個班級,一個班級對應多個學生,多個老師對應多個班級。
- 實體的定義:現實世界中事物。
全局概念結構設計:
- 合並局部E-R模型,生成初步的全局E-R圖。
合並原則:
- 進行兩兩合並。
- 先合並那些與現實世界有聯系的局部結構。
- 合並從公共實體類型開始,最后在加入獨立的局部結構。
2.E-R圖中沖突:
- 屬性沖突:
- 屬性值域沖突:屬性值的類型,取值范圍,取值集合不同。
- 例如:學生學號,有的為數值型,有的為字符型。
- 屬性的取值單位沖突。
- 例如:學生身高,有的以m為單位,有的以cm為單位。
- 屬性值域沖突:屬性值的類型,取值范圍,取值集合不同。
- 命名沖突:
- 同名異義:同一個名字的對象在不同的實體里具有不同的含義。
- 例如:學校A中以學生為單位,學校B中以班級為單位,
- 異名同義:同一個含義的對象在不同的是實體中具有不同的名稱。
- 例如:有的學生把計算機教室稱為機房,有的學生把計算機教室稱為實驗室。
- 同名異義:同一個名字的對象在不同的實體里具有不同的含義。
- 結構沖突:
- 同一對象在不同應用中有不同的抽象,可能為實體,也可能為屬性。
- 例如:學生可以為實體,也可以是班級實體的一個屬性。
- 同一對象在不同應用中屬性組成不同。
- 例如:學生在班級中的所擁有的屬性,和學生在檔案中的所擁有的屬性個數不一樣。
- 同一聯系在不同應用中有不同的類型。
- 在學校,學生和老師是多對一的關系;在家教中,學生和老師是一對一的關系。
- 同一對象在不同應用中有不同的抽象,可能為實體,也可能為屬性。
邏輯結構設計階段:
概念結構設計階段得到的E-R模型是獨立與任何一種數據模型的信息結構,是一個與具體DBMS無關的設計概念。
任務:將概念結構設計的E-R模型轉換成與選用具體機器上的DBMS所支持的數據模型相符合的邏輯結構。
步驟:
- 將概念結構轉換成為一般的關系模型。
- 將轉換來的關系模型想特定的DBMS支持下的數據模型轉換。
- 依據應用的需求和具體的DBMS的特點進行調整和完善。
E-R圖向關系模型的轉換:
-
- 實體類型的轉換。
- 每個實體類型->關系模式,實體的屬性集為關系的屬性,實體的標識符便是關系的碼。
- 聯系類型的轉換。
- 1:1聯系:在任意一個關系的屬性中加入另一個關系的碼和聯系類型的屬性,通常兩個實體可以直接合並成一個實體。
- 1:N聯系:在N端關系的屬性中加入1端關系的碼和聯系類型的屬性。
- M:N聯系:兩端關系的碼加上聯系類型的屬性,碼為兩端碼的組合。
- 實體類型的轉換。
網上商城數據庫ER圖:
以上僅為本人學習過程中的知識總結,若有錯誤,還請諸位不吝賜教。