【DB筆試面試512】若實體A和B是一對多的聯繫,實體B和C是一對一的聯繫,則實體A和C的聯繫是?()

  • 2019 年 10 月 8 日
  • 筆記

題目部分

若實體A和B是一對多的聯繫,實體B和C是一對一的聯繫,則實體A和C的聯繫是?()

A、一對一

B、一對多

C、多對一

D、多對多

答案部分

本題中的關係可以使用如下的圖形來表示:

所以,本題的答案為B。

實體-聯繫模型簡稱E-R模型(Entity-Relationship Model),其圖形稱為實體-聯繫圖(Entity-Relationship Diagram),簡稱ERD。

E-R模型是人們描述數據及其聯繫的概念數據模型,是數據庫應用系統設計人員和普通非計算機專業用戶進行建模和溝通與交流的有力工具。它使用起來非常直觀易懂、簡單易行。在進行數據庫應用系統設計時,首先要根據用戶需求建立需要的E-R模型,然後再建立與計算機數據庫管理系統相適應的邏輯數據模型和物理數據模型,最後才能在計算機系統上安裝、運行數據庫。

E-R模型是一種用圖形表示數據及其聯繫的方法,所使用的圖形構件包括矩形、菱形、橢圓形和連接線等內容。其中,矩形表示實體,矩形框內寫上實體名。菱形表示聯繫,菱形框內寫上聯繫名。橢圓形表示屬性,橢圓形框內寫上屬性名。連接線表示實體、聯繫與屬性之間的所屬關係,或實體與聯繫之間的相連關係。

當採用E-R方法進行數據庫概念設計時,可以分成3步進行:首先,設計局部E-R模式,然後把各局部E-R模式綜合成一個全局的E-R模式,最後對全局E-R模式進行優化,得到最終的E-R模式,即概念模式。

E-R圖向關係模型的轉換一般遵循如下原則:

1、一個實體型轉換為一個關係模式。實體的屬性就是關係的屬性。實體的碼就是關係的碼。

例如,學生實體可以轉換為如下關係模式,其中,學號為學生關係的碼:

學生(學號,姓名,出生日期,所在系,年級,平均成績),同樣,性別、宿舍、班級、檔案材料、教師、課程、教室、教科書都分別轉換為一個關係模式。

2、一個聯繫轉化為一個關係模式,與該聯繫相連的各實體的碼以及聯繫的屬性轉化為關係的屬性,該關係的碼有如下三種情況:

v 若聯繫為1:1,則每個實體的碼均是該關係的候選碼。

v 若聯繫為1:n,則關係的碼為n端實體的碼。

v 若聯繫為m:n,則關係的碼為諸實體碼的組合。

下面分別來講解這3種情況:

① 聯繫為1:1

一個1:1聯繫可以轉換為一個獨立的關係模式,也可以與任意一端對應的關係模式合併。

a. 如果轉換為一個獨立的關係模式,那麼與該聯繫相連的各實體的碼以及聯繫本身的屬性均轉換為關係的屬性,每個實體的碼均是該關係的候選碼。

b. 如果與某一端對應的關係模式合併,那麼需要在該關係模式的屬性中加入另一個關係模式的碼和聯繫本身的屬性。

例如,「管理」聯繫為1:1聯繫,可以將其轉換為一個獨立的關係模式:

管理(職工號,班級號)或管理(職工號,班級號)

「管理」聯繫也可以與班級或教師關係模式合併。如果與班級關係模式合併,那麼只需在班級關係中加入教師關係的碼,即職工號:

班級:(班級號,學生人數,職工號)

同樣,如果與教師關係模式合併,那麼只需在教師關係中加入班級關係的碼,即班級號:

教師:(職工號,姓名,性別,職稱,班級號,是否為優秀班主任)

② 聯繫為1:n

一個1:n聯繫可以轉換為一個獨立的關係模式,也可以與n端對應的關係模式合併。

a. 如果轉換為一個獨立的關係模式,那麼與該聯繫相連的各實體的碼以及聯繫本身的屬性均轉換為關係的屬性,而關係的碼為n端實體的碼。

b. 如果與n端對應的關係模式合併,那麼在n端實體對應模式中加入1端實體所對應關係模式的碼,以及聯繫本身的屬性。而關係的碼為n端實體的碼。

例如,「組成」聯繫為1:n聯繫,將其轉換為關係模式。

一種方法是使其成為一個獨立的關係模式:

組成(學號,班級號)

學號與班級號共同構成了「組成」關係的碼。另一種方法是將其學生關係模式合併,這時學生關係模式為:

學生(學號,姓名,出生日期,所在系,年級,班級號,平均成績)

後一種方法可以減少系統中的關係個數,一般情況下更傾向於採用這種方法。

③ 聯繫為m:n

一個m:n聯繫轉換為一個關係模式。與該聯繫相連的各實體的碼以及聯繫本身的屬性均轉換為關係的屬性,而關係的碼為各實體碼的組合。

例如,「選修」聯繫是一個m:n聯繫,可以將它轉換為如下關係模式,其中,學號與課程號為關係的組合碼:

選修(學號,課程號,成績)

三個或三個以上實體間的一個多元聯繫轉換為一個關係模式。與該多元聯繫相連的各實體的碼以及聯繫本身的屬性均轉換為關係的屬性。而關係的碼為各實體碼的組合。

例如,「講授」聯繫是一個三元聯繫,可以將它轉換為如下關係模式,其中,課程號、教師號和書號為關係的組合碼:

講授(課程號,教師號,書號)

3、同一實體集的實體間的聯繫,即自聯繫,也可按上述1:1、1:n和m:n三種情況分別處理。

例如,如果教師實體集內部存在領導與被領導的1:n自聯繫,那麼可以將該聯繫與教師實體合併,這時主鍵職工號將多次出現,但作用不同,可用不同的屬性名加以區分,例如在合併後的關係模式中,主鍵仍為職工號,再增設一個「系主任」屬性,存放相應系主任的職工號。

4、具有相同碼的關係模式可合併。

為了減少系統中的關係個數,如果兩個關係模式具有相同的主鍵,那麼可以考慮將它們合併為一個關係模式。合併方法是將其中一個關係模式的全部屬性加入到另一個關係模式中,然後去掉其中的同義屬性(可能同名也可能不同名),並適當調整屬性的次序。

假如有一個「擁有」關係模式:擁有(學號,性別)

有一個學生關係模式:學生(學號,姓名,出生日期,所在系,年級,班級號,平均成績)

這兩個關係模式都以學號為碼,可以將它們合併為一個關係模式,假設合併後的關係模式仍叫學生:

學生(學號,姓名,性別,出生日期,所在系,年級,班級號,平均成績)

按照上述4條原則,學生管理子系統中的18個實體和聯繫可以轉換為下列關係模型:

l 學生(學號,姓名,性別,出生日期,所在系,年級,班級號,平均成績,檔案號)

l 性別(性別,宿舍樓)

l 宿舍(宿舍編號,地址,性別,人數)

l 班級(班級號,學生人數)

l 教師(職工號,姓名,性別,職稱,班級號,是否為優秀班主任)

l 教學(職工號,學號)

l 課程(課程號,課程名,學分,教室號)

l 選修(學號,課程號,成績)

l 教科書(書號,書名,價錢)

l 教室(教室編號,地址,容量)

l 講授(課程號,教師號,書號)

l 檔案材料(檔案號,……)

該關係模型由12個關係模式組成。其中,學生關係模式包含了「擁有」聯繫、「組成」聯繫、「歸檔」聯繫所對應的關係模式;教師關係模式包含了「管理」聯繫所對應的關係模式;宿舍關係模式包含了「住宿」聯繫所對應的關係模式;課程關係模式包含了「開設」聯繫所對應的關係模式。

本文選自《數據庫程序員面試筆試寶典》,作者:李華榮。