我正在使用的团队负责比较两个相似的数据库表 - 它们包含相同数量的行和相同数量的列,但数据略有不同 - 所以我正在编写一个Java程序以方便那个过程。将有人逐行,逐列地遍历这两个表,比较TableA到TableB的数据。
现在,TableA和TableB都存在于一个庞大,缓慢且不断变化的公司数据库中,因此我希望能够将它们分阶段以便1)使我的程序更快,2)使它成为QC当基础数据发生变化时,结果不会失效。
但是,我不确定我想如何暂存数据。似乎在我的数据库中为QC过程创建两个新表将是低效的。数据库规范化技术似乎建议我应该创建一个“Attribute”表,其中包含每个单独的字段:Attribute_id,value,row_id(指向TableA和TableB中的行的外键),attribute_type_id(指向包含attribute_names列表的表的外键) )。
这可以让我做一些像QC“版本”这样的整洁的东西 - 一个人可能会说“TableA的价值是正确的”,但是后来有人可以回去说“不,tableB是对的”我很容易存储并检索该历史记录。但是,将两个表格折叠成一个像这样的大而长的列表似乎是不正确的。另外,我不确定我的临时数据库有多快,所以我可能不想做很多连接。 (我知道,这很愚蠢,但我们的数据库很慢。)
或者,或者,我可以简单地让两个表相互镜像,然后逐行逐列。这很容易,并且不需要很多数据库查询,但它似乎效率较低,并且会使我的功能扩展更加困难。
你怎么看,善良的读者?