我将如何将外键应用于此特定要求

How would I apply foreign keys to this specific requirement

我目前正在制作一个工资单系统,其中有两个 table,account_tablepayslip_table。我目前在数据库设计方面遇到问题,我在两个 table 之间创建关系或根本不创建关系之间左右为难。我想我会先解释一下这个系统是如何工作的:

  1. 管理员登录站点
  2. 管理员进入上传工资单页面
  3. 管理员上传一个excel文件,后台代码解析excel文件并保存到数据库
  4. 用户登录站点
  5. 用户进入工资单页面
  6. 工资单页面显示 employee_id 所在的行 session_user(因为用户的用户名是他的 employee_id)

帐户 table 具有以下列:
1. employee_id
2.密码
3.first_name
4.last_name
5. user_type

工资单 table 有以下列:
1. payslip_id
2.employee_id
3.工资
4. 税收
5. total_deductions
6.total_salary

这个系统的要求是即使有"isn't an account for a user".

业主也要上传工资单

问。那你的table为什么要这样设计?
A. 工资单本质上有一个employee_id,它的存在是决定哪个工资单拥有哪个的关键。为了有效地显示工资单,我需要做的就是将会话用户(我提到的是他们的员工 ID,因为它是他们的用户名)与工资单 table 上的 employee_id 进行比较回显被击中的行。

问。当用户不再是雇员时,工资单会发生什么变化? payslip_table
上会有无用的行 答:我决定创建一个名为 created_on 的列并添加一个触发器来删除 3 个月前的工资单(因为它们已经没有用了)

问。当用户不再是员工时,帐户会发生什么情况?
A. 管理员有权删除用户,一旦用户离开公司,管理员可以终止账户,如前所述,被删除用户的工资单最终会被删除

问。为什么要经历这些麻烦?
A. 业主明确表示,他希望即使尚未开户也能准备好工资单,这样如果一个人要创建一个账户,他的工资单就会自动准备好供查看

我对数据库设计知之甚少,我很乐意接受建议。

或者,如果你们可以建议使用外键实现要求的替代方法,那将是最好的方法。

您应该在两者之间建立关系,如您所见,here 您将能够将空值添加到外键字段中,稍后用 employee_id 填充它。

这将有助于查找行,并确保没有无用的数据因浪费而浮动 space。

我看到的唯一问题是管理员如何 link 系统上已有的工资单到新员工帐户。例如找到新员工编号的正确工资单