Database design EER图继承

Database design EER图继承,database-design,entity-relationship,shared-primary-key,Database Design,Entity Relationship,Shared Primary Key,在下面这样的场景中 受让人和转让人是开发人员和测试人员的关键。如何将emp_id映射为外键而不被复制?这些主要是员工的角色-开发人员、测试人员、业务分析师等。一种方法是为每个角色类型创建多个表-因此您最终会创建类似于开发人员的表,Tester等。您将有一个EmployeeID字段作为外键进入Employee表。 另一种方法是(我推荐)使用一个名为EmployeeRole的表,在该表中,您可以为员工可以拥有的每个角色创建一个记录。这样,您就不必在每次提出新角色时都创建一个新表。这只是在Empl

在下面这样的场景中


受让人和转让人是开发人员和测试人员的关键。如何将emp_id映射为外键而不被复制?

这些主要是员工的角色-开发人员、测试人员、业务分析师等。一种方法是为每个角色类型创建多个表-因此您最终会创建类似于
开发人员的表,
Tester
等。您将有一个
EmployeeID
字段作为
外键
进入
Employee
表。


另一种方法是(我推荐)使用一个名为
EmployeeRole
的表,在该表中,您可以为
员工可以拥有的每个角色创建一个记录。这样,您就不必在每次提出新角色时都创建一个新表。这只是在
EmployeeRole
表中添加一条新记录的例子。这也适用于
员工扮演多个角色的场景,即开发人员和测试人员在不同问题上的角色。

请看。使用这种技术,您可以将emp id用作tester和developer表中的主键,也可以用作引用employee表的外键。这是实施is-a关系时的常见做法。

您自己是否提出过任何设计/模型?你能在这里分享吗?我想唯一能做的就是,为每个测试人员和开发人员自己声明主键。你能举一个你试图避免重复的例子吗?我认为设计中没有问题-
转让人
受让人
应包含相关的
emp\u id
s。是的,我也同意你的看法。将受让人和转让人作为外键,引用emp_id将解决我认为的问题。我是对的吗?@reaanbb但我需要有两个外键指向问题表,其中一个外键指向employeeId,一个外键指向tester,另一个外键指向developer我如何实现这一点,而不是直接引用Employee表,您必须引用
EmployeeRole
表(
EmployeeRoleID
列),该表将依次引用
Employee
表。因此,要获取有关问题的
员工
详细信息,您的查询如下:
选择Emp.*从问题I在I.TesterID=ER.EmployeeRoleID上加入Emp在ER.EmployeeID=Emp.EmployeeID上加入Emp
您的“解决方案”不允许强制执行引用完整性,并滥用代理键来创建预定的访问路径,这将对查询施加额外的连接和复杂性。@reaanb通过
EmployeeRole
表实现
Issue
Employee
之间的引用完整性。然而,我意识到,对于这个问题,我的答案过于复杂。它确实有一个用例,我很乐意在这个问题之外讨论,但对于这个特定场景,我们只需要
转让人
受让人
员工
表中引用
emp\u id
@Gayan为给你带来困难而道歉!没关系,阿米特。我用你的回答引起了我的注意。谢谢