代码之家  ›  专栏  ›  技术社区  ›  Aaron Palmer

模块化应用数据库结构

  •  4
  • Aaron Palmer  · 技术社区  · 18 年前

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

    1. 将所有表放入一个大数据库中,并根据模块为这些表加前缀。
    2. 将每个模块的表分为不同的数据库。

    我有所有模块都通用的数据,所以如果我使用解决方案2,我不确定如何管理这些通用数据(如用户)。

    ——

    为了澄清一点,这些模块可能会单独出售,并且配置设置不受客户机控制。这就是为什么我甚至考虑把它们分成不同的桌子。

    4 回复  |  直到 17 年前
        1
  •  3
  •   user32378    18 年前

    我对您所建议的方案的另一个建议是SQL Server 2005中提供的模式功能。

    有关详细信息,请阅读此链接…

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

        2
  •  1
  •   Noah Goodrich    18 年前

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

    如果共享表中的数据对所有模块都是真正通用的,并且没有边缘情况,您正试图将这些“通用”表集中在一起,那么打开或关闭一个模块不应影响任何其他模块的功能,现在您很少(如果有的话)复制数据。

        3
  •  1
  •   Brody    18 年前

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

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

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

    表前缀在某种程度上并不重要,共享数据库的好处在于,您可以从任何模块访问每个表,并拥有一个共享的配置文件等。

        4
  •  0
  •   jonnii    18 年前

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

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