1. 程式人生 > 其它 >4.3資料庫建模設計:三個階段

4.3資料庫建模設計:三個階段

4.3資料庫建模設計

由4.1節可知,資料庫設計分為概念設計、邏輯設計和物理設計3個階段,

設計人員在各個階段分別進行概念資料模型設計、邏輯資料模型設計和物理資料模型設計。

4.3.1概念資料模型設計(CDM)

採用E-R模型描述系統的資料物件組成結構

1.抽取與標識實體

【例】針對一個圖書銷售管理系統資料需求,我們可以抽取出“圖書”“商店”“銷售”“折扣”“作者”“出版社”實體

2.分析與標識實體聯絡

【例】分析各種實體之間的聯絡,給出該聯絡的名稱

3.定義實體屬性與識別符號

給出屬性名稱、給出識別符號、取值約束等說明;

【可選項:定義屬性值域,以限定屬性的取值範圍、屬性是否允許 空值、屬性的預設值、屬性值檢查規則等。】

4.檢查與完善概念資料模型

一個較大規模系統或複雜系統的概念資料模型設計不可能一步完成,需要不斷完善

【例】對圖書銷售管理系統E-R模型,我們增加“庫存”實體,並與“圖書”“商店”實體建立聯絡。又增加“圖書類別”實體,並將它與“圖書”實體建立聯絡。

4.3.2邏輯資料模型設計(LDM)

是概念資料模型在系統設計角度的延伸,它使系統的E-R模型圖體現資料庫模型的針對性【規範化】

邏輯資料模型與概念資料模型的主要區別如下。

(1)邏輯資料模型比概念資料模型對資訊系統資料結構的描述更具體,不但有業務實體,也有新增的、便於資訊 化處理的資料實體。

(2)邏輯資料模型將概念資料模型的多對多實體聯絡轉化為易於關係資料庫實現的一對多實體聯絡。

(3)邏輯資料模型將概念資料模型中的識別符號依賴實體進一步細化,並區分主鍵識別符號和外來鍵識別符號,以便於數 據模型規範化處理。

1.CDM/LDM轉換

【例】圖書銷售管理系統概念資料模型轉換為邏輯資料模型

  • 屬性定義加強,如在每個實體中分別標識主鍵識別符號及外來鍵識別符號。
  • 將CDM中存在的實體間多對多聯絡,轉換為通過關聯實體與原實體之間的一對多聯絡
    • (如“編著”實體)在(“作者”“圖書”)之間,直接轉換為一對多

2.規範化與完善邏輯資料模型設計

使達到3NF正規化,即實體中非鍵屬性僅依賴於主鍵屬性。

【例】通過分析圖4-21所示的圖書銷售管理系統邏輯資料模型

  • 1、“作者”實體不符合關係數 據庫設計規範的3NF正規化,其中的“省”“城市”屬性存在傳遞依賴。
  • 2、新引入的關聯實體“編著”的名稱不太確 切,其屬性僅僅只有所依賴實體的識別符號,缺少自身屬性。

完善設計

  • 1、增加“地區表”實體,並將它與“作者”實體建立聯絡,同時刪 除“作者”實體中的“省”“城市”屬性,從而在“作者”關係表中可通過地區編碼方式實現一致的地區名稱輸入。
  • 2、修訂關聯實體“編著”名稱為“編著排名”,並增加“排位順序”屬性,從而使該實體資料具有實際意義。

4.3.3物理資料模型設計

不再使用E-R圖來描述資料模型結構,而需要考慮將實體如何轉換為資料庫表

設計步驟

(1)將E-R模型圖中每一個實體對應轉換成一個關係表,實體屬性轉換為對應表的列,實體識別符號轉換為對應表 的主鍵。

(2)將實體聯絡轉換為關係表之間的主、外來鍵關係,並定義表之間的參照完整性約束。

(3)完善系統的關係模型圖,並在模型中擴充套件定義檢視、索引、儲存過程及觸發器等資料庫物件。

1.實體到關係表的轉換

首先為每個實體定義一個關係表,其表名與實體名相同;

  • 屬性----表中的列
  • 識別符號----表中的鍵
  • 主鍵識別符號----主鍵
  • 外來鍵----外來鍵
  • 代理鍵設定【可選】
    • 當關系表中的候選鍵都不適合當主鍵時(例如,候選鍵的資料型別為複雜資料或者候選鍵 由多個屬性組成),就可以使用代理鍵作為主鍵。
  • 列特性設定【可選】
    • 我們在將實體的屬性轉換為關係表的列時,必須為每個列定義特性,包括資料型別、空值狀態、預設值及取值約 束。 【需要注意的是,只有設定了not null標註,才可以設定預設值】

【例】

2.弱實體到關係表的轉換

前面描述的實體轉換為關係表的方式適用於E-R模型的所有實體型別,但弱實體轉換關係表還需要特別的處理。

  • 當弱實體為非識別符號依賴於一個強實體時,我們應在弱實體轉換的關係表中加入強實體識別符號作為外來鍵列
  • 而當實體為識別符號依賴於一個強實體時,我們不但應在弱實體轉換的關係表中加入強實體識別符號作為外來鍵列,同時也作為該表的主鍵列

例:非識別符號依賴的轉換】圖中的“銷售訂單”實體在邏輯上依賴於“銷售員”實體。它們之間的實體聯絡為一對多。

“銷售訂單”實體是非識別符號依賴弱實體,因為它有自己獨立的識別符號“訂單編號”。

例:識別符號依賴的轉換】識別符號依賴的強實體識別符號不但在“訂單明細”關係表中作為主鍵,同時也作為外來鍵,並與訂單明細實體的識別符號“訂單明細編號”共同構成複合主鍵

3.實體聯絡的轉換

(1)1:1實體聯絡的轉換

實體分別轉換為關係表,將其中一個表的主鍵放入另一個表中作為外來鍵。

【例4-11】在圖4-28所示的E-R模型中,“學生”實體與“助研金髮放賬號”實體存在1:1實體聯絡。

  • 這裡有兩種方法,如圖a、圖b所示
(2)1:N實體聯絡的轉換 【最常見】

實體分別轉換為關係表,並將1端關係表的主鍵放入N端關係表中作為外來鍵。

【例】在圖4-30所示的E-R模型中,“班級”實體與“學生”實體存在1:N實體聯絡。

  • 轉換後,將一個“班級”關係表的主鍵放入“學生”關係表中作為外來鍵,如圖4-31所示。
(3)M:N實體聯絡的轉換
  • M:N實體聯絡不能像表示1:1和1:N實體聯絡那樣直接轉換關係表。

  • 除了關聯的實體均轉換為對應的關係表外,我們還增加一個關係表,作為關聯表與實體的關係表建立參照約束。

  • 將任意一個實體關係表的主鍵放置到另一個實體 關係表中作為外來鍵,均是不正確的。

【例4-13】“課程”實體與“學生”實體存在M:N聯絡。

  • 增加一個關聯表,並命名為聯絡名

  • 新增的關聯表共有兩個列分別來自“學生”表的主鍵和“課程”表的主鍵。這兩個列構成關聯表的複合主鍵, 同時它們也是外來鍵。

  • 在使用關聯表時,我們還必須對該表的屬性列進行完善,不能只有已知的兩個主鍵對吧,如增加“成績”列。

(4)實體繼承聯絡的轉換

實體繼承聯絡用來描述實體之間的相似性關係。

當E-R模型轉換到關係模型時,父表屬性應放到子表中作為外來鍵。

【例】在圖4-34所示的E-R模型中,“本科生”“研究生”實體與“學生”實體存在分類繼承聯絡。

方法1:

  • 只把父表的主鍵加入子表中作主鍵、外來鍵。“研究生”“本科生”它們公共的屬性放置在“學生”關係表內。
  • 這種轉換方案可以減少表之間的冗餘資料,但進行學生資訊查詢時,需關聯父表和子表才能完成

方法2:

  • 父表的主鍵放入子表中既作為主鍵又作為外來鍵並把父表中所有能容新增到子表中。
  • 這種方案存在表間資料冗餘,但針對本科生或研究生的資訊查詢只需要在子表中完成,效率較高
(5)實體遞迴聯絡的轉換
  • 遞迴聯絡是同一類實體之間所發生的聯絡。

  • 在表中加入另一個外來鍵屬性參照本表主鍵屬性。

  • 當將M:N的實體遞迴聯絡轉換為關係模型時,我們需要增加關聯表來參照約束原實體關係表。

情況1:N

【例】在圖4-37所示的E-R模型中,“顧客”實體為遞迴實體,該遞迴實體之間為1:N實體聯絡。

  • 該E-R模型描述了“顧客”實體之間存在的1:N遞迴聯絡,即每個顧客都可以推薦N個新客戶,每個客戶只能被一個人推薦
  • 對僅有的這個實體轉換為關係表,並在該關係表中增加一個外來鍵其值參照約束於主鍵

情況M:N

【例】在圖4-39所示的E-R模型中,“醫生”實體為遞迴實體,該遞迴實體之間為M:N實體聯絡

  • 醫生相互治療
  • 對醫生實體轉化為關係表,並由聯絡派生出“治療”表
  • 遞迴關係兩端是同一張表,因此我們將醫生表的主鍵加入派生表兩次,以構成複合主鍵【列名要唯一】

一個E-R模型轉換到關係模型的整體系統物理資料模型設計。