【问题标题】:ERD relationships don't make sense in access databaseERD 关系在 access 数据库中没有意义
【发布时间】:2015-04-25 02:57:27
【问题描述】:

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

现在,我为之做这件事的业务实际上并没有任何业务规则,至少我可以从在那里工作的三位经理中的任何一位那里得到这些规则。所以我根据他们所做的以及我在那里工作的了解得出的结论是:

  • 一对多员工在现金责任表中有行,每个员工在表中只有一行。
    • 一对多员工打卡进出,但每位员工在系统中只有一条记录。
    • 所有员工都有工资,但每个员工只有一份工资
    • 部门主管很多,但每个部门只有一个主管
    • 每个部门主管只能在一个部门中担任主管

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

这是 ERD 的链接

【问题讨论】:

  • @Brad 不,它没有。这仅包含数据库设计,不包含任何代码。这与代码审查无关。为避免问题在多个站点上被关闭,请使用自定义标志标记迁移(以便版主可以拒绝或不拒绝)或投票关闭 ,因为它与 SO 无关,而不是因为您认为它属于别的地方
  • @SimonAndréForsberg 抱歉,我刚刚快速搜索了代码审查,发现很多问题都在寻找包含 ERD 的数据库设计的审查。将 ERD 表示为图片而不是 CREATE 语句似乎并不重要,因为概念是相同的。
  • @Brad at Code Review,我们查看代码,因此任何没有任何代码的问题都不可能成为话题。这是一个非首发。
  • @Brad 你确定这个问题对于Stack Overflow 来说是题外话吗?它有一个已经被接受的答案。是否需要迁移?
  • @Brad 来吧说真的吗?? 你因为在不知情的情况下建议迁移到 CR 而被贬低,现在你正试图为程序员做同样的事情?在推荐迁移之前,请阅读网站的帮助中心。如果您甚至有点不确定:最好不要

标签: ms-access database-design erd


【解决方案1】:

一些问题/问题:

  1. 如果您要将工资放在单独的表格中,那么您不妨将其设为1:many。即将EmpID 放入Wages 并从Employee 中删除WageID。这使您可以跟踪每位员工的多个工资,这是现实,因为工资通常会发生变化。您可以有一个工资开始日期/结束日期(即 Employee1234 在 2011 年获得 10k $,在 2012 年获得 15k $)。由于现在是 1:1 的关系,您不妨将它放在一个表中。

  2. 我没有遵循您的 TimeClock 结构。正如您所写的那样,员工只能打卡/打卡一次。他们肯定会在星期二来上班。

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

  4. 您可以指定部门负责人,但无法显示领导下的员工。即没有链接到下属的部门。

编辑:

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

【讨论】:

  • 工作的方式是,只有在最低工资增加时工资才会改变,这就是为什么会这样。 EmpID 在 access 数据库的工资表中,我只是在 ERD 中镜像它时遇到了麻烦。而且,虽然有部门领导头衔,但实际上并没有部属。这就是为什么没有链接的原因。 @布拉德
  • the wages don't change [except] when there is a minimum wage increase。所以他们可以改变吗?但是,如果您只想为每位员工提供一份工资,请将其放在员工表中。如果是这种情况,那么将其放在单独的表中是没有意义的。这是一个不必要的连接。
  • 我已经改变了关系。谢谢,我正在阅读诸如与时钟表的关系,因为一名员工每天打卡一次,所以他们只有一行在表中,但它更有意义,因为员工在整个课程中多次打卡的就业。工资和时钟表现在具有 EmpId 作为外键和零对多关系。 @布拉德
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 2015-06-25
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多