Database 数据库管理系统中的ISA关系
我正在读罗摩克里希南写的《数据库管理系统简介》,在那里我看到了下面的ER图: 上面说Database 数据库管理系统中的ISA关系,database,database-design,relational-database,Database,Database Design,Relational Database,我正在读罗摩克里希南写的《数据库管理系统简介》,在那里我看到了下面的ER图: 上面说 "For example, we might identify a subset of employees as Senior Emps. We can modify Figure 2.12 to reflect this change by adding a second ISA node as a child of Employees and making Senior Emps a child of
"For example, we might identify a subset of employees as Senior Emps. We can
modify Figure 2.12 to reflect this change by adding a second ISA node as a
child of Employees and making Senior Emps a child of this node."
我的问题是,为什么我们需要另一个ISA节点?我们为什么不将这个新实体添加到当前ISA节点?那有关系吗
谢谢您创建任何具有ISA关系的实体的原因是为新实体提供附加属性 就像在面向对象建模中一样,您可以创建一个新的子类,这样新类就可以相对于其超类拥有额外的数据或额外的方法 因此,这个例子的含义是,资深员工应该有一些新的栏,例如存储服务年限奖励或其他 如果没有老年员工独有的新属性,我只会将其视为普通员工,无需创建新的子表。“我们不能使用现有的ISA节点来创建此关系吗?” (免责声明:这一切都有点开玩笑。ER从来没有真正打算在逻辑上完整和准确地表达其表达能力,而且有如此多不同的ER方言,以至于很难绝对确定某些特定方言想要表达什么,如何表达,以及不想表达什么) 您将失去的是各种“子实体”之间的排他性特征。您所给出的示例设计可能是为了明确地记录这样一个概念,即员工永远不可能同时是小时管理计划和合同管理计划 如果一名员工既可以是“高级”员工,也可以是“合同”员工,那么他们之间就没有排他性,如果ER方言是一个三角形,想要表达这种排他性,那么你的解决方案就错了
但是(重复)请注意,这些都不是石头铸的。这一切都取决于特定ER方言中使用的符号的预期语义。该模型存在问题。如果某人同时是一家公司的高级员工(兼职)和子公司的合同员工(兼职),该怎么办。哦,它碎了 问题是一个人不是雇员。人是指与其他方没有或有更多关系的人
看看Party模型(Silverston/Hay/Fowler)。在我看来,当前的ISA节点(即上图)决定了员工的薪酬,因此简单地在当前节点上添加另一个节点没有多大意义,因为资深员工可以是小时制或合同制 这有意义吗 ISA的两个优点:
可能是因为来自任何给定ISA的选择必须是相互排斥的。雇员可以是小时制的,也可以是合同制的。再加上Senior,它不是第三个分支,它是一种完全不同类型的ISA关系。@NealB那么你是说,既然小时工和合同工在某种程度上是相关的,我们使用相同的ISA节点,但对Senior员工使用相同的ISA节点是错误的,还是使用另一个ISA节点只是为了可读性更好?谢谢,但事实上这不是我要问的。假设资深员工具有新的属性,我们将建立ISA关系。我想知道的是,为什么我们需要另一个ISA节点?我们不能使用现有的ISA节点来创建这种关系吗?