2015-03-24 79 views
1

我有一個關係數據庫Witness,PoliceOfficerSuspect,和許多其他類人關係。通常同一個人可能會形成多種關係,因爲在某些情況下,警察可能會成爲犯罪嫌疑人。將另一個關係Person存儲所有人的相關數據,並指出所有人類關係中的人物對象是否有意義?具有多人關係的數據庫設計

+0

這肯定會幫助'normalize'您的數據。在所有其他相關關係中,您可以將所有像人物一樣的共同屬性放入'Person'關係中,並使用'Person'的'PK'作爲'FK'來訪問它們。 – 2015-03-24 22:00:25

回答

0

我完全同意@ Guranjan的評論。

還要考慮一個人是否可以擁有同一個角色的倍數,以及在什麼情況下。您可能有person誰是Suspect多於一個case。所以,每個case可以有很多嫌疑人,證人和官員,並且每個人都指向一個獨特的人。

因此,表是:

case 
    case-id 
    crime-description 
    date 
    time 
    etc 

case-person 
    case-id 
    person-id 
    type (witness, suspect, officer) 

person 
    person-id 
    name 
    dob 
    address 
    etc 
0

不知道你的使用情況,但它將使意義使用了幾桌它型號:PersonRole將是維表 - Person含您需要儲存個人信息(姓名,地址,dob等)的詳細信息Role,其中包含所有可能的角色信息(見證人,警察,嫌疑人等)。

你需要一個事實表,以及爲AA特別Scenario例如連接這兩個這樣:

人1 - 場景1 - 是警務人員

人2 - 情景1 - 是一個證人

人3 - 在方案2 - 是一個可疑

人1 - 在場景2 - 是見證

2個人 - 在方案2 - 是一個見證

Scenario表將包含人物和角色鍵

+0

我喜歡爲所有角色建立關係的想法。但是對於某些角色特有的屬性呢?我在哪裏可以儲存警察等級? – Jamgreen 2015-03-25 16:22:12

+0

你應該爲每個警官級別排名擁有不同的角色。通過這種方式,人員1可以在情景1中擔任中士(角色1),在情景2中擔任督察(角色2) – econnormist 2015-03-27 15:14:44