【问题标题】:What's the most efficient way to combine tables when combining databases合并数据库时合并表最有效的方法是什么
【发布时间】:2023-03-17 20:25:01
【问题描述】:

我有两个数据库(db1 和 db2),以前由两个不同的程序使用,现在我将它们(数据库和程序)结合起来,因此,db2 将成为 db1 的一部分。所以,我知道如何将表从 db2 复制到 db1,但我有一个包含用户列表的表。

我希望两个程序都访问同一个用户列表,所以我需要合并两个用户表。现在,问题是 db2 的用户表与 db1 的列不同。那么,我该怎么做呢?我应该在 db1 表中添加更多字段吗?还是我应该尽可能多地复制相关数据,然后创建另一个表来保存 db1 的用户表中未预设的字段?

【问题讨论】:

  • UNION 将是我首先想到的。顺便说一句,如果这里的人能看到更多内部信息(比如你的桌子的结构),他们会很有帮助。

标签: sql database database-design


【解决方案1】:

您首先应该了解的是这些表格对业务的意义。仅列名不会告诉您这一点。如果两个表都有一个列名“lastaccesstime”,那么这个事实本身并不能说明这些列的内容对他们各自的用户意味着什么。

这种练习不仅仅是你认为的机械操作(“复制表格”、“添加更多字段”)。

【讨论】:

    【解决方案2】:

    根据您的需要,任何一个都可能是可接受的解决方案。

    如果额外字段仅适用于某些用户,那么可能会选择第二个选项。但是,如果 每个 用户的所有字段 应该 都存在,那么我只会说将新字段添加到您的用户表中,然后担心为其他用户。

    【讨论】:

      【解决方案3】:

      创建一个组合两个表的 VIEW。

      【讨论】:

        【解决方案4】:

        如果您不是从现有数据库开始,我将首先定义组合数据库的外观。这包括考虑规范化、索引、列类型等。然后看看是否存在从每个当前数据库到新结构的简单映射。如果是这样,只需编写 SQL 来进行映射。如果没有,那么你有两个选择。您可以编写更复杂的 SQL(甚至是其他语言的过程)来映射数据。或者,您可以考虑修改理想的目标数据库架构,以便更轻松地导入遗留数据。最后,一旦您决定了一种方法,您就可以决定是修改现有数据库中的一个更容易,还是创建一个全新的数据库并将两个数据库中的数据引入新数据库更容易。 (如果您使用后者,则可以将其重命名为旧版本之一并将其称为修改版本,以防这有助于保持与现有应用程序代码的兼容性。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-26
          • 2020-09-07
          • 1970-01-01
          • 2014-04-01
          • 1970-01-01
          • 2012-04-10
          • 1970-01-01
          • 2012-05-04
          相关资源
          最近更新 更多