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

时间:2015-04-24 18:07:26

标签: ms-access database-design erd

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

现在,我这样做的业务并没有真正的业务规则,至少我可以从在那里工作的三位经理中找到任何业务规则。因此,我根据他们的工作以及我在工作中所知道的内容得出的结论是:

  • 一个到多个员工在现金责任表中有行,每个员工在表中只有一行。
    • 一个或多个员工进出时间,但每个员工在系统中只有一条记录。
    • 所有员工都有工资,但每位员工只有一份工资
    • 有很多部门主管,但每个部门只有一个主管
    • 每个部门负责人只是一个部门的负责人

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

ERD 这是ERD的链接

1 个答案:

答案 0 :(得分:1)

一些意见/问题:

  1. 如果您打算将Wages放在一个单独的表中,那么您也可以将它1:many。即将EmpID放入Wages并从WageID移除Employee。这可以让你跟踪每个员工的多个工资,这是现实,因为工资通常会发生变化。你可以有一个工资待命/结束(即雇员1234在2011年支付10k $,在2012年支付15k $)。因为它现在与1:1的关系,你也可以把它放在一张桌子里。

  2. 我没有关注您的TimeClock结构。正如您所写的那样,员工只能在时钟输入/输出一次。当然,他们将在周二上班。

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

  4. 您可以指定部门主管,但无法显示哪些员工处于领先地位。即没有与下属部门的联系。

  5. 编辑:

    我现在看到你的问题,为什么Employee表没有3列主键。主键是您想要的任何东西,但是将不是员工的事物作为员工表中的人员而不是作为识别该人员的主键是不合逻辑的。 WageID,TimeID和CashID与员工本身无关,因此他们不应该在员工表中,当然也不应该在主键中。