我正在建立一个系统,在这个系统中,根据数据输入流定期建立数据库记录。 偶尔会有一些输入提供证据,证明两个独立创建的记录应该合并成一个。 我正在寻找关于如何合并到数据库的建议。
主表格(目前只是一种设计)包含由独有的识别码(称为主识别码,由数据库指定,我系统中的 MySQL)和一些数据字段组成的记录。还有其他一些表格使用主识别码将其记录与主表格中的记录连接。
MainTable:
int mainID
blob data
...
OtherTable:
int otherID
int mainID
blob otherData
...
现在,如果每个记录从未向任何外部进程或系统共享过,那么将数据字段从一个记录混为一谈,并删除一个记录就直截了当。 将其他表格中的主要ID字段更新到我们保存的主要ID值也是直截了当的(如果是乏味和(或)效率低下的话 )。
当每份记录的身份证明在系统之外共享时,事情就变得复杂了。 在这种情况下,我认为对那些被删除的身份证明的查询完全失败是没有道理的,尽管我可以说服别人。
我考虑的一个想法是引入一个包含两个关键字段的合并表格:和原始主 ID 和当前主 ID 。 其宗旨是将别名从一个主 ID 到另一个主 ID 。 随着每个主 表格记录创建, 我们将在合并表格中添加一个记录, 将新创建的主 表格记录的主要 ID 映射到它本身。 如果合并, 我们只需将合并表格中当前主 ID 字段更新到合并表格中的记录中, 与正在合并的主要记录原主 ID 一起更新 。 然后, 对于基于主 ID 的每一项查询, 我们通过合并表格绘制该 ID 以找到我们真正应该使用的有效的主 ID 。
MergeTable:
int mergeID
int originalMainID
int currentMainID
这是否是一种好技术? SQL 查询中是否能够无缝地进行绘图?我是否应该考虑采用标准或更好的技术?