存储很少使用的条目的最佳方法是什么?

时间:2013-10-25 18:25:21

标签: mysql database

我正在为一家安全公司设计一个数据库(MySQL),并希望跟踪它雇佣的所有保安人员。由于该行业的性质,相当多的人被转移到“终止”名单(大多数人被解雇了坏的条款)。该公司希望跟踪他们,因为他们中的一些人倾向于在一两年后尝试重新申请工作。此外,公司的高管有时会认为将某个人放在该列表中是不公正的并且他们会恢复它们(这就是为什么,根据我的理解,MySQL档案将不起作用)

数据库的“中心”是 guards 表,它与数据库中的其他表有很多关系,我正在尝试决定什么是设计“终止”的最有效方法“清单。我想到了两个选择:

  1. 警卫表与 terminateGuards 表保持一对一的关系。我在这个解决方案中看到的问题是,每当我想查询数据时,我总是需要在SELECT语句中添加一个子句来排除 terminateGuards 表中的人。

  2. 使用与警卫表类似的列创建一个单独的表格,每当警卫移动到该表格时,我会完全删除警卫表格中的条目然后将其复制到 terminateGuards 表。我用这种方法看到的问题是我需要遵循与该条目相关的许多关系(有时我想用 terminateGuards 列表中的复制条目重新创建它们例如,我需要重新链接一个表,该表保存公司管理的不同站点的警卫的工作历史记录和 terminateGuards 表,这样我就可以保留该警卫的工作历史记录。 ,即使他或她被解雇了。)

  3. 哪种方法应该更有效?

    感谢。

1 个答案:

答案 0 :(得分:1)

我真的怀疑你在这张桌子上会有一百万条记录。按状态标记它们,在该状态标志上添加一个索引,你应该没问题。

在表之间移动记录总是很麻烦,因此通常作为最后的手段来完成。例如,如果您在表中有十亿条记录,则需要对其进行分区或以某种方式对其进行分片,但您在此处所讨论的是相当多的数据。你不可能在这个表中拥有超过一百万条记录,如果你这样做,显然你参与的项目规模如此之大,你可以负担得起硬件来托管这样大小的数据库。

通常,您可以将此设计为具有guards表,然后是某种相关记录,用于定义何时雇用,解雇或影响其工作的任何其他事件。