2015-09-14 60 views
0

我有一個項目列表,項目可以由一個人或一組人擁有。你會如何設計這個數據庫?個人和團體所有權

到目前爲止,我有3個表,如:

人:

personID (primarykey) 
personName 
personAddress 
... 

組:

groupID (primarykey) 
groupNumber 
personID 

項目:

itemID (primarykey) 
itemName 
itemDescription 
itemWeight 
... 

你將如何去分配項目的所有權給個人或特定組?

我確實有這個項目上的2個字段,owner_personIDowner_groupID,但似乎挺有趣,而且必須手動管理一次使用哪個字段。

我還嘗試了兩個鏈接表,PeopleOwnershipsGroupOwnerships,它們存儲所擁有的物品列表。字段類似於personID/groupIDitemID。但是,似乎更加笨拙,可能會變得混亂。必須格外小心,以免個人和團體同時擁有相同的物品。

我也想過把所有的人都放在他們自己的個人羣體中,只是使用羣組表格來指代一切。但是這似乎也有點奇怪。

當所有權發生變化時,我還需要記錄人員和組之間的項目轉移。我想過在鏈接表中有一個日期字段,並使用最高日期來確定誰擁有什麼。

回答

0

你可以把一個人當作一個人的一組,並且只允許組擁有物品。

更好的可能是擁有一個名爲「所有者」的類,它只有項目的ID和ID(所有者的ID),並且可以讓Person和Group兩個類都擴展它。

關於轉移,我不會依賴數據庫上的業務邏輯。