Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否建议参考不同数据库中的表格?_Sql Server_Database_Foreign Keys - Fatal编程技术网

Sql server 是否建议参考不同数据库中的表格?

Sql server 是否建议参考不同数据库中的表格?,sql-server,database,foreign-keys,Sql Server,Database,Foreign Keys,在进行大型项目时,其中一个想法是将所有内容模块化。现在是数据库设计。现有数据库需要重新设计(它有200多个表),其中一个建议是为每个模块创建单独的数据库。这种方法的问题是许多表是相关的,所以如果一些表将被移动到另一个数据库,其中的一部分将具有对另一个数据库的引用(id)。这是推荐的方法还是最好将所有内容都保存在一个数据库中 如果这种方法是正常的,那么如何处理引用完整性以及最佳实践是什么 不幸的是,你大部分问题的答案都是“视情况而定”。没有最适合任何商店的设置。数据库的扩展可能是一个问题。如果一个

在进行大型项目时,其中一个想法是将所有内容模块化。现在是数据库设计。现有数据库需要重新设计(它有200多个表),其中一个建议是为每个模块创建单独的数据库。这种方法的问题是许多表是相关的,所以如果一些表将被移动到另一个数据库,其中的一部分将具有对另一个数据库的引用(id)。这是推荐的方法还是最好将所有内容都保存在一个数据库中


如果这种方法是正常的,那么如何处理引用完整性以及最佳实践是什么

不幸的是,你大部分问题的答案都是“视情况而定”。没有最适合任何商店的设置。数据库的扩展可能是一个问题。如果一个模块呈指数级增长但未被广泛使用(历史记录模块),而另一个模块具有频繁读取但很少增长(用户帐户模块),则如果贵公司存在成本问题,则将高增长模块放在带有HDD的机器上,而将高读取模块放在SSD上,可能更具成本效益。显然还有其他的担忧,但这是我可以立即想到的


你能得到的唯一可靠的答案主要与你关于外国钥匙和参考资料的问题有关。在multi-DB senario中处理它的方法是使用触发器。每个表上的触发器将用于强制数据库之间的引用完整性,因为不能在数据库之间使用外键关系。

我不会为每个模块使用单独的数据库。那没有多大意义。200张桌子对于现代系统来说根本不算什么。这实际上相当小。我甚至不会尝试将相关表放在不同的数据库中。那只会给你带来巨大的痛苦。