关于分层和递归ERD建模的关注

时间:2017-05-25 19:24:08

标签: sql data-modeling oracle12c

我正在通过Oracle Academy服务学习Oracle Database 12c SQL数据建模。在了解了递归和层次关系以及如何对它们建模之后,提出了以下问题:

  

“我们公司在美国各地销售产品。所以我们已经   将美国划分为四个主要销售区域:北部,东部,   南部和西部地区。每个销售区域都有一个独特的区域   码。然后将每个销售区域划分为销售区域。对于   例如,西部地区分为落基山脉,   西北,太平洋沿岸和太平洋地区。每个区都有一个   独特的区号。每个区域都由销售区域组成。   落基山区由三个地区组成:   怀俄明州 - 蒙大拿州,科罗拉多州和犹他州 - 新墨西哥州。西北区   由两个地区组成:华盛顿州和俄勒冈州 - 爱达荷州   领土。太平洋沿岸地区由两个人组成   地区:加利福尼亚州和内华达州。太平洋   区包括夏威夷领土和阿拉斯加领土。每   领土有一个独特的地区代码。

     

然后将每个销售区域划分为销售区域。对于   例如,科罗拉多州由两个销售区域组成:Front Range和   西斜坡销售区。每个销售区域都有一个独特的销售区域   代码。

     

每个销售人员负责一个或多个销售区域,并且有一个   具体的销售配额。我们还有负责的销售经理   对于一个或多个销售区,以及销售总监   负责一个或多个销售区域。每个销售经理都是   负责他/她所在地区的领土。我们没有   重叠我们员工的责任。每个销售区域始终是   单个销售人员的责任,以及我们的经理和   董事的责任不重叠。有时我们的销售人员,   经理和董事将有特殊的任务,而不是   负责销售。我们通过他们识别我们所有的销售人员   员工ID。“

以下两个ERD作为此问题的解决方案:

Solution

据我所知,在这种情况下也允许使用以下两种型号: Alternative

Alternative2

同样,以下两个模型是否也具有逻辑意义?: Proposal

Proposal2

据我所知,每个模型的变化都很大,但它们在逻辑上是否相等?

1 个答案:

答案 0 :(得分:0)

  

“他们在逻辑上是否相同?”

简而言之,没有。

所有模型都介绍了不同类型员工之间的管理关系。这是一个无根据的假设,因为在用例描述中没有任何内容可以表明情况。员工的责任都是根据部门细分来定义的。

我认为将SALES_DIVISION和SALES_ENTITY表示为单个分层实体的模型是错误的。这在逻辑上相似,但我们已经失去了业务规则。 REGION的严格等级> DISTRICT> TERRITORY> AREA是看不见的。同样,我们不再显示规定哪种类型的员工负责每种类型的区域的规则。此外,我们失去了哪些类型具有quota属性而哪些不具有{{1}}属性的区别。

逻辑数据建模的目的是尽可能清楚地直观地表达业务规则。这意味着在不添加不存在的规则的情况下完整地表示所有内容。当我们将逻辑模型转换为物理模型时,我们可以选择将多个实体合并到一个表中,但我认为ERD应该尽可能具有表现力。

相关问题