Database design ERD-如何将两个实体之间的关系建模为第三个实体;属性";

Database design ERD-如何将两个实体之间的关系建模为第三个实体;属性";,database-design,data-modeling,entity-relationship,erd,Database Design,Data Modeling,Entity Relationship,Erd,我正在为实体关系图建模,结果卡住了。我不确定我的考虑是否有误,或者ERD无法模拟我想要的: 我有三个实体:员工、项目和角色。员工和项目之间有一种关系:员工正在从事一个项目。但该员工不仅仅是在这个项目上工作,他/她还拥有一个作为角色指定的操作领域。但关系不是仅仅用属性来描述吗?我怎样才能做出“一名员工作为……”这样的事情?当然,我可以使用roleId作为属性,因为我会将其设计为数据库,但ERD中的关系是什么?EMPLOYEE 员工id(主键) 项目 项目标识(pk) 项目描述 角色 角色

我正在为实体关系图建模,结果卡住了。我不确定我的考虑是否有误,或者ERD无法模拟我想要的:

我有三个实体:员工、项目和角色。员工和项目之间有一种关系:员工正在从事一个项目。但该员工不仅仅是在这个项目上工作,他/她还拥有一个作为角色指定的操作领域。但关系不是仅仅用属性来描述吗?我怎样才能做出“一名员工作为……”这样的事情?当然,我可以使用roleId作为属性,因为我会将其设计为数据库,但ERD中的关系是什么?

EMPLOYEE
  • 员工id(主键)
项目
  • 项目标识(pk)
  • 项目描述
角色
  • 角色标识(pk)
  • 角色描述
如果员工每个项目只能有一个角色:

员工项目地图
  • 项目id(主键,fk到项目)
  • 员工id(主键、fk到员工)
  • 角色id(fk到角色)
如果员工每个项目只能有1个以上的角色:

员工项目地图
  • 项目id(主键,fk到项目)
  • 员工id(主键、fk到员工)
  • 角色标识(主键、fk到角色)
两者之间的区别在于后一版本中的复合主键include角色。作为所有三列的复合主键,值的组合必须是唯一的,从而使以下内容有效:

project_id  employee_id  role_id
---------------------------------
1           1            1
1           1            2
然而,如果角色id不包含在复合主键中,则只能对用户和项目进行一次组合,这意味着用户只能有一个角色

检查约束不起作用-它只检查行,而不是整个表。虽然触发器可以工作,但当您可以通过复合主键或唯一约束强制关系时,为什么还要麻烦呢?触发器在ERD中不可见,也不存在类似于
CREATE TABLE
DESC TABLE\u name

“在设计数据库之前,我希望将问题建模为实体关系图(使用Chen的符号).在这个图中,我想在员工和项目之间建立一种关系,而不必看下面的关键点和约束条件。”

如果两者(员工和项目)之间的关系是多对多的,并且该关系具有描述(提供)关系(发生)的更多属性,那么您通常别无选择,只能“实例化”关系,即将其定义为额外实体。有些工具支持ERD方言,允许为任何关系指定其他属性(在一个指向关系箭头的圆形框中),但这不是常见做法。

如何对关系建模。。。实体。。。属性
在设计数据库之前,我希望将问题建模为实体关系图(使用Chen的表示法)。在这个图中,我想在employee和project之间创建一个关系,而不用看下面的键和约束。 附录:我只知道通过属性扩展的两个实体之间的关系,但我如何建模这个“三实体关系”

这完全可以理解,而且非常正确。纸张很便宜,数据库中的对象更改起来要贵一点。对需求建模并不断改进,直到您有信心为止,然后实施

许多场地的问题是,有许多木匠,他们虽然用心良苦,但将每个问题都视为钉子,并提供DDL,而不是要求的建模协助。缺少的是上下文和意义,因此最终的结果是一个具有固定“键”但缺少上下文和意义的快速实现。建模允许我们对与我们相关的各个方面进行建模,而不必关心DDL中的情况

另一种说法是,OMG回答了一个问题:我如何将“一名员工在这个项目上的工作方式……”建模?孤立地;我在上下文中回答你的整个问题

在逻辑层面上,多对多关系是正确的。这种不考虑其他因素的关系在物理级别上呈现为关联表。但同样,现在做出决定还为时过早,因为您仍在对关系的上下文和含义进行建模

。。。提供它也不在如此降价标记法的范围之内。在IME中,像Oracle Designer这样的工具会在创建实体后生成这样的图表

胡说八道。建模的整个思想是在编写一行代码、购买一个平台或必须实现DDL之前,使用图表在纸上开发和改进一些东西。评论仅仅是在事实发生后对现有数据库进行反向工程,这是许多产品提供的

建模、进展示例 使用任何对你有意义的符号,来模拟你所需要的。当然,标准符号更为普遍理解。这是一个

(我不知道“如此降价表示法”如何限制在事实建模之前提供建议)。我提供了一个可能发生的进展的例子。没有什么是“对”或“错”,都是纸片;直到你决定哪些元素值得确认,然后下一步是可能的

  • 当然,起点是简单的多对多关系,根据你的标题,你知道一些事情。试图建立一个概念上的三方关系模型是不正确的,这是一个建模错误:为了解决一个三角恋,你需要首先分别确定双方之间的离散关系;这意味着所有关系都是双向的

  • 项目、员工和角色实体是明确的,我们对它们有所了解。在这里,我没有开发主要实体,因为它们是“stron”