如何存储数据库之间共享的数据?

时间:2011-08-30 04:23:43

标签: sql-server database database-design schema foreign-keys

如何存储数据库之间共享的数据?

假设一个联系人管理系统的数据库。每个用户都有一个单独的数据库。用户可以存储他/她的联系人的教育信息。

目前,每个数据库中都有一个名为School的表,其中存储了该国每所学校的名称。学校表通过Contact表引用为FK。

学校表每年都会更新,因为新学校会增加或现有学校更名。

由于学校信息在所有用户数据库中都很常见,因此将其移动到单独的公共数据库似乎是一个更好的主意。但是当它移动到单独的数据库时,您无法在SchoolContact之间创建FK约束。

这种情况的最佳做法是什么?

(如果相关,我正在使用SQL Server)

3 个答案:

答案 0 :(得分:1)

开箱即用,外键约束对你没有帮助。你可以考虑复制个别学校的表格。

答案 1 :(得分:1)

基于以下事实:您不会经常查询具有SchoolID列的表格,我会认为对这些表格的插入/更新非常罕见......在这种情况下,您可以创建约束在您需要FK的表上,检查SchoolID表中是否存在此类Schools

请注意,每次使用SchoolID列对表进行插入/更新都会对另一个数据库执行查询,因此,数据库之间的距离,它们彼此连接的方式以及许多其他因素可能会影响性能插入/更新语句。

但是,如果它们位于同一台服务器上并且您已设置了索引和主键,则查询应该相当快。

答案 2 :(得分:1)

需要考虑的事项

  • 数据库是备份/恢复的一个单元。
  • 可能无法将两个数据库还原到同一时间点。
  • 数据库不支持外键。

因此,我建议在一个参考数据库中管理School - 和任何其他公用表,然后将这些表复制到其他数据库。

相关问题