我目前正在制作一个工资单系统,其中有两个表,account_table和payslip_table。我目前在数据库设计上遇到了麻烦,在创建两个表之间的关系还是根本不创建一个表之间,我感到很困惑。我想我将首先解释这个系统是如何工作的:
account表有以下列:
工资单表有以下列:
这个系统的要求是,业主想上传一张工资单,即使“没有一个帐户的用户”。
问:那为什么你的桌子是这样设计的?
答:工资单本质上有一个employee_id,它的存在是决定哪一张付款单拥有哪一张的关键。要想有效地显示工资单,我所需要做的就是将会话用户(我已经提到的是他们的员工id,因为这是他们的用户名)和工资单表上的employee_id进行比较,并只重复被击中的行。
当用户不再是员工时,工资单会发生什么变化?payslip_table上将有无用的行
答:我决定创建一个名为created_on的专栏,并添加一个triger来删除3个月前的工资单(因为它们已经没用了)
当用户不再是员工时,帐户会发生什么变化?
管理员有权删除用户,一旦用户离开公司,管理员就可以终止帐户,如上所述,删除用户的工资单最终将被删除。
问:为什么要经历这些麻烦?
业主明确表示,即使一个账户尚未开立,他也希望将工资单准备好。因此,如果一个人要创建一个账户,他的工资单就会自动准备好供查看。
我在数据库设计方面的知识非常少,我对建议非常开放。
或者,如果你们可以建议另一种方法来实现使用外键的要求,那么这将是最好的方法。
发布于 2015-02-02 13:13:19
您应该在这两者之间创建一个关系,正如您可以看到的那样,here可以将一个空值添加到外键字段中,然后用一个employee_id填充它。
这将有助于查找行,并确保不存在浪费空间的无用数据。
我看到的唯一问题是管理员将如何将已经在系统上的工资单链接到一个新的员工帐户。为新员工号码找到正确的工资单
https://stackoverflow.com/questions/28278305
复制相似问题