Sql 什么';在组合数据库时,这是组合表最有效的方法

Sql 什么';在组合数据库时,这是组合表最有效的方法,sql,database,database-design,Sql,Database,Database Design,我有两个数据库(db1和db2),过去由两个不同的程序使用,现在我将它们结合起来(数据库和程序),所以db2将成为db1的一部分。因此,我知道如何将表从db2复制到db1,但我有一个包含用户列表的表 我希望两个程序访问相同的用户列表,因此我需要合并两个用户表。现在,问题是db2的用户表与db1的列不同。那么,我应该怎么做呢?我是否应该在db1表中添加更多字段?或者我应该复制尽可能多的相关数据,然后制作另一个表来保存db1的用户表中没有预设的字段吗?根据您的需要,任何一个都是可以接受的解决方案 如

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


我希望两个程序访问相同的用户列表,因此我需要合并两个用户表。现在,问题是db2的用户表与db1的列不同。那么,我应该怎么做呢?我是否应该在db1表中添加更多字段?或者我应该复制尽可能多的相关数据,然后制作另一个表来保存db1的用户表中没有预设的字段吗?

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


如果额外字段只存在于某些用户,那么可以使用第二个选项。但是,如果每个用户都有所有字段,那么我只想说将新字段添加到用户表中,然后担心为其他用户重新填充数据

创建一个合并两个表的视图

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

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


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

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