2017-05-25 49 views
0

我学习Oracle数据库12c的SQL数据建模通过Oracle学院服务。在了解了递归和层次关系以及如何建模之后,提出了以下问题:关注关于分层和递归ERD建模

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

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

每个销售人员负责一个或更多的销售区,一个 具体的销售配额。我们也有销售经理负责 一个或多个销售区域谁是,销售主管谁是 负责一个或多个销售区域。每个销售经理 负责他/她的区域的领土。我们不会 重叠我们的员工的责任。每个销售区域始终是单个销售人员的责任,我们的经理和董事的职责不重叠。有时,我们的销售人员,经理和董事将负责特殊任务,并且不会负责销售。我们通过他们的 员工ID识别我们所有的销售人员“

以下两个ERDS呈现为这个问题的解决方案:

Solution

我明白,下面的两个车型也允许在这种情况下: Alternative

Alternative2

同样,将以下两种模式也使逻辑意义?: Proposal

Proposal2

我明白,在每一种模型差别很大,但它们在逻辑上也是平等的吗?

回答

0

“它们在逻辑上是否相等?”

总之,没有。

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

我认为代表SALES_DIVISION和SALES_ENTITY作为单个层次实体的模型是错误的。这在逻辑上是相似的,但我们失去了商业规则。 REGION> DISTRICT> TERRITORY> AREA的严格等级是不可见的。同样,我们不再显示规定哪种类型的员工负责每种类型的区域的规则。我们也失去了哪些类型具有quota属性的区别,哪些不具有。

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