Mat*_*asG 3 database-design erd entity-relationship data-modeling
我正在建立一个实体关系图并且卡住了.我不确定我的考虑是否错误或者ERD无法模仿我想要的东西:
我有三个实体:员工,项目和角色.Employee和Project之间存在关系:员工正在处理项目.但是这名员工不仅仅是在这个项目上工作,他/她还有一个作为角色的运营领域.但这不是一个属性所描述的关系吗?我怎样才能做出类似"员工在这个项目上工作......"的内容?当然我使用roleId作为属性,因为我将其设计为数据库,但是ERD中的关系是什么?
如果员工每个项目只能有一个角色:
如果员工每个项目只能有1个以上的角色:
两者之间的区别在于复合主键包含后一版本中的角色.作为所有三列的复合主键,值的组合必须是唯一的,使得以下内容有效:
project_id employee_id role_id
---------------------------------
1 1 1
1 1 2
Run Code Online (Sandbox Code Playgroud)
如果组合主键中没有包含role_id ,则只能创建用户和项目的一个组合 - 这意味着用户只能拥有一个角色.
CHECK约束不起作用 - 它只检查行,而不是整个表.虽然触发器可以工作,但是当您可以通过复合主键或唯一约束强制执行关系时,为什么还要烦恼?触发器不会在ERD是可见的,也不像陈述CREATE TABLE
或DESC table_name
.