2015-01-15 76 views
0

当开展一个大型项目时,其中一个想法是将所有东西都模块化。现在是数据库设计。现有的数据库需要重新设计(它有超过200个表),其中一个建议是为每个模块制作单独的数据库。这种方法的问题是许多表是相关的,所以如果一些表将被移动到另一个数据库,那么它们中的一部分将具有对另一个数据库的引用(id)。这甚至是推荐的方法,还是把所有东西放在一个数据库中更好?是否推荐引用来自不同数据库的表?

如果这种方法是正常的,那么如何照顾参照完整性和什么是最佳实践?

+0

我不会为每个模块使用单独的数据库。这只是没有多大意义。对于现代系统来说,200张桌子是没有用的这实际上相当小。我甚至不会试图将相关表格放在不同的数据库中。那会给你带来巨大的痛苦。 – 2015-01-15 18:29:55

回答

0

对于大多数问题的答案不幸的就是“它取决于”。没有任何设置最适合任何商店。扩大数据库可能是一个问题。如果一个模块以指数级增长但未被广泛使用(A历史模块),而另一个模块具有频繁读取但增长很少(A用户帐户模块),那么将高增长模块置于具有HDD的机器上并且高读取如果成本是贵公司的问题,则可以在SSD上安装模块。显然还有其他问题,但这是我可以从袖口中想到的。

你可以得到的唯一可靠答案主要与你对外键和引用的问题有关。您需要在多数据库senario中处理它的方式是使用触发器。由于您不能在数据库之间使用外键关系,因此每个表上的触发器都将用于强制数据库之间的参照完整性。