習題題庫 [第八章:正規化]
習題8-1

在第四章的第四節討論如何將一個1:1 的關係型態轉換成關聯綱目時,有以下的敘述:“在決定該在那一個實體型態的關聯綱目裡加入外部鍵時,以完全參與此關係型態之實體型態為優先”,請問此敘述的用意為何?考慮圖4-9 的「相對」關係型態,假設我們在「購物車」的關聯綱目裡加上一個參考到交易的外部鍵,請問這樣的設計會違反本章第二節所提到的哪一個特性?

 
習題8-2
考慮圖8-12,
A. 若採用圖 8-12 (a) 的Transaction 關聯綱目,其中 {tNo,pNo} → {amount, unitPrice, invNo} 可由設定 Transaction 的主鍵 {tNo, pNo} 來滿足。至於invNo→ tNo 的函數相依,請問該如何用SQL 的敘述來設定?
B. 若採用圖 8-12(b) 的關聯綱目,但也想滿足 {tNo, pNo} → invNo 的函數相依,請問如何用SQL 的敘述來設定?
(提示:參考第七章第七節的ASSERTION 或TRIGGER)
 
習題8-3
考慮以下的綱目:
qid sid no title designerId designerName desc cNo content {date}

其中 {date} 為多值屬性,此外,函數相依如下:
qid → {title, designerId, designerName}
{qid, sid} → {desc, cNo}
{qid, sid, no} → content
designerId → designerName
A. 請分解成滿足1NF 的關聯綱目 (但不是2NF)。
B. 請分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請分解成滿足3NF 的關聯綱目。
 
習題8-4
假設你有一個名為Transaction 的關聯綱目如下,用來記載讀者買書的交易:
Transaction (isbn, title, publisherId, publisherName, readerId, name, dateTime,
unitPrice, number)
函數相依如下:
isbn → {title, publisherId}
publisherId → {publisherName}
readerId → name
{isbn, readerId, dateTime} → {unitPrice, number}
A.請問主鍵為何?
B. 請分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請分解成滿足3NF 的關聯綱目。
 
習題8-5
考慮以下汽車販賣的關聯綱目:
CarSale (state, plateNo, customer, salesperson, taxRate, model, dateSold, discount)
此外,有以下的函數相依:
{salesperson, model, dateSold} → {discount}
state → taxRate
{state, plateNo} → {customer, salesperson, model, dateSold}
A. 哪些屬性合成關聯鍵?
B. 請將CarSale 分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請將CarSale 分解成滿足3NF 的關聯綱目。
 
習題8-6
請將以下關聯綱目分解成滿足3NF 的關聯項目,其中主鍵是用底線來表示。
A. CLASS (課程編號,年度,學期,教室)
B. CLASS (課程編號,年度,學期,課程名稱,教室,授課老師),並有以下函數相依:
課程編號→課程名稱
C. CLASS (課程編號,年度,學期,課程名稱,教室,授課老師,教室容納人數,授課老師到職日)
並有以下的函數相依:
課程編號→課程名稱
教室→教室容納人數
授課老師→授課老師到職日
 
習題8-7

假設我們有下列的關聯綱目

A. 請分解成滿足2NF 的關聯綱目 (但不是3NF)。
B. 請分解成滿足3NF 的關聯綱目 (但不是BCNF)。
*C. 請分解成滿足BCNF 的關聯綱目。

 
習題8-8
考慮一關聯綱目 R (A, B, C, D, E, F),假設有以下的函數相依:
{A, B}→{C, F}
B → D
C → E
F → A
A. 列出可由以上函數相依所推導出的所有函數相依。
B. 請列出R 的所有可能關聯鍵。
*C. 請將R 分解成滿足BCNF 的關聯綱目。請問這樣的分解是否為保留函數相依的分解?若否,有哪些函數相依是無法藉由檢查個別關聯來確定?
 
習題8-9
考慮課本圖 8-12(a) 的關聯綱目,若分解成以下的關聯綱目:
Transaction1 (pNo, invNo, amount, salePrice)
Transaction2 (invNo, tNo)
Transaction3 (pNo, tNo, invNo)
A. 是否可以保留所有的函數相依 (也就是說,存在某些函數相依,其無法藉由檢查個別關聯來確定)?
B. 與圖8-12(a) 的Transaction 關聯綱目相比,這樣的關聯綱目滿足BCNF,但若要新增、刪除、或查詢時,會遇到什麼樣的麻煩?
 
習題8-10
假設你有一關聯綱目T(A1, A2, A3, A4),並且A4 → A2。於是你有以下三種方式來處理:
1. 僅保留T (A1, A2, A3, A4)
2. 分解成T1 (A1, A4, A3),T2(A4, A2)
3. 分解成T1 (A1, A2, A3),T2(A4, A2)
請討論每一種方式對於以下每一個函數相依的檢查是否可以藉由檢查個別關聯綱目的關聯鍵限制來達成:
A. {A1, A2} → A3
B. {A1, A2} → A4
C. A4 → A2
D. {A1, A4} → A2
E. {A1, A4} → A3
此外,也請討論每一種方式是否可能會產生虛假序列值和是否滿足BCNF。
 
習題8-11
假設你有以下的關聯綱目:
T (A1, A2, A3, A4, A5, A6, A7)
並有以下的函數相依:
{A1, A2, A3} → {A4, A5, A6, A7}
{A1, A2} → A4
A4 → A5
A6 → A2
A. 哪些屬性合成關聯鍵?
B. 請將T 分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請將T 分解成滿足3NF 的關聯綱目 (但不是BCNF)。
*D. 請將T 分解成滿足BCNF 的關聯綱目。
 
習題8-12
假設你有下列的關聯綱目 R,用來記錄大學課程的資料:
R (CourseNo, OfferingDeptNo, OfferingDeptName, Semester, Year, RoomNo,Address, BuildingName, RoomSize, InstructorId)
並有下列的函數相依:
CourseNo → OfferingDeptNo
OfferingDeptNo → OfferingDeptName
{CourseNo, Semester, Year} → {RoomNo, Address, InstructorId}
{RoomNo, Address}→ {BuildingName, RoomSize}
BuildingName → Address
A. 哪些屬性合成關聯鍵?
B. 請將R 分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請將R 分解成滿足3NF 的關聯綱目 (但不是BCNF)。
*D. 請將R 分解成滿足BCNF 的關聯綱目。
 
習題8-13
假設你有以下的關聯綱目 T,用來記載會員 (member) 網路購物 (goods) 的資料:
mId gId mName gName gType gTypeDesc dateTime price ip

並有下列函數相依:
mId → mName
gId → {gName, gType, gTypeDesc}
gType → gTypeDesc
{mId, gId, dateTime} → {price, ip}
ip → mId
A. 哪些屬性合成關聯鍵?
B. 請將T 分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請將T 分解成滿足3NF 的關聯綱目 (但不是BCNF)。
*D. 請將T 分解成滿足BCNF 的關聯綱目。
 
習題8-14
假設你有下列的關聯綱目 B,用來記載大學圖書館的書籍資料:B (callNumber, seqNum, author, title, publisherName, publisherAddress, publisherPhone, storeBranch)
並有下列函數相依:
callNumber → {title, publisherName}
publisherName → {publisherAddress, publisherPhone}
{callNumber, seqNum} → storeBranch
callNumber author /* 多值相依 */
A. 哪些屬性合成關聯鍵?
B. 請將B 分解成滿足2NF 的關聯綱目 (但不是3NF)。
C. 請將B 分解成滿足3NF 的關聯綱目 (但不是4NF)。
D. 請將B 分解成滿足4NF 的關聯綱目。
 
習題8-15
考慮以下的Transaction 關聯綱目:
Transaction (tNo, pNo, pName, catalog, creatorId, creatorName, transTime,amount)
並有以下的函數相依:
{tNo} → {transTime}
{pNo} → {pName, catalog}
{pName} → {catalog}
{tNo, pNo} → {amount}
{creatorId} → {creatorName}
並有以下的多值相依:
{pNo} {tNo}
{pNo} {creatorId}
A. 哪些屬性合成關聯鍵?
B. 請分解成合乎2NF 的關聯綱目 (但不是3NF)。
C. 請分解成合乎3NF 的關聯綱目 (但不是4NF)。
*D. 請分解成合乎4NF 的關聯綱目。