如何存储数据库之间共享的数据?
假设一个联系人管理系统的数据库。每个用户都有一个单独的数据库。用户可以存储他/她的联系人的教育信息。
目前,每个数据库中都有一个名为School
的表,其中存储了该国每所学校的名称。学校表通过Contact表引用为FK。
学校表每年都会更新,因为新学校会增加或现有学校更名。
由于学校信息在所有用户数据库中都很常见,因此将其移动到单独的公共数据库似乎是一个更好的主意。但是当它移动到单独的数据库时,您无法在School
和Contact
之间创建FK约束。
这种情况的最佳做法是什么?
(如果相关,我正在使用SQL Server)
答案 0 :(得分:1)
开箱即用,外键约束对你没有帮助。你可以考虑复制个别学校的表格。
答案 1 :(得分:1)
基于以下事实:您不会经常查询具有SchoolID
列的表格,我会认为对这些表格的插入/更新非常罕见......在这种情况下,您可以创建约束在您需要FK的表上,检查SchoolID
表中是否存在此类Schools
。
请注意,每次使用SchoolID
列对表进行插入/更新都会对另一个数据库执行查询,因此,数据库之间的距离,它们彼此连接的方式以及许多其他因素可能会影响性能插入/更新语句。
但是,如果它们位于同一台服务器上并且您已设置了索引和主键,则查询应该相当快。
答案 2 :(得分:1)
需要考虑的事项
因此,我建议在一个参考数据库中管理School
- 和任何其他公用表,然后将这些表复制到其他数据库。