2008-11-05 45 views
4

我正在构建一个模块化应用程序。通过配置,您可以打开和关闭这些应用程序模块。我试图确定哪些数据库结构(mssql2005)我应该用于为每个模块保存数据的表。我已经想到了这两个选项是:模块化应用程序数据库结构

  1. 把所有的表到一个大的数据库,并根据模块前缀的表。
  2. 将每个模块的表分成不同的数据库。

我有是共同的所有模块的数据,所以如果我使用的解决方案2我不知道如何管理公共的数据(如用户)。

-

要澄清一两件事,这些模块将可能单独出售和配置设置的东西,不是由客户端进行控制。这就是为什么我甚至考虑将它们分解成单独的表格。

回答

0

如果你需要跨表查询,我建议把它们放到一个数据库中,否则它没有什么区别。但是,拥有一个数据库将更容易维护。

除非你有多个数据库的需求,否则我建议只使用一个。

1

如果是我,我会先完全规范应用程序。我将开发一种结构,将所有常见数据放入共享表中,并将特定模块表中每个模块的唯一数据保留。

如果共享表中的数据对于所有模块都是真正共有的,并且没有边界情况下您试图将这些“常见”表结合起来,那么打开或关闭一个模块应该不会影响任何其他模块和你现在很少(如果有的话)重复数据。

1

我会一个数据库。这极大地简化了解决方案的管理。

然后我会正常化我的数据。这简化了数据完整性问题。

然后,我会将每个模块的表格添加到基础数据库中。我会分发这个基础数据库,但我不会分发未使用模块的数据。每个模块在安装时都会分发它自己的数据(通过安装程序合理安装,而不是内置在模块本身中)。

表前缀不会很重要,共享数据库的好处在于您可以从任何模块访问每个表并且拥有共享配置文件等等......

相关问题