为什么er图的属性改一个另外一个也改变了

如题所述

在ER模型中,实体具有可以是各种类型的属性,如单值,多值,复合,简单,存储,派生和复杂。但是关系也可以具有与之相关的属性。通常,如果不需要,不建议为关系提供属性,因为在将ER模型转换为关系模型时,事情可能会变得复杂,我们可能需要创建一个单独的表来表示关系。让我们看看各种情况,以及何时需要借助示例为关系赋予属性:

1.一对一关系:

在一个组织中,员工管理一个部门,每个部门由一些员工管理。因此,em> Department实体全部参与,并且给定实体之间存在一对一的关系。现在,如果我们想要存储员工开始管理部门的Start_Date,那么我们可能会认为我们可以将Start_Date属性赋予关系管理。但是,在这种情况下,我们可以通过将Start_Date属性与Employee或Department实体相关联来避免它。
假如有n个一对一关系,也就是有n个数据对象需要存储(寄生),这时候正好有n个员工和n个部门,所以2个反向都可以寄生。

2.一对多关系:

在一个组织中,许多员工可以为一个部门工作,但每个员工只能在一个部门工作。因此,实体之间存在一对多的关系。现在,如果我们想在员工开始为部门工作时存储Start_Date,那么我们应该将其分配给Employee实体,而不是将其分配给关系。将其分配给员工实体是有道理的,因为每个员工只能为单个部门工作,但另一方面,一个部门可以让很多员工在其下工作,因此,如果我们将Start_Date属性分配给Department,则没有意义。
这时候,假设有n个员工,则有n个一对多关系需要寄生,而部门的数量<n,所以只能将start date数据存在n个员工身上。

3.多对多的关系:

在一个组织中,员工可以同时处理许多项目,每个项目都可以让很多员工参与其中。因此,这是一个多对多的关系。因此,将Number_of_Working_hours分配给员工将无法工作,因为问题是它将存储哪个项目的工作时间,因为单个员工可以处理多个项目。与项目实体的情况类似。因此,我们被迫将Number_of_Working_hours属性分配给关系。

这时候,假设有m个员工和n个项目,关系数最多的情况是两两都有关系,即总关系数为m*n,但是现在总共能存储的位置只有m+n个,根本不够存放,所以两边都不能移动。

结论:仅在多对多关系的情况下为关系提供属性。
温馨提示:答案为网友推荐,仅供参考
相似回答