模块化应用数据库结构

时间:2008-11-05 21:37:34

标签: sql-server-2005 database-design modularity

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

  1. 将所有表放入一个大数据库中,并根据模块为表添加前缀。
  2. 将每个模块的表分成不同的数据库。
  3. 我确实拥有所有模块共有的数据,因此如果我使用解决方案2,我不确定如何管理这些常见数据(例如用户)。

    -

    为了澄清一件事,这些模块可能会单独出售,配置设置是不受客户端控制的。这就是为什么我甚至考虑将它们分成不同的表格。

4 个答案:

答案 0 :(得分:3)

我对您提出的建议的替代建议是SQL Server 2005中可用的Schema功能。

请阅读此链接以获取更多信息......

http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1184503,00.html

答案 1 :(得分:1)

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

如果共享表中的数据对所有模块来说都是真正共有的,并且没有边缘情况,那么您试图将这些数据集中到这些“公共”表中,那么打开或关闭一个模块不会影响任何模块的运行其他模块,你现在很少(如果有的话)重复数据。

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

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

除非您需要多个数据库,否则我建议只使用一个。