Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access ERD关系不';在access数据库中没有意义_Ms Access_Database Design_Erd - Fatal编程技术网

Ms access ERD关系不';在access数据库中没有意义

Ms access ERD关系不';在access数据库中没有意义,ms-access,database-design,erd,Ms Access,Database Design,Erd,我正在创建一个数据库作为一个类的最终项目。这是我第一次创建数据库,我遇到了一些麻烦 现在,我所从事的业务实际上没有任何业务规则,至少我可以从在那里工作的三位经理中得到这些规则。所以我根据他们的工作和我在那里工作的经验得出的结论是: 一对多员工在现金责任表中有行,每个员工在表中只有一行。 一对多员工打卡,但每个员工在系统中只有一条记录 所有员工都有工资,但每个员工只有一份工资 有许多部门领导,但每个部门只有一个领导 每个部门负责人仅为一个部门的负责人 这就是我如何基于这个ERD的,但是当实

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

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

  • 一对多员工在现金责任表中有行,每个员工在表中只有一行。
    • 一对多员工打卡,但每个员工在系统中只有一条记录
    • 所有员工都有工资,但每个员工只有一份工资
    • 有许多部门领导,但每个部门只有一个领导
    • 每个部门负责人仅为一个部门的负责人
这就是我如何基于这个ERD的,但是当实际创建具有这些关系的数据库时,它不起作用。我想弄清楚如何更正此ERD,以便数据库中的关系正确无误。当我创建数据库时,工资表、现金责任表和时钟表都将employee id作为外键,而不是employee表有三个主键,因此数据库工作正常


以下是ERD的链接

一些评论/问题:

  • 如果你打算将工资放在一个单独的表格中,那么你最好将其设置为
    1:many
    。i、 e.将
    EmpID
    放在
    WageID
    中,并从
    Employee
    中删除
    WageID
    。这使您可以跟踪每个员工的多个工资,这是事实,因为工资通常会发生变化。你可以有一个工资开始日期/结束日期(即雇员1234在2011年获得1万美元的工资,2012年获得1.5万美元的工资)。既然现在是1:1的关系,你也可以把它放在一张桌子上

  • 我没有遵循你的
    时钟结构。正如你所写的那样,员工只能打卡上班/下班一次。他们肯定会在星期二上班

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

  • 您可以指定部门领导,但无法显示领导下的员工。i、 e.没有与下属部门的链接

  • 编辑:


    我现在看到您的问题了,为什么Employee表没有3列主键。主键是您希望它是什么,但在employee表中包含与员工无关的内容,尤其是不作为识别该员工的主键,这是不符合逻辑的。WageID、TimeID和CashID与员工本身无关,因此它们不应位于员工表中,当然也不应位于主键中

    工作的方式是,只有当最低工资增加时,工资才会改变,这就是为什么会这样。EmpID在access数据库的工资表中,我只是在ERD中镜像时遇到了问题。此外,即使有部门领导头衔,也没有下属实际处于领导之下。这就是为什么没有链接@Brad
    工资不会改变[除非]最低工资增加
    。所以他们可以改变?但是,如果您希望每个员工只有一份工资,请将其放在employee表中。如果是这样的话,那么把它放在一个单独的表中是没有意义的。这是不必要的加入。我已经改变了关系。谢谢你,我读了一些关系,比如一个员工每天打卡一次,所以表中只有一行,但如果员工在整个雇佣过程中多次打卡,这就更有意义了。工资和时钟表现在将EmpId作为外键,并具有零对多关系@Brad@Brad不,没有。这只包含数据库设计,不包含任何代码。这对于代码审查来说是离题的。为了避免问题在多个网站上被关闭,请使用自定义标志标记迁移(以便版主可以拒绝或不拒绝),或者投票关闭,因为这是离题的,而不是因为您认为它属于某个地方else@SimonAndr埃弗斯伯格:对不起,我只是快速搜索了一下代码评审,找到了很多问题,希望对包含ERD的数据库设计进行评审。ERD被表示为图片而不是创建语句似乎并不重要,因为概念是相同的。@Brad at,我们检查代码,因此任何没有代码的问题都不可能在主题上。这是一个不可能的问题。@Brad你绝对确定这个问题是离题的吗?它有一个已经被接受的答案。有必要迁移吗?@Brad说真的吗??你因为建议不规范地迁移到CR而被拒绝,现在你正试图为程序员做同样的事情?建议迁移之前,请阅读站点帮助中心。如果你甚至有点不确定:最好不要