【发布时间】:2016-10-15 19:19:48
【问题描述】:
我的数据库中有 2 个表正在尝试在 mysql 工作台中设计。
1 表 - 公司
1. ID
2. Company
3. Company_Number
4. Created_Date
2 表 - 员工
1. ID
2. Employee
3. Company_Number
4. Created_Date
我想在公司和员工之间建立关系。 1 公司可以有多名员工。问题是我不能将 Company_Number 作为主键,因为这些键可能会重复,因为每天都会转储数据。此外,一名员工可以为多名员工工作,但对于每家公司,他/她将有一个额外的数据行。
有没有办法在这两个表之间建立两个关系? 1 对 1 created_date - created_date & 一对多 company_number 到 company_number
【问题讨论】:
-
通常的方法是创建一个表
company_empoyee,其中包含(companyid, employeeid)列(两者的组合是该表的主键,两者都引用基表)。我看不出这会成为问题的原因。如果您转储数据(我没有得到那部分),请使用临时表。 -
@Solarflare 我试图找到最常见的做法。好吧,我的意思是说,每天都会有一份为所有这些公司工作的公司和工人的列表添加到数据库中,这就是为什么我不知道主键应该是什么,因为每天的数据都会非常相似。
-
这是一个有趣的语义问题。在组织与个人之间的关系完成之前,员工不是员工。在这个解决方案上,我必须同意 Solarflare。您提出的结构非常“封闭”,不允许员工离职。看了你上面的评论后,我有一个问题:这更像是一种仓储工作吗?
-
基本上我正在收集具有相同索引的公司,并且在员工中我将存储这些员工(官员)的姓名和公司中的职位。每个员工可以为多家公司工作,可以担任不同的职位。
-
我理解正确吗?对于每次新的导入,您将在公司表中多次添加同一公司?不要那样做。如果您绝对需要,您可以创建一个
history-table,在其中为每个导入添加一行。但是公司表应该只有一行代表一家公司。对员工也一样。而company_employee将允许您拥有多个连接:将例如(1,1), (1,2), (2,2)添加到您的表中,然后工人1为公司1工作,工人2为公司1和2工作。 (所以一个公司可以有多个工人,一个工人可以为多个公司工作)
标签: mysql sql mysql-workbench