ERD 关系在访问数据库中没有意义

ERD relationships don't make sense in access database

我正在创建一个数据库作为 class 的最终项目。这是我第一次创建数据库,我遇到了一些麻烦。

现在我从事这项工作的公司实际上没有任何业务规则,至少我可以从在那里工作的三位经理中的任何一位那里得到。所以我根据他们的工作和我在那里工作的知识得出的结论是:

这就是我基于此 ERD 的方式,但是当实际创建具有这些关系的数据库时,它不起作用。我想弄清楚如何更正此 ERD,以便数据库中的关系正确。当我创建数据库时,员工 table 没有三个主键,工资、现金责任和时钟 table 都将员工 ID 作为外键,数据库工作正常目的。

这是 ERD

的 link

一些comments/questions:

  1. 如果您打算将工资放在一个单独的 table 中,那么您不妨将它 1:many。即,将 EmpID 放入 Wages 并从 Employee 中删除 WageID。这使您可以跟踪每个员工的多个工资,这是现实,因为工资通常会发生变化。您可能有一份工资 begindate/enddate(即 Employee1234 在 2011 年的工资为 10k $,在 2012 年的工资为 15k $)。就像现在 1:1 关系一样,你也可以将它放在一个 table.

  2. 我没有遵循您的 TimeClock 结构。正如您所写,员工只能 in/clock 下班一次。当然他们会在星期二上班。

  3. CashAccountability中的逻辑相同。每个员工只能负责一次提款。我认为你在这里寻找多对多关系,你应该研究如何实现这种数据结构。基本上,它允许 CashAccountability 被 linked 给多个员工,一个员工被 linked 给多个 CashAccountabilitys.

  4. 您可以指定部门领导,但无法显示领导下的员工。即没有 link 给下属的部门。

编辑:

我现在明白你的问题,为什么 Employee table 没有 3 列主键。主键是您想要的任何东西,但将与员工无关的事情作为员工中的一个人来参与是不合逻辑的 table ,尤其不是作为识别该人的主键。 WageID、TimeID 和 CashID 与员工本身无关,因此它们不应该在员工 table 中,当然也不应该在主键中。