我正在为一家安全公司设计数据库 (MySQL),并希望跟踪它雇用的所有保安人员。由于该行业的性质,相当多的人被移入“终止”名单(主要是被解雇的人)。该公司希望跟踪他们,因为其中一些人倾向于在一两年后尝试重新申请工作。此外,有时公司的高管认为将某个人列入该列表是不公正的,他们将其恢复(据我了解,这就是为什么 MySQL 存档不起作用)
数据库的“中心”是保护表,它与数据库中的其他表有许多关系,我试图确定设计“终止”列表的最有效方法是什么。我想到了两个选择:
让警卫表与终止的警卫表建立一对一的关系。我在这个解决方案中看到的问题是,每当我想查询数据时,我总是需要在 SELECT 语句中添加一个子句,以排除terminateGuards表中的人。
制作一个单独的表,其列类似于警卫表,每当警卫移动到该表时,我都会从警卫表中完全删除他们的条目,并将其复制到终止的警卫表中。我在这种方法中看到的问题是我需要遵循与该条目相关联的许多关系(有时我想使用terminateGuards列表中的复制条目重新创建它们以供参考。例如,我需要将保存公司管理的不同站点中警卫工作历史的表与终止的警卫表重新链接,这样我就可以保留该警卫的工作历史,即使他或她被解雇了)。
哪种方法应该更有效?
谢谢。