我的意图是让列("assignedTo" , "loggedBy" , "completedBy" )
引用"Employee"
的多个记录,"ID"
我不得不假设它是一个多对多的关系,但是我不知道应该如何实现它。
下面是我的ERD的截图,展示了我的数据库当前的样子:
最佳答案
看起来您需要使用@bas建议的连接/连接表。
我相信,创建所需关系的实际表需要如下所示:
(我的图表遗漏了一些其他表,我认为这些表对于说明使用连接表的多对多关系的概念并不重要。)
您会注意到,我已经从任务表中删除了loggedby、assignedto和completedby列。当你做一个多对多的关系,你不需要他们。表之间那些连接的信息存储在连接表中。
我们为什么要这么做?
让我们以assignedto关系为例…
由于我们不知道一个任务可以分配多少员工,因此无法在“任务”表中为员工的ID创建列。同样,由于我们不知道一个雇员可能被分配多少个任务,因此无法在employees表中为任务的id创建列。如果我们试图这样做,我们可能没有足够的列,或者我们可能有太多的列。这两个问题都不是好问题。
相反,每当我们想在具有多对多关系的表之间建立连接时,我们都会在相关的连接表中放置一个新条目。我们可以添加任意多个或任意少个连接,而不会出现任何问题。
希望这更有意义。当您试图在关系数据库中建立多对多关系模型时,事情肯定会看起来更加混乱。