習題題庫 [第十三章:擴充實體關係模式]
習題13-1

假設你有一個特殊化分類為「書」→{「文學書」,「藝術書」,「自然科學書」,「社會科學書」},此特殊化分類的限制有以下四種可能狀況
1. 不重複、完全參與
2. 不重複、部分參與
3. 重複、完全參與
4. 重複、部分參與
請就每一種狀況,繪出其圖形表示法,並解釋其意義。

 
習題13-2
假設你想記載資料庫課程的修課學生及其各項成績。因此你有一個名為「學生」的實體型態和一個名為「計分項目」的實體型態。「學生」又可根據其參與的讀書會分成「資料庫設計讀書會員」和「資料庫系統讀書會員」,而計分項目又可細分成「作業」、「計畫」和「考試」。「學生」與「計分項目」間有一得分的關係,分數必須記載。各實體型態的屬性如下:
學生:學號、姓名、性別和生日。
計分項目:項目名稱和項目種類 (值為HW、PROJ 或 EXAM)
作業:繳交日期和總分。
計畫:繳交日期。
考試:考試日期和總分。
資料庫設計讀書會員:加入日期。
資料庫系統讀書會員:加入日期。

請根據以上需求畫出一EERD。若有任何假設,請敘述清楚。
 
習題13-3
請將 [習題13-2] 的EERD 轉為關聯模式資料庫綱目。
需包括各個關聯綱目的屬性、主鍵及外部鍵。(並以箭頭表示外部鍵所對應的主鍵)。
 
習題13-4
假設你想記載修習資料庫課程的學生和他們所製作的期末專案。因此你有一個名為「學生」的實體型態和一個名為「期末專案」的實體型態。而「期末專案」又可細分成「系統開發專案」和「專題報告專案」兩種。「系統開發專案」可再細分成「單機版」、「主從架構版」和「Web 版」。「專題報告」又可分成「理論探討」和「系統使用報告」,請注意可能會有報告同時包含這兩種。
「學生」與「期末專案」間有一得分的關係,分數必須記載。各實體型態的屬性如下:
• 學生:學號、姓名、性別和生日。
• 期末專案:專案名稱、繳交日期和專案種類 (值為 ‘系統開發’ 或 ‘專題報告’)。
• 系統開發專案:開發工具 (為多值屬性) 和系統種類 (值為單機版、主從架構版或Web 版)。
• 專題報告專案:報告頁數。
• 單機版系統:系統格式。
• 主從架構版系統:程式語言。
• Web 版系統:網址
• 系統使用報告:系統名稱。
• 理論探討:主題關鍵字 (為多值屬性)
請根據以上需求畫出一EERD,若有任何假設,請敘述清楚。
 
習題13-5
請將 [習題13-4] EERD 轉成關聯模式資料庫綱目。
 
習題13-6
假設你要用EERD 去描述銀行的戶頭與交易,資料需求如下:
•客戶 (Customer) 資料要記載,包括身分證字號 (id)、生日 (bDate) 和住址(address)。其中身分證字號是唯一。
•客戶可以開數個帳戶 (Account),帳戶資料包括帳號(acctNo)、開戶日期 (date)和餘額 (balance)。此外,有三種帳戶:活存 (Saving)、支票 (Checking) 和定存 (CD),活存帳號要記載最低限額 (lowerBound),支票帳號要記載可用支票數 (freeCheck#),定存帳號要記載利率 (interest) 和期限(period)。為提高競爭力,該銀行容許一個帳戶可同時選擇性的包括這三種功能。其中帳號是唯一。
• 一個帳戶可進行多筆交易 (Transaction),交易資料包括交易號碼 (tid)、交易日期 (date) 和交易種類 (tType),其中交易可依交易種類細分為存款 (deposit)、提款 (withdraw)、和轉帳 (transfer),若為存款則需記載存款金額 (dAmount),若為提款則需記載提款金額 (wAmount) , 若為轉帳則需記載轉帳金額(tAmount)、對方銀行號碼 (bank#) 和帳號 (account)。
1. 請畫出EERD
2. 請將該EERD 轉成關聯模式資料庫綱目。
 
習題13-7

考慮第三章 [習題3-5] 的人力資源部門徵才系統的ERD,假設人力資源部有兩項新的需求:
1. 基於法令規定,公司需多進用殘障 (Handicapped) 和原住民 (Native) 人士。因此申請者這方面的資訊需記載。
2. 申請者應提供至少兩名的介紹人 (Referee)。有些介紹人是公司員工,這些資訊應予記載以便在安排面試時避開。
為滿足以上需求,資料庫分析師決定對該ERD 做以下修改:
1. 依是否是特殊申請者產生一個特殊化分類, 有兩個子類別:「殘障」(Handicapped) 和「原住民」 (Native)。「殘障」的屬性包括殘障種類 (hType) 和發生日期 (hDate)。「原住民」的屬性包括族名 (nTribe)。
2. 產生一個實體型態「介紹人」(Referee),屬性有姓名(rName)、職稱 (rPosition)、單位 (rOrganization)、電話(rPhone) 和電子郵件信箱 (rEmail)。其中沒有任何一個屬性為唯一,但每一申請者需有數個介紹人,且一位申請者的各介紹人姓名必然不同。
3. 「介紹人」和「員工」間有一個關係型態 (Is) 用來記載一個介紹人其實就是某一位員工。
請依以上的需求,畫出EERD。必要的話,可自行假設其他相關狀況,但必須寫清楚。

 
習題13-8
考慮第三章 [習題3-9] 之問卷設計系統,為使問卷更加完整,問卷題目多了複選題和問答題,但問答題沒有選項。且每一Session 回答一問答題時之答案也要記載。請畫出完整的EERD。
 
習題13-9
請將 [習題13-8] 的EERD 轉成關聯模式資料庫綱目。
 
習題13-10
請將 [習題13-8] 用UML 表示。
 
習題13-11
考慮課本圖13-6 的AccountOwner 群類和圖13-21 的關聯綱目。
請問以下的三個資料表的記錄有哪些不符合群類的規定?並請指出不符合的原因。
Person
pId pName personAccount
0001
0002
0003
0004
0005
0006
鄭一
梁二
張三
李四
王五
趙六
A0001
null
A0003
A0004
null
A0006
Company
cId cName companyAccount
0001
0002
0003
0004
0005
0006
台一
台二
台三
台四
台五
台六
A0001
A0002
null
null
null
null
AccountOwner
accountNo startDate
A0001
A0002
A0003
A0004
A0005
A0006
2002-1-3
2003-2-3
2001-4-8
2004-1-4
2003-11-4
2004-6-13
 
習題13-12
假設你有一個EERD,用來描述公司的銷售和採購資訊。在你的EERD 中有兩個實體型態:「上游廠商」〔Supplier〕和「下游客戶」〔Customer〕,分別用來記載貴公司採購的對象和銷售的對象。現在你希望產生一個實體型態稱為「特約交易對象」〔QualifiedVendor〕,代表為貴公司所認可的密切往來廠商,你有三種可能的方式來描述特約交易對象:
• 一般繼承 (QualifiedVendor 是Supplier 和Customer 的父類別)
• 多重繼承 (QualifiedVendor 是Supplier 和Customer 的子類別)
• 群類 (QualifiedVendor 是由Supplier 和Customer 所組成的群類)
請就每一種狀況,繪出其圖形表示法,並解釋其意義。
 
習題13-13
考慮 [習題3-11] 的水電維修系統ERD,假設「員工」(Employee) 有一個特殊化分類,該分類是根據員工的職位,分成:
• 部門主管 (Manager):有一個屬性「上任日期」(startDate)
• 秘書 (Secretary):有一個屬性「打字速度」(typeSpeed)
• 行政人員 (Administrator):有一個屬性「職等(adminLevel)
• 技術員 (Technician):有一個屬性「技術等級」(techLevel)
此外,每一位員工最多只能屬於一類,部門主管必須管理 (Manages) 一個或以上的部門,並且只有技術員才能進行維修。
請依以上需求修改該ERD 為EERD,並轉成關聯模式資料庫綱目。
 
習題13-14
假設你要替一個餐廳的點菜系統設計一資料庫綱目。該資料庫可用來記載該餐廳的餐點和相關資訊。資料需求如下:
• 餐點 (FoodItem):包括餐點編號 (fNo)、餐點名稱(fName)、餐點敘述 (fDesc)、
價錢 (fPrice) 和類別 (fType)。其中餐點編號和餐點名稱均為唯一。餐點又可依類別分成飲料 (Beverage)、小點(Dessert)、單點 (Dish) 和套餐 (Set),其中專屬屬性如下:
• 飲料:是否含酒精 (alcohol)
• 小點:甜或鹹 (taste)
• 單點:辣的程度 (spice)
• 套餐:無其他專屬屬性,但一個套餐可由數個餐點所組成,組成的餐點和餐點數量必須記載。
• 餐桌 (Table):包括餐桌編號 (tId)、容納人數 (capacity) 和位置 (location)。其中餐桌編號為唯一。
• 服務生 (Waiter):包括姓名 (name) 和性別 (sex)。其中姓名為唯一。此外,每一服務生都必須有剛好一位代理服務生 (Substitute),以便該服務生不在時可以頂替其工作。
• 顧客 (Customer):包括顧客姓名 (cName)、日期時間(dateTime)、人數 (num)和消費金額 (payment)。其中沒有任何屬性是唯一的,但每一顧客一定被分配一個餐桌,同一餐桌的顧客其日期時間 (dateTime) 必然不同。請注意,為了
環境美觀,本餐廳不允許併桌,也就是說每一顧客會有佔用一張餐桌。
• 顧客的點餐記錄 (包括種類和數量) 要記載。
• 每一服務生負責數個餐桌,每一張餐桌剛好有一位服務生負責。
請依以上的需求,畫出EERD。必要的話,可自行假設其他相關狀況,但必須寫清楚。
 
習題13-15
假設你想擴充 [習題3-13] 的醫院掛號系統ERD 去包括病人的住院資訊。額外需求如下:
1. 醫師按照職級可分成住院醫師 (Resident)、主治醫師(AttendingDoc) 和主任醫師 (ChiefDoc)。其中主治醫師和主任醫師有一多值屬性專長 (specialties),主任醫師並有一屬性上任日 (chargeDate),且只有主治醫師和主任醫師才能看診。住院醫師有一屬性住院醫師開始日 (residenceDate),每一住院醫師有一位教導醫師 (Mentor),教導醫師必須是主治或主任醫師。
2. 有些病人是住院病人 (Inpatient),住院病人有一屬性住院開始日 (startDate)。每一位住院病人有一位主治或主任醫師來負責治療 (Treats),並可能有一位住院醫師來幫忙治療 (Assists)。
3. 病床 (Room) 包括病床編號 (rNo) 和位置 (loc)。其中病床編號是唯一,且每一住院病人必須佔一個床位。
請按以上需求畫出EERD。
 
習題13-16
考慮 [習題3-14] 的ERD 製作工具軟體ERD,若將EntityType 特殊化成WeakEntityType (弱實體型態) 和RegularEntityType (一般實體型態),請畫出修改後的EERD。