2011-05-09 56 views
3

我一直致力于一个处理家庭维护服务工作的项目,但我很难模拟不同人员和公司所扮演的角色。如果有问题,系统使用zendFramework编写,mySql作为数据存储。建模人物/公司角色

我尽我所能解释,但我不熟悉数据建模的语言。
该系统的最终用户是维护公司,我将在以下示例中致电HammerTime。这是我到目前为止有: 源1:居民 >> requestWorkOrder >>PropertyManagementCompany >> requestWorkOrder >>HammerTime

来源

WorkOrderRequests从两个主要来源进来2:HomeOwner >> requestWorkOrder >>HammerTime

我想到一个这些实体的客户只有PropertyManagementCompaniesHomeOwners是将直接收到发票的客户。也有居民可以是房主,如果他们拥有他们居住在财产。另外要在上面这个附加业务逻辑的另一层,所有居民属于物业并从居民的所有请求PropertyManagementCompanyPropertyManager中

WorkOrderRequests介导进来HammerTime它们被存储为工作订单然后以几种不同的方式处理。

处理了1:HammerTime >> assignWorkOrder >>员工

已处理2:HammerTime >> contractOutWorkOrder >>ServiceVendor

我觉得这些实体的工人和他们的似乎更容易建模。

问题是,我希望能够根据角色类型将所有这些实体授予系统。在我看来,我想将它们全部归为一个成员抽象超类,它可以被两个更抽象的类别分类公司。 那么公司可以进一步通过更具体的类象员工子类PropertyManagementCompany等。

哪里会有属性适合,因为它不是一个人或一个公司。我想也许这将是一个会员

我有一种感觉,我完全错过了某些东西只是不觉得正确。所以任何想法,或指针将不胜感激。

回答

2

我根本不知道php或Zend,但是你可能想看看“Party-Role”模式。 (刚刚google,参见例如(1)(2)(3))。

在你的场景中人&组织是Party的子类型。 Employee,ServiceVendor,Resident等都是Role的子类型。有很多:党之间的关系&角色。您可以根据需要在角色子类型中定义关系。分配权限应该变得容易;每个缔约方获得其分配给每个角色的权限。

hth。

+0

我认为这是很好的解决方案,因为这里的问题主要在OOP /设计中,而不是在实现中。 – gaRex 2011-05-10 14:01:38

+0

您链接的帖子是很好的资源,sfinnie,谢谢。正是我需要的。 – John 2011-05-11 17:39:40

+0

太棒了 - 很高兴他们帮了忙。 – sfinnie 2011-05-11 20:46:37