在组合数据库时组合表的最有效方法是什么

时间:2011-09-08 20:05:00

标签: sql database database-design

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

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

4 个答案:

答案 0 :(得分:1)

首先应该看看这些表对业务的意义。单独的列名不会告诉你。如果两个表都有一个列名" lastaccesstime"这个事实本身并没有说 ANYTHING 关于那些相应列的内容对他们各自的用户意味着什么。

这种练习不仅仅是机械操作("复制表#34;,"添加更多字段"),你似乎认为它。

答案 1 :(得分:0)

根据您的需要,任何一种都可以成为可接受的解决方案。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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