2017-02-24 50 views
0

我將不勝感激,如果你可以看看到這是關係到我的說明圖ERD:數據庫設計/ ERD圖驗證

數據庫包含人的記錄(1900年以來)。每個人可以有母親和/或父親 。女人可以有一個丈夫,男人可以有一個妻子。人員在包含姓名和一名主席的公司工作。 一個人可以在一個或多個公司工作,僱員在強制 合同或僱傭合同。

並且示例查詢是: 查找具有最多孫數的人(姓和名)。

以下是我的ERD圖,但我不確定母親/父親和妻子/丈夫的部分。 Database model/ERD diagram

在此先感謝

+0

我會指出,許多人特別是在20世紀初有許多丈夫和妻子。他們在同一時間沒有他們。公司也有多位主席,公司名稱也不是唯一的。有時候,如果後來被採納,甚至還會有兩個以上的父母。 – HLGEM

+0

是的,我知道有很多例外,但我必須堅持描述。謝謝;)我描述了所有規則,這裏沒有任何商業價值。我的數據庫應該只符合上面的描述。 – snowflake

回答

1

你 「ERD」,而俗稱這樣,實在是一個表圖。一個合適的ER圖必須能夠表示一個ER模型,這意味着它應該能夠代表其他事物之間的三元關係和更高的關係。我建議用陳的符號表示ER圖。這並不意味着我反對錶格圖表 - 他們只是用於不同的目的。概念模型的ER圖,物理模型的表圖。這些之間是邏輯模型的關係圖。

您的圖表也沒有很好地實現給定的描述。考慮「每個人都可以有母親和/或父親」。您的relationship表格允許person與多個relationship_types相關聯,但它不會將兩個persons關聯在父角色和子角色中。更好的方法可能是將fathermother表與parent_idchild_id字段指person_id或單個parent表與parent_id, child_id, relationship_type字段。

對於已婚人士,您可以使用husband_id, wife_id字段。與fathermother表一樣,這並不能確保只有具有匹配性別的人才會記錄在每個角色中。可以通過爲person的性別創建不相交的子類型表來強制執行此操作。但是,這並不常見(現在,數據模型中的靈活性更有可能被視爲一個優勢而不是問題),我懷疑這對您的項目可能是過度的。

就業更好地建模。我看到的主要問題是agreement_typeemployment_condition之間的一對一關聯。我假設agreement_type是爲了記錄mandatory contractemployment contract。但是,通過一對一關聯,您不能有兩名或兩名以上員工使用mandatory contract。我相信每個agreement_type應可用於多個employment_conditions

我也關注employment_condition的關鍵。 condition_idagreement_name都表示爲外鍵(橙色)和主鍵(鍵圖標)的一部分。 condition_id指的是什麼,它們爲什麼包含在PK中?我期望person_id, company_id的組合足以識別公司和員工之間的多對多關係。

類似地,person_idcompany包含在PK中。基於給出的描述,我預計company_id將確定name和主席(person_id)。順便說一句,我建議你將該字段的名稱更改爲chairperson_id以便更具描述性。想象一下,如果我們有更多的人擔任個人角色 - 我們無法打電話給每個字段person_id,對吧?根據他們的角色而不是他們的領域來命名字段通常更有用,儘管兩者通常是一致的。