首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理必要的重复条目

问如何处理必要的重复条目
EN

Stack Overflow用户
提问于 2016-12-19 03:33:55
回答 2查看 45关注 0票数 0

请帮我解决这个难题。克服以下情况的最佳实践是什么?考虑以下数据库:

ID | Name | HIREDATE | TERMDATE 01 | John | 01/01/14 | 07/01/14

所以,约翰在这里,如你所见,在7月1日离开了公司。然而,他会在晚些时候被重新聘用(比如,我不知道,2/1/15)。社区会怎么做?

a)重复他的条目,并为他分配一个完全不同的ID?-Possible缺点:在计算自然减员、新员工等时可能会扭曲统计数据。

b)为重新聘用增加一个新的栏目,尽管这是一种罕见的情况,而且可能基本上不会使用。-Possible的缺点:除非选中,否则可能会与程序中的其他功能发生冲突,例如搜索当前员工。

c)删除条款日期:根本不可能。统计数据需要显示在任何给定时间雇用和命名的所有人员,这将使计算变得不准确。

d)其他:_________ <

我倾向于选择"a“。我认为,在计算自然减员和增长时,可能会有一种方法来调整计算,以反映出有重新招聘的情况。社区是怎么想的?

EN

回答 2

Stack Overflow用户

发布于 2016-12-19 03:49:40

在你发布的3个解决方案中,选项a是最可行的。正如您所提到的,选项a的最大缺点是您丢失了可能在长期内有价值的历史数据。

我同意你对“b”和“c”的评估,我真的想不出哪种情况是最好的。

就我个人而言,在几乎所有的情况下,我都会选择“选项d”,除非我出于某种原因不关心历史数据。具体地说,我将有一个存储员工各种元数据的辅助表。此表将具有类似于

代码语言:javascript
复制
META_ID | EMPLOYEE_ID | KEY | VALUE

通过这种方式,您可以拥有任意数量的雇佣和终止日期(以及将来需要添加的任何其他元数据,例如PROMOTION_DATE)。具体到您的示例:

代码语言:javascript
复制
META_ID | EMPLOYEE_ID | KEY    | VALUE
1         1             hired    01/01/14
2         1             termed   07/01/14
3         1             hired    02/01/15

您可以使用JOINS进行查询,以获取您特别感兴趣的数据,并且可以有无限数量的员工事件。您将始终能够选择给定的一组键中的最后一个事件。

票数 1
EN

Stack Overflow用户

发布于 2016-12-19 04:17:07

您的问题源于试图用同一个表解决两个不同的问题:表示当前雇员和表示雇佣历史。通常,这些数据用于完全不同的目的,并且由于数据保护法的原因,存储的数据可能会有所不同。

有一个表用于当前员工,另一个表用于历史数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41212091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档