2012-06-18 43 views
0

我在將ER圖轉換爲表時遇到問題。在弱實體三元關係,根據要求:項目 ERD-> sql轉換

    • 一個供應商供應一定數量的部分項目使用來自不同供應商的部件。
    • 來自不同供應商的同類零件被不同的 項目使用。
    • 供應商名稱和供應商名稱 所屬城市的名字。
    • 零件的名稱,顏色和重量。

    ERD Diagram Image http://s9.postimage.org/gmhu6rltr/Untitled.jpg

    難道我創建包含提供第四臺:projectNO,supplierName,市,零件名稱,顏色和重量? 6個屬性構成該表的PK?

  • 回答

    1

    我不認爲您ProjectSupplies之間的關係是正確的。同樣,SuppliesSupplierPart之間的關係都是向後的。

    烏鴉的腳走在關係的許多末端。 Supplies應該是你正在談論的三元關係表。如果您使用的是自然鍵,那麼Project,SupplierPart中的所有關鍵列都應出現在Supplies中,因爲它們都是FK到它們各自的表格,並且全部一起作爲PK。然而,你的自然鍵看起來像是可能改變的東西(例如供應商移動城市,零件改變顏色或重量)。我想你可能想考慮使用代理鍵來避免將來的更新異常。

    +0

    耗材表(projNO,suppName,city,partName,顏色,體重)這張表的所有屬性 組成了PK! 好的供應商ID和零件ID如何?作爲替代鍵 ,這將使它更簡單: 項目(projno {PK},...) 供應商(ID {PK},名稱,城市) 部分(ID {PK},名稱,顏色,重量) project_supply_part (projNO,SuppID,PartID)和所有att組成初始密鑰 –

    +0

    @Programmingbuddy - 是的,這是一般的想法。代理鍵使交叉表保持整潔,並允許您編輯一些父表列而不會干擾您的外鍵。 –