这个问题是由我的一个朋友正在使用的一些商业软件的最近更新引起的。到目前为止,他们的架构是基于 Access 数据库的,速度非常慢。他们将数据集拆分为多个 mdb 文件(sales.mdb、products.mdb、stock.mdb、...)。他们现在转向 SQL Server Express 并保持这种结构。他们没有为每个数据集使用一个表,而是在同一个 SQL Server 2008 Express 实例上创建了不同的数据库。
从我对 SQL Server 的(诚然有限的)理解来看,这似乎并不明智,因为它可以防止不同表之间的 JOIN,并且需要一个需要销售和库存数据的程序来维护两个数据库连接,而不仅仅是一个。
一位软件供应商的顾问声称,这将绕过 SQL Express 的 1GB 物理内存的 RAM 限制——他说这是每个数据库的,但从我从 MSDN 收集的信息来看,它实际上是每个实例的,所以他们在这里一无所获。
是否有充分的理由将同一业务域中的数据拆分为数据库而不是表?(我能想到的一个是您可以限制每个数据库的访问,但不能限制每个表的访问——但这在这种特殊情况下无关紧要,程序的所有模块都可以访问所有数据库。)