習題題庫 [第二章:實體關係模式-基本概念]
習題2-1
考慮圖 2-16 的 ERD,
• 假設我們將實體型態「Transaction 」裡的 transTime 屬性移至關係型態「Confirms」,請問是否仍然正確?如果將 transTime 移至實體型態「Member」呢?
• 假設我們將關係型態「Records」裡的 amount 和 salePrice 屬性移至實體型態「Transaction」或「Product」,請問是否仍然正確?
 
習題2-2
假設我們要記載學生和他的緊急聯絡人的資料。一位學生可有多位緊急聯絡人,且每一緊急聯絡人的姓名和電話要記載。此時你可以有以下兩種方式來表達:
1. 產生一個名為 “學生” 的實體型態,並有一個多值複合的屬性 “緊急聯絡人”。
2. 產生一個名為 “學生” 的實體型態,並產生一個弱實體型態 “緊急聯絡人”。
請畫出這兩種方式的 ERD 並探討在哪一種情況下該採用哪一種方式。
 
習題2-3
考慮以下關係型態 R

假設有 2 位老師 (t1, t2) 和3 位學生 (s1, s2, s3),則以下何者為符合 R 定義的關係。
A.
Teacher Student
t1 s1
t1
t2
s2
s3
t2 s1
B.
Teacher Student
t1 s1
t2 s2
C.
Teacher Student
t1 s1
t2 s2
t1 s3
D.
Teacher Student
t1 s1
t2 s2
t1
t1
s1
s3
E.
Teacher Student
t1 s1
t1
s2
t1
t2
s3
s1
F.
Teacher Student
t1 s1
t1 s2
t1 s3
G.
Teacher Student
t1
t2
s1
s1
t1
s2
t2 s2
 
習題2-4
考慮以下識別關係型態 Has

假設有 2 個會員 (M1, M2),4 台購物車 (C1, C2, C3, C4),購物車的屬性如下:
 
購物車 cartTime products
C1 7:10am {p1, p2}
C2 7:10am {p3}
C3
C4
8am
8am
{p4, p5}
{p4, p5}

則以下何者為符合 Has 定義的關係。
A.
Member Cart
M1
M1
C1
C2
M2 C3
M2 C4

B.
Member Cart
M1
M2
C1
C2
M1 C3
M2 C4

C.
Member Cart
M1 C1
M2 C3
M2 C4

D.
Member Cart
M1 C1
M2
M2
C2
C3
M1 C4

E .
Member Cart
M1 C1
M1
C2
M1
M2
C2
C3
M2 C4

F.
Member Cart
M1 C1
M1 C1
M2
M2
C3
C4

G.
Member Cart
M1
M1
C1
C2
M1 C3
M1 C4
 
習題2-5
假設你想記載課程〔Course〕資訊,包括上課老師〔Teacher〕、教室〔Room〕、和教科書〔Book〕。其資料需求如下:
• 老師包括身分證字號 (pId) 和姓名 (name)。
• 課程包括課程編號 (cId)、開課學期 (semester)、課程敘述 (desc),其中課程編號和開課學期合起來是唯一。
• 教科書包括書名 (bookName)、作者 (authors) 和出版社 (publisher),其中作者可以有多位,沒有任一個屬性是唯一。但教科書一定要被至少一個課程採用。
• 上課教室包括教室編號 (rId) 和地點 (rLoc)。
• 每一門課只能有一位授課老師。
• 每一門課可以使用多本書當教科書,但這些書的書名必然不同。
• 每一門課至少需要用到一間教室。

以下是資料庫設計師張三所繪出的 ERD:



1. 請針對以上需求,指出張三所犯的錯誤。
2. 請繪出可以滿足以上所有需求的 ERD。
 
習題2-6
假設你要記載球隊的比賽日期和結果,考慮以下的 ERD:



1. 請指出該 ERD 的缺點。
2. 請針對你所提的缺點修正此 ERD。
 
習題2-7
請為台灣總統選舉的民調繪一 ERD,至少包含以下三種實體型態:
候選人 (Candidate):總統和副總統候選人﹔眷屬(Dependent):候選人的配偶或子女﹔選民 (Voter):民調時所詢問的對象。這三個實體型態有以下的性質:

• 候選人的登記號 (regNo)、候選職位 (position)、姓名 (name)、出生年月日(birthday)、學歷 (degrees) 與經歷 (experience) 要記載。其中學歷與經歷可能有多項資料。登記號和候選職位合起來為唯一。
• 眷屬的姓名 (name)、出生年月日 (birthday)、國籍 (nationalities) 要記載。其中國籍可能有一個以上。沒有任何一個屬性是唯一,但每一候選人之眷屬姓名必然不同。
• 選民的教育程度 (education)、民調日期 (date)、設籍縣市 (residence) 要記載。
由於沒有任何屬性是唯一,可加一流水號屬性 (seq) 成關鍵屬性。

此外,以下的關係型態要記載:
• 候選人和眷屬的關係﹔選民與候選人有兩個關係:投票對象和認為最可能當選者。
按照以上需求,請畫出一 ERD。必要的話,也可自行假設其他相關狀況,但必須寫清楚。
 
習題2-8
假設你要替一個大學圖書館製作一新書推薦系統。該系統可以記載讀者的興趣,當每個月的新書編目完時,該系統即可按讀者興趣選擇性的將某些新書資訊email 給讀者。此一系統的資料需求如下:

• 新書 (Book):包括分類號 (callNumber)、書名 (title)、作者姓名 (authorName)、關鍵字 (keyword),且一本書的作者可能有多位,其關鍵字也可能有多個。分類號為唯一。
• 書類別 (Callcategory):包括分類編號 (categoryId)、分類名稱 (categoryName),其中分類編號為唯一。由於分類方式是階層式的,一類別和其父類別間有一關係型態 (Parent)。
• 讀者 (Patron):讀者需記載讀者編號 (patronId)、姓名 (name)、身分 (type, 如老師、學生、校外讀者)、電子郵件 (email),和電話 (phone)。其中讀者編號為唯一。
• 讀者興趣 (Interest):包括日期 (date)、興趣條件 (constraint)。一位讀者可設數個讀者興趣,但同一讀者之不同興趣其日期必不同。
• 系所 (Department):包括系所編號 (depId) 和系所名稱 (depName)。

此外,Book 跟 Callcategory 間有一個 Categorized 的關係型態,一本書必屬於一個書類別,但一書類別可有數本書。Interest 與 Callcategory 間有個包括(Involves) 的關係型態,一個讀者興趣可有數個書類別,而且一個書類別可出現在數個讀者興趣。Patron 跟 Department 間也有個屬於 (Belongs) 的關係型態。

請依以上的需求,畫出 ERD。必要的話,可自行假設其他相關狀況,但必須寫清楚。
 
習題2-9
假設你要為一圖書館製作一簡易的流通系統,該系統必須能記載圖書借閱的狀態,請包含以下的實體型態:
1. 圖書 (Title):每個 title 表示一本書。
2. 圖書冊 (Volume):請注意同一本書可能購入好幾冊,每一冊叫做一個 volume。
3. 讀者 (Patron):每個 patron 表示該圖書館的一位讀者。
4. 單位 (Unit):每個 unit 表示讀者所屬的一個單位,比如大學圖書館的可能單位為系所。
5. 圖書種類 (Class):圖書館的書都經過分類,每一類就是一個 class。

這五種實體型態有以下的屬性:
1. 圖書:包括 ISBN、書名 (name)、主題 (subjects)。其中 ISBN 為唯一,且主題可能包括多個值。
2. 圖書冊:包括流水號 (seqNo) 和購入日期。其中沒有任一屬性是唯一,但對於同一圖書之不同圖書冊,流水號也不一樣。
3. 讀者:包括 id、姓名 (name)、email、住址 (address)、加入日期 (startDate)。其中 id 是唯一。每一位讀者可能會借好幾冊書,但一冊書至多被一位讀者所借。
4. 單位:包括單位編號 (unitNo)、名稱 (unitName)、主管姓名 (directorName)、主管聯絡電話 (phone)。其中單位編號和名稱均為唯一。每一位讀者必定屬於一個單位。
5. 圖書種類:種類編號 (classNo)、名稱 (className)、種類敘述 (description)。其中名稱和種類編號均是唯一。由於分類是階層式的 (比如電腦書 is-a 數學書 is-a自然科學書),每一類與其上一類的關係必須記載。此外,每一本書會被分成一類 (階層的最底層)。

必要的話,可自行假設其他相關狀況,但必須寫清楚。
 
習題2-10
假設你要為某大學的學生運動會開發一套報名系統。該系統可以讓管理員維護比賽項目,也可以讓學生個別或組隊報名。具體說來,該系統的資料需求如下:

• 學生 (Student):包括學號 (sId)、姓名 (name)、生日 (birthday)、身分證字號 (pId)、電子郵件信箱 (email)。其中學號和身分證字號均為唯一。
• 系所 (Department):包括系所名稱 (dName)、系所位置 (address)、電話 (phone)、系主任姓名 (chair)。其中系所名稱為唯一。一位學生必然有一個主修系所(Major)。
• 個人競賽 (IGame) : 包括競賽編號 (iId)、競賽名稱 (iName) 、性別限制(genderConstraint)、競賽時間地點 (timePlace)、比賽規則 (rule)。其中競賽編號和競賽名稱皆為唯一。此外,競賽時間地點為多值,且可細分成日期時間(dateTime) 和競賽地點 (place)。學生報名個人競賽的記錄需記載。
• 團體競賽 (TGame):包括競賽編號 (tId)、競賽名稱 (tName)、競賽地點 (place),人數限制 (max)、性別限制 (genderConstraint)、日期時間 (dateTime)、比賽規則(rule)。其中競賽編號和競賽名稱皆為唯一。
• 參賽隊伍 (Team):包括隊伍編號 (tNo) 和組隊日期 (date)。此外,一個參賽隊伍必然要報名某一個團體競賽 (且僅能一個)。其中沒有任何一個屬性是唯一,但報名同一個團體競賽的隊伍編號必然不同。此外,若一個隊伍是代表某一個系所參賽,則代表的系所需註明。

請依以上的需求,畫出ERD。必要的話,可自行假設其他相關狀況,但必須 寫清楚。