我陷入了棘手的境地。我将举一个简单的例子来强调我的问题。
假设我有两个数据库; DBa 包含 Ta1 和 Ta2 表格, DBb 表格 Tb1 和 TB2 即可。所有这些表都具有相同的结构。
我想在名为 T1 的联合表中合并 Ta1 的内容与 Tb1 ,并合并 Ta2 在 T2 的联合表中使用 Tb2 。此外,我需要一种方法来标记 T1 和 T2 的任何内容(或行)来自数据库 DBa 或 DBb 即可。
可以尝试在关联表中创建一个额外的列, T1 和 T2 ,使用数据库ID并使用数据库填充此列的行来自哪里的名称(即 DBa 或 DBb 视具体情况而定)。我现在能想到的是一种手动方式,但我相信这是由于我对SQL的了解有限。
我非常感谢您对解决此问题的看法。
P.S。所有数据库和表都在同一个MySQL服务器上。
答案 0 :(得分:0)
拥有SourceDbID和OriginalID列似乎是一个合理的解决方案 - 我绝对不会将数据库名称放入每一行 - 更好的是拥有一个带有数据库名称和ID的SourceDb表,并引用它。
如果您不希望从其他来源引入数据,则另一个选项是为每个源数据库分别设置NULLable列,例如: DbAID,DbBID等,并将原始ID放入这些列中。虽然这样查询的工作量较少,但是如果另外一个来源出现的话,延伸并不便宜(从I / O的角度来看)。