2015-09-14 48 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两个类都扩展它。

关于转移,我不会依赖数据库上的业务逻辑。