ER图1:N关系转换

问题描述

如果我有员工和项目以及一对多关系(很多项目,即员工可以分配到多个项目,而一个项目恰好分配给一位员工) 该表将是:

员工(身份,姓名,电话)

项目(proid,proname,cost, empid

我可以将proid键移动到employees表中吗:

员工(身份,姓名,电话, proid

项目(proid,proname,cost)

这种转换是错误的还是正确的? 如果最后一次转换错误,为什么会出错?

解决方法

您必须将empid添加到Projects表中。当您将proid列添加到Employees表中时,您只能引用一个项目。如果您有一名员工被分配到多个项目,您将得到以下信息:

Employees(1,"John","123-456-789",42)
Employees(1,20)

如您所见,您的表中将有两次雇员,更不用说发生主键冲突了。因此,您必须将员工ID保存在Projects表中。

Projects(42,"Research",10000,1);
Projects(20,"Analysis",3000,1);