0

我有一个一般的数据库设计问题:什么时候创建一个新数据库而不是向现有数据库添加新表更好?该问题与设计/可维护性以及性能问题有关。

背景:我们通过每晚将数据导入我们称为 RM2 的数据库来镜像客户的主表。一些新的(ASP.Net-)项目也需要访问这些数据,现在我想知道是否应该为每个项目创建新数据库或将它们的表与 RM2(当前大小:37991.94 MB)合并。

4

3 回答 3

3

我不一定会回答你的问题,但我也会给你一些其他问题来考虑:

  1. 我应该何时将文件添加到数据库中的文件组?- 当文件变得太大时,“太大”可能是一个见仁见智的问题。
  2. 我应该什么时候向我的数据库添加一个新的文件组?- 当您希望能够针对不同的数据库操作优化磁盘使用情况时。
  3. 什么时候应该向我的数据库添加新模式?- 当您有一组逻辑相关的对象并且可能需要用户的不同默认权限时。
  4. 我应该什么时候向我的应用程序添加新数据库?- 当您不需要两个数据库中的任何表之间的任何引用完整性时。当您不想允许任何所有权链接权限在两组对象之间交叉时。当您想要独立备份和恢复时。当您需要对两组数据使用不同的 SQL Server 恢复模型时。

我想这可能已经回答了你的一些问题。;-)

于 2010-07-12T11:30:50.197 回答
1

这不是数据库设计问题。这是一个组织问题。这个问题的组织方面比技术问题重要得多。

答案是:让开发人员的生活更轻松的任何事情

例如,你说:

一些新的(ASP.Net-)项目也需要访问这些数据。

这些项目与您的项目的集成程度如何?您实际上是否共享数据(或写入相同的表)?例如,如果您对其中一个表进行了重大更改,您是否需要同时更改其他项目中的代码?(有时真的很难在两个项目之间同步)。

如果您实际上不共享数据(除了客户数据,我认为它实际上是只读的),那么使用单独的数据库(OR 模式)。这使得更改更易于管理。

另一个技巧是在每个数据库中拥有一组关于客户数据的视图,这些数据位于另一个模式中的其他地方。

因此,每个项目都有一个数据库,每个数据库中都有客户数据的视图,这些数据位于一个单独的数据库中。

性能应该不是真正的问题,除非数据库位于不同的机器上。

于 2010-07-12T12:10:38.083 回答
0

如果任何项目只想使用自己的数据库,您可以为项目获取其他数据库。但是如果你想获得这个数据中心,你应该为每个项目创建一个其他共享数据库+自有数据库。

于 2010-07-12T11:22:10.507 回答