2015-10-15 93 views
0

我負責發現此關係內的異常情況。我發現了一些插入,刪除和更新異常。數據庫關係異常

enter image description here

Commission Percentage: the percentage of the total sales made by a salesperson that is paid as commission to that salesperson.

Year of Hire: the year the salesperson was first hired

Department Number: the number of the department where the salesperson works Manager Name: name of the manager of the department

不過,我迷茫了異常,我拉出。以下是聲明:

在公司中不能有一個具有相同名稱的經理,因爲經理實體沒有主要標識符,除了該名稱可以在公司內重複使用。

可我知道我應該怎麼短語上述聲明,並在其下(更新/刪除/插入)的異常,我應該包括它?

謝謝


我可要求提供補充援助下面還有:

  • 你將如何改變當前的設計以及如何做新的設計地址你已經發現了與當前設計有關的問題。
  • 我現在的設計是它拆分成3個關係: Salesperson(salespersonNumber, salespersonName, commissionPercentage, YearOfHire, deparetmentNumber)

    Product(productNumber, productName, unitPrice)

    Manager(managerNumber, managerName, departmentNumber)

    不過,我錯過了數量實體。 數量需要productNumber的複合關鍵字& salespersonNumber。 我應該自己在另一個關係嗎?

    Quantity(productNumber, salespersonNumber)

    +0

    你有什麼程序來識別和解決異常? PS:找到填充空白語句(*謂詞*),其中空白用屬性命名,一行值變成語句(*命題*)。真正提議的行會放在表格中,併爲虛假留出。不要使用任何代詞;重複使用屬性。然後每當出現異常時,都會因爲有問題的連詞而引起異常。我們放棄AND並創建謂詞是連詞的新表。 – philipxy

    +0

    你給「異常」定義了什麼?因爲「不可能有經理......」可能是一個*問題*(非正式術語),但它不是一個*異常*(技術術語).. – philipxy

    回答

    1
    1. 異常

    當識別41(潛在的)異常,您列出了由異常影響相關的屬性(你忘了Salesperson Name,順便說一句)。具體而言,您列出了取決於密鑰(Salesperson Number, Product Number)的子集的屬性,因此違反了2NF。你在正確的軌道上。

    但是,要小心,不要混淆異常屬性。如果Bilstein的3個實例中有1個發生了更改,則會發生更新異常。 (假定的)功能依賴Salesperson Name depends on Salesperson Number將被打破,數據將不一致(銷售人員編號437將與多個名稱相關聯)。請記住,規範化旨在消除多餘的協會

  • 身份
  • 與由名稱標識管理的問題表示建模決定差。如您所述,公司的一組管理人員並不是通過名稱唯一標識的,因此邏輯數據模型與其建模的世界之間存在不匹配。只要我們爲不同的經理使用不同的值,這不會導致插入,更新或刪除異常,但這會妨礙管理員的方便識別。可能的改進是使用多個屬性(抽象域通常易於通過屬性組合來識別,但像人這樣的自然域通常不是,例如Manager Name, Birthdate將更具識別性,但仍不是一個好的解決方案),將Manager Name變成代理鍵(例如Scott1,Scott2),或引入新的代理鍵(例如數字ID)。

  • 建議改善
  • 你提出的設計標準化原始表以及尋址的識別問題。這是一個很好的答案,除了兩個問題:它不包括銷售人員和經理之間的關聯,並且在您的關係中,您忘記了將數量作爲依賴屬性包含在內。

    目前爲止工作做得很好,希望對您有所幫助。