羅德興老師的教學歷程檔案 - 112-2 資料庫管理系統 (DBMS) - 正規化 (NF) 練習
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    正規化 (NF) 練習

    正規化 (NF) 練習

    (Sources: https://www.mis.nsysu.edu.tw/db-book/pro_ch8.html )
    Ex. 1
    假設你有一個名為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 的關聯綱目。

    (Sol:)

    A.isbn + readerId + dateTime

    B.

    T1
    isbntitlepublisherIdpublisherName
    T2
    readerIdname
    T3
    isbnreaderIddateTimeunitPricenumber

    C.

    T11
    isbntitlepublisherId
    T12
    publisherIdpublisherName
    T2
    readerIdname
    T3
    isbnreaderIddateTimeunitPricenumber

    Ex. 2
    考慮一關聯綱目 R (A, B, C, D, E, F),假設有以下的函數相依:
    {A, B}→{C, F}
    B → D
    C → E
    F → A
    A. 列出可由以上函數相依所推導出的所有函數相依。
    B. 請列出R 的所有可能關聯鍵。
    *C. 請將R 分解成滿足BCNF 的關聯綱目。請問這樣的分解是否為保留函數相依的分解?若否,有哪些函數相依是無法藉由檢查個別關聯來確定?

    (Sol:)

    A.
    (1){B}→{D}
    (2){C}→{E}
    (3){F}→{A}
    (4) {A, B}→{A,B,C,D,E,F}
    (5) {F, B}→{A,B,C,D,E,F}

    B.
    {A,B},{F,B}

    C.
    R1(F,B,C)
    R2(F,A)
    R3(B,D)
    R4(C,E)
    {A,B}→{C,E,F}無法藉由檢查個別的關聯來確定,必須檢查R1* R2才行。


    Ex. 3
    假設你有一關聯綱目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。

    (Sol:)

     T(A1, A2, A3, A4)T1(A1, A4, A3), T2(A4,A2)T1(A1, A2, A3),T2(A4,A2)
    1.{A1, A2}→A3
    2.{A1, A2}→A4
    3. A4→A2
    4.{A1, A4}→A2
    5.{A1, A4}→A3
    是否會產生虛假值
    是否滿足BCNF



    Ex. 4
    假設你有下列的關聯綱目 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 的關聯綱目。

    (Sol:)



    Ex. 5
    假設你有下列的關聯綱目 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 的關聯綱目。

    (Sol:)

    A.{callNumber, seqNum, author}

    B.
    B1(callNumber, seqNum, author)
    B2(callNumber, title, publisherName, publisherAddress, publisherPhone)
    B3(callNumber, seqNum, storedBranch)

    C.
    B1(callNumber, seqNum, author)
    B2(callNumber, title, publisherName)
    B3(publisherName, publisherAddress, publisherPhone)
    B4(callNumber, seqNum, storedBranch)

    D.
    B1(callNumber, author)
    B1'(callNumberseqNum) /* 可省略 */
    B2(callNumber, title, publisherName)
    B3(publisherName, publisherAddress, publisherPhone)
    B4(callNumber, seqNum, storedBranch)


    Ex. 6
    ( 98三等關務人員考試 資料庫應用 )

    三、R (A, B, C, D) 為一個關聯式資料庫的表格,包含 ABC四個屬性,其中 {A, B}  {A, C} 為該表格的兩個候選鍵 (Candidate Key)。另外,該表格有四個功能相依 (Functional Dependency){A, B}  {D}{A, C}  {D}{B} {C}{C}  {B}

    ()表格 屬於第幾正規型式 (Normal Form)?(10分)

    ()請將表格 R 做正規化 (Normalization),寫出每一個正規化後的表格的綱要 (Schema),包括表格名稱、屬性、主鍵、以及外來鍵 (如果有的話)。(10分)













    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應