模拟人/公司角色

时间:2011-05-09 17:12:42

标签: php zend-framework database-design data-modeling oop

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

我会尽力解释,但我并不精通数据建模的语言 该系统的最终用户是维护公司,我将在以下示例中调用 HammerTime 。这就是我到目前为止所做的:

WorkOrderRequests 来自两个主要来源: 来源1:常驻>> requestWorkOrder>> PropertyManagementCompany >> requestWorkOrder>> HammerTime

来源2: HomeOwner >> requestWorkOrder>> HammerTime

我认为所有这些实体都是客户,但只有 PropertyManagementCompanies HomeOwners 是接收发票的“直接”客户。如果居民拥有他们所居住的房产,那么居民也可以是 HomeOwner 。此外,为了在此基础上添加另一层业务逻辑,所有居民属于属性以及 Resident PropertyManagementCompany 的所有请求均由 PropertyManager

调解

WorkOrderRequests 进入 HammerTime 时,它们会存储为 WorkOrders ,然后以几种不同的方式处理。

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

处理2: HammerTime >> contractOutWorkOrder>> ServiceVendor

我认为这些实体是工人,他们似乎更容易建模。

问题在于我希望能够根据角色类型向系统授予对所有这些实体的访问权限。在我看来,我想将它们全部归类为成员抽象超类,它可以由两个更抽象的类 Person Company 子类化。 那么公司可以进一步由更具体的类(如员工 PropertyManagementCompany 等)进行子类化。

财产适合哪里,因为它不是个人或公司。我想也许是会员

我有一种感觉,我完全错过了某些东西,因为感觉不对劲。所以任何想法或指针都会受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

我根本不知道php或Zend,但你可能想看看“Party-Role”模式。 (只需谷歌,请参阅(1)(2)(3))。

在您的场景中人物&组织是Party的子类型。 Employee,ServiceVendor,Resident等都是Role的子类型。 Party&和很多人之间有许多关系。角色。您可以根据角色子类型的要求定义关系。然后,分配权限应该变得容易;每个Party都会获得分配给它的每个角色的权限。

第h