【发布时间】:2015-05-24 05:27:45
【问题描述】:
我想我应该首先解释一下系统实际上做了什么以更好地理解。
该系统是一个工资单查看器网站,上传者(人力资源人员)上传一堆 excel 格式的工资单,这些条目会保存到数据库中。然后工资单查看器获取当前登录用户的emp_id,并显示他们所有的earnings, deductions, info 和他们的总earnings(all earnings are added), total deductions(all deductions are added) and netpay(total earning-total deduction)。
我的问题是我的教授说我需要“规范化”表格,但我想知道如何才能将其规范化,因为我认为这是“规范化”的。但是,我确实尝试创建两个 erd,但我有几个问题:
- 当系统的目的只是读取上传者提供的内容时,我为什么要拆分收入和扣除额?
- 我的教授建议我对所有员工进行相同的扣除,但没有这样的事情,我能想到的最接近的一项是保险,它也会根据依赖关系和其他影响它的因素而变化。
- 如果我确实尝试创建第 3 项,那么在费率发生变化时会出现问题(即,保险 1 从 2 月开始 = 100 美元在 3 月变为 200 美元)。由于工资单查看器依赖于该表,这意味着如果用户查看他 2 月份的工资单,他的保险费也是 200 美元。
- 我正在创建此数据库以符合系统的要求,即上传者上传工资单电子表格,这还不足以证明我的 erd 合理吗?也许如果这是一个工资系统,我可以设置其他表来影响工资单的输出,但是基于系统,输出已经完成,hr 只需要将它们上传到数据库。
我的第一个 ERD:
我的第二个 ERD:
(我这样做是为了尝试使其正常化,但是出于系统的要求,我认为这不合适)
【问题讨论】:
-
为什么没有单独的扣除表?然后是从 payslip_deduction 到 deduction 的 1-N 关系。
-
@OlleHärstedt 我的第二个 erd 有它。
-
等等,
deductionN是什么字段? -
如果每行没有 30 个扣除项,那么您将有多余的字段。您需要按照上面的建议对其进行规范化
-
"(我这样做是为了使其正常化,但出于系统的要求,我认为这不合适)"你大错特错了。
标签: mysql data-modeling database-normalization