我们已获得分配任务,其中将创建一个文本文档描述的概念模型。该文档中给出了许多约束,但是我们也被指示不要在模型中使用约束。
我们已经能够解决一些限制,但是有一个我们无法解决。我提出的方案与我们遇到问题的部分作业有些相似。
您的任务是为游戏工作室的结构创建模型。公司由多个部门组成,每个部门至少有一名员工。每个员工都在一个部门工作。共有三种不同类型的员工:开发人员,设计师和工程师。
除此以外,员工还可以担任许多领导角色:部门主管,部门副主管,CTO或CEO(是的,CTO和CEO是正规员工的角色)。每个部门必须有1个部门主管和至少1个部门副主管。
此外,只能有一名CTO和一名CEO,这些角色只能由工程师担任。每个员工只能有一个领导角色。
为解决这个问题,我们组成了另一个抽象实体: BasicRole 。该实体是 LeadershipRole 的特殊化,是任何员工可以担任的三个角色的概括。这解决了一个问题,现在我们可以简单地在Designer / Developer与 BasicRole
之间创建适当的关联但是,除了与CEO和CTO的关联之外,我们还希望工程师与 BasicRole 建立关联。添加这些关联会得出一个概念模型,如下所示:
但是,这是有问题的,因为现在我们说工程师可以担任0到3个角色。
我们已经考虑将公司作为一个实体,并在公司和CTO / CEO之间添加关联,以指定该公司只能各拥有一个的方式,但是在此过程中,我们一遍又一遍地被告知不要在模型中包含我们要建模的实体。
现在,似乎我们所有的问题都可以通过约束来解决(如果我们继续研究这些问题),并且对这三个关联进行某种异或运算。但是,看到我们被指示不要在概念模型中使用约束时,我们很茫然。
答案 0 :(得分:2)
如果您将Engineer
与LeadershipRole
关联(具有多重性0..1
),则从Engineer
到CTO
,CEO
和LowerRole
将获得预期的结果:
每个员工只能担任一个领导角色。
由于LeadershipRole
是抽象的,它必须是CEO
,CTO
,HeadOfDepartment
或DeputyHOD
),但是由于多重性不能再多多于一次。
“如果我们正在设计代码级文档,则“一遍又一遍地告诉我们,不要在模型中包含将作为实体建模的事物”的说法是正确的,但这是正常的将实体代表您要建模的整个组织。换句话说,请不要在系统模型中放入System
(或称您为系统)。但是Company
是您在系统中 建模的东西。
答案 1 :(得分:-1)
“每个部门必须有1个部门主管和至少1个部门副主管”的2个选项。
重新定义
嵌套符号
“这些角色只能由工程师担任”的2个选项
重新定义
通用化
总共4 = 2 * 2个选项