繁体   English   中英

在ERD中,表的外键是否可以在没有新关系的情况下引用中间表另一侧的表的主键

[英]In an ERD, can a foreign key of a table refer to the primary key of the table on other the side of of an intermediate table without a new relation

想象一个 ERD,它有一个Employees (employee_id 作为主键)、 Tasks (employee_id、project_id 作为复合主键和外键)、 Projects (project_id 作为主键)表。 Tasks是Projects和Employees的中间表。

员工与任务有关系,任务与员工和项目有关系,项目与任务有关系。

现在,想象一下,如果不在 Projects 和 Employees 之间绘制额外的关系,我会在 Projects 中放置一个名为 e_id 的外键,它引用 Employees 的 employee_id。

我是否可以在不绘制额外关系的情况下这样做,我不这么认为。 我的意思是它们通过中间表连接,但我认为在 ERD 图中这样做是不合法的,这真的让我想到了我的问题子问题

在 ERD 图中,如果这两个表具有绘制关系(我的意思是从一个表到另一个表绘制的一条线没有首先通过中间表停止)

我真的希望我的问题很清楚

祝你有美好的一天!

想象一个 ERD,它有一张Employees表( employee_id作为主键)、 Tasksemployee_idproject_id作为复合主键和外键)、项目表( project_id作为主键)。 TasksProjectsEmployees的中间表。

  • EmployeesTasks有关系。
  • TasksEmployeesProjects有关系
  • ProjectsTasks有关系。

你是说像这样?

在此处输入图像描述

现在,想象一下,如果不在ProjectsEmployees之间绘制额外的关系,我会在Projects中放置一个名为e_id的外键,它引用Employeesemployee_id

我可以在不建立额外关系的情况下这样做吗?

为时已晚:您已经定义了这种新关系:认为 ER“关系”FOREIGN KEY约束,反之亦然。

将外键从Projects.e_id添加到Employees_employee_id的行为也意味着您要在 Project 和 Employee 实体之间添加新关系。

...像这样:

在此处输入图像描述

我不这么认为。 我的意思是它们通过中间表连接,但我认为在 ERD 图中这样做是不合法的,这真的让我想到了我的问题子问题

  • “我的意思是它们是通过中间表连接的” -当您说“中间表”时,我假设您指的是多对多链接表,但请考虑...
    • ...在 ER 图中的多对多关系中,链接表不是实体
    • Tasks它自己的实体(尽管Tasks表还没有任何数据属性/plain-ol-data-columns。此外,它被称为“ Tasks ”(名词)这一事实也强烈暗示它是它自己的实体。
    • ......并且没有什么能阻止任何实体与任何其他实体建立关系 - 除非在某些情况下你有一些紧迫的域规则反对它。

在 ERD 图中,如果这两个表具有绘制关系(我的意思是从一个表到另一个表绘制的一条线没有首先通过中间表停止)

“ERD图”? 我一定要向裁员部举报你!

重复我之前的观点:ER 图中的“绘制关系”或“绘制线”表示这两个表之间的外键约束。 在一张纸上画一条线不是实现FOREIGN KEY约束的先决条件。

(此外,外键还可以引用辅助键(又名UNIQUE KEY ),而不仅仅是PRIMARY KEY约束,ofc)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM