Sql server 创建新数据库时

Sql server 创建新数据库时,sql-server,performance,database-design,maintainability,Sql Server,Performance,Database Design,Maintainability,我有一个一般的数据库设计问题:什么时候创建一个新数据库比向现有数据库添加新表更好?该问题与设计/可维护性以及性能问题有关 背景:我们通过每晚将数据导入名为RM2的数据库来镜像客户的主表。一些新的(ASP.Net-)项目也需要访问这些数据,现在我想知道是否应该为每个项目创建新的数据库,或者将它们的表与RM2(当前大小:37991.94MB)合并 如果任何项目只想使用自数据库,则可以为项目获取其他数据库。但是,如果您想获得此数据中心,您应该为每个项目创建一个其他共享数据库+自数据库。如果任何项目只想

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


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

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

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

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

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

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

  • 我想这也许已经回答了你的一些问题

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

    答案是:作为开发人员,任何能让你的生活变得简单的事情

    例如,你说:

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

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

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

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

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


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

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

    答案是:作为开发人员,任何能让你的生活变得简单的事情

    例如,你说:

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

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

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

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

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

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

    到目前为止,我在以前的工作中“只是”一名开发人员。因此,我们为每个项目都创建了一个数据库,它们之间从来没有关联。但现在我必须维护一个现有的大型数据库。因为每个新项目都与我们的RM2数据有某种关联,我已经在其中添加了新的表,但我想知道这是否是正确的方法(逻辑/可维护性/性能)。我必须考虑CR