我將不勝感激,如果你可以看看到這是關係到我的說明圖ERD:數據庫設計/ ERD圖驗證
數據庫包含人的記錄(1900年以來)。每個人可以有母親和/或父親 。女人可以有一個丈夫,男人可以有一個妻子。人員在包含姓名和一名主席的公司工作。 一個人可以在一個或多個公司工作,僱員在強制 合同或僱傭合同。
並且示例查詢是: 查找具有最多孫數的人(姓和名)。
以下是我的ERD圖,但我不確定母親/父親和妻子/丈夫的部分。
在此先感謝
我將不勝感激,如果你可以看看到這是關係到我的說明圖ERD:數據庫設計/ ERD圖驗證
數據庫包含人的記錄(1900年以來)。每個人可以有母親和/或父親 。女人可以有一個丈夫,男人可以有一個妻子。人員在包含姓名和一名主席的公司工作。 一個人可以在一個或多個公司工作,僱員在強制 合同或僱傭合同。
並且示例查詢是: 查找具有最多孫數的人(姓和名)。
以下是我的ERD圖,但我不確定母親/父親和妻子/丈夫的部分。
在此先感謝
你 「ERD」,而俗稱這樣,實在是一個表圖。一個合適的ER圖必須能夠表示一個ER模型,這意味着它應該能夠代表其他事物之間的三元關係和更高的關係。我建議用陳的符號表示ER圖。這並不意味着我反對錶格圖表 - 他們只是用於不同的目的。概念模型的ER圖,物理模型的表圖。這些之間是邏輯模型的關係圖。
您的圖表也沒有很好地實現給定的描述。考慮「每個人都可以有母親和/或父親」。您的relationship
表格允許person
與多個relationship_types
相關聯,但它不會將兩個persons
關聯在父角色和子角色中。更好的方法可能是將father
和mother
表與parent_id
和child_id
字段指person_id
或單個parent
表與parent_id, child_id, relationship_type
字段。
對於已婚人士,您可以使用husband_id, wife_id
字段。與father
和mother
表一樣,這並不能確保只有具有匹配性別的人才會記錄在每個角色中。可以通過爲person
的性別創建不相交的子類型表來強制執行此操作。但是,這並不常見(現在,數據模型中的靈活性更有可能被視爲一個優勢而不是問題),我懷疑這對您的項目可能是過度的。
就業更好地建模。我看到的主要問題是agreement_type
和employment_condition
之間的一對一關聯。我假設agreement_type
是爲了記錄mandatory contract
和employment contract
。但是,通過一對一關聯,您不能有兩名或兩名以上員工使用mandatory contract
。我相信每個agreement_type
應可用於多個employment_conditions
。
我也關注employment_condition
的關鍵。 condition_id
和agreement_name
都表示爲外鍵(橙色)和主鍵(鍵圖標)的一部分。 condition_id
指的是什麼,它們爲什麼包含在PK中?我期望person_id, company_id
的組合足以識別公司和員工之間的多對多關係。
類似地,person_id
在company
包含在PK中。基於給出的描述,我預計company_id
將確定name
和主席(person_id
)。順便說一句,我建議你將該字段的名稱更改爲chairperson_id
以便更具描述性。想象一下,如果我們有更多的人擔任個人角色 - 我們無法打電話給每個字段person_id
,對吧?根據他們的角色而不是他們的領域來命名字段通常更有用,儘管兩者通常是一致的。
我會指出,許多人特別是在20世紀初有許多丈夫和妻子。他們在同一時間沒有他們。公司也有多位主席,公司名稱也不是唯一的。有時候,如果後來被採納,甚至還會有兩個以上的父母。 – HLGEM
是的,我知道有很多例外,但我必須堅持描述。謝謝;)我描述了所有規則,這裏沒有任何商業價值。我的數據庫應該只符合上面的描述。 – snowflake