1. E-R模型
英文全稱:Entity-relationship model,即實體關系模型
把現實世界的 實體模型通過建模轉換為信息世界的概念模型,這個概念模型就是E-R模型
2. 數據庫設計流程
一般設計數據庫分為三個步驟
- 把現實世界的實體模型,通過建模轉換成信息世界的E-R模型;
- 信息世界的E-R模型,經過模型轉化,得到數據庫世界的數據模型;
- 把數據模型進一步規范化,得到最終的數據庫結構模型;
數據庫世界的數據模型按數據的組織形式而分為三種類型
- 關系模型(在關系數據庫設計中)
- 層次模型()
- 網狀模型()
3. 關系模型
3.1 常用概念
- 關系:可以理解為一張二維表,每個關系都具有一個關系名,也就是通常說的表名(table);
- 元組:可以理解為二維表中的一行,在數據庫中經常被稱為記錄(record);
- 屬性:可以理解為二維表中的一列,在數據庫中經常被稱為字段(colum);
- 域:屬性的取值范圍,也就是數據庫中某一列的取值限制;
- 關鍵字:一組可以唯一標識元組的屬性,數據庫中常稱為主鍵,由一個或多個列組成(key);
- 關系模式:指對關系的描述,其格式為:關系名(屬性1,屬性2,……,屬性N),在數據庫中成為表結構;
3.2 E-R圖轉關系模式
對于E-R圖中每個實體
,都應轉換為一個關系
(table)
該關系應包括對應實體的全部屬性,并應根據關系所表達的語義確定哪個屬性或哪幾個屬性組作為關鍵字
,關鍵字用下劃線標識;
3.2.1 一對一關系
比如:一個班級對應一個正班長,就是1:1
聯系
則可以創建兩個關系(表),一個班級關系(表),一個學生關系(表);
然后我們需要一個聯系(關聯)來連接這兩個關系(表)
有兩種方案:
- 聯系不單獨對應一個關系(表):
不單獨創建一個關系(表)來存儲聯系,通俗講就是在一個表中冗余一個字段存另外一個表的主鍵。
比如在學生關系(表)中添加一個班級編號屬性,用來存儲班級關系中的班級編號屬性值,
或者在班級關系(表)中添加一個學號屬性,用來存儲學生關系中的學號屬性值。 - 聯系單獨對應一個關系:
單獨創建一個關系(表)來存儲聯系,通俗講就是創建一個中間表用來存儲兩個或多個表的主鍵。
比如創建一個聯系關系(表)來存儲班級編號屬性和學號屬性,并選擇一個其他關系的主鍵(班級編號或學號都行)作為聯系關系的主鍵。
3.2.2 一對多關系
班級關系和學生關系之間的聯系是1:n
同樣地也有兩種關系模式:
-
聯系不單獨對應一個關系:
在這種1:n
的關系模式中,一般都是將1端的主鍵加入n端關系中,即在學生關系(表)中增加一個班級屬性,存儲對應的班級屬性值。 -
聯系單獨對應一個關系:
單獨創建一個聯系關系(表)來存儲班級屬性和學號屬性,并選擇n端的主鍵(學號)作為聯系關系的主鍵。
多對多關系
學生關系和課程關系之間的聯系是m:n
這種m:n
的關系只有一種關系模式:
- 聯系單獨對應一個關系:
在這里就是單獨創建一個聯系關系(表)來存儲課程號屬性和學號屬性和成績屬性,聯系關系的主鍵是由雙方的主鍵共同組成聯合主鍵。
參考資料:【E-R圖到關系模式的轉換方式,你get到了嗎】 https://www.bilibili.com/video/BV1Ju411e7Dr/?share_source=copy_web&vd_source=e22a75a6781804ee25ce46a2afc235ce