数据库服务器上的强数据库名称

Jos*_*ell 5 database sql-server database-design naming

我们有一个包含许多数据库的SQL服务器.我们的客户拥有多个版本的类似应用和多个应用,适用于单个客户.几乎所有数据库都与特定网站相关联.

你如何保持有组织的数据库名称?当然没有单一的答案,但你有一个适合你的数据库命名策略吗?

我们正在考虑:

客户+产品+开发阶段(生产,分期等)

但是当客户运行三个版本的产品时,这会变得很尴尬.

Ale*_*lis 8

创建一个Developmestuction,您在同一个数据库服务器上拥有同一个数据库(Dev,Production)的多个实例,这只是一个问题.如果您无法获得第二台服务器(物理或虚拟),则应考虑创建单独的SQL Server实例.

您的数据库名称应反映您在内部引用应用程序的方式.你写了:

我们的客户拥有多个版本的类似应用和多个应用,适用于单个客户

目前尚不清楚你的意思.请选择一个"基础"应用程序,然后为不同的客户端自定义应用程序?您是否为不同客户创建完全不同的应用程序?它是两者的混合物吗?

我的假设是,您首先要开发一次性应用程序,如果其他客户喜欢它,请将其用作未来客户的基本应用程序.基于此,通过名称+客户引用您的应用程序并相应地命名您的数据库是有意义的.

  • SalesManager_Wilco
  • SalesManager_AbcInc
  • SalesManager_Internal
  • TimesheetKeeper_Internal
  • ExpenseTracker_Wilco
  • HelpBuilder_Wilco

  • 不,在你的生产服务器上有你的生产应用程序/数据库,你会有任何意义*.这不是你能做的最糟糕的事情(也不是太大的交易),但它肯定不是最好的做法.无论您多么小心,通过测试污染生产数据的风险太大.如果要针对prod数据进行测试,请将备份下载到测试服务器.或者,如果必须,请在同一服务器上使用不同的SQL Server实例. (6认同)
  • ...更不用说在生产服务器上执行的非生产工作将减少CPU时间,内存,磁盘I/O,甚至可用于现场和可能是现金生成软件的网络带宽. (2认同)

Phi*_*ier 6

我们的命名策略通常基于表示数据库的不同"维度" 的"三个字母缩写词"(TLA)的串联,以下划线分隔.此规则适用于站点,应用程序,客户端等.

例如,当我的应用程序首字母缩写是ABC,并且我们的阿联酋办事处是ABC数据库的嫌疑人时,这个数据库名称将是ABC_UAE(然后使用该国家的官方/ ISO TLA当然是一个不错的选择).

一旦为客户提供TLA标识符,就可以使用它来构建数据库名称:

  • ABC_ACM:用于Acme公司的主要/中央ABC数据库
  • ABC_ACM_CAN:对于加拿大的订户

现在,如果您维护不同的数据库版本,您可以选择:

  • ABC_012_ACM 如果为多个客户端维护版本1.2

  • ABC_ACM_012 如果Acme有其特定的1.2版本

如果这些数据库有子订阅者,那么其含义就很ABC_ACM_012_CAN明显了.我建议你使用标准的3位数字编号.它让事情变得更加容易!

在谈论开发数据库时,这条规则会遇到一些例外.例如,如果开发由客户端维护,或者开发是按版本维护的,那么我的开发人员的ABC_ACM数据库版本将是.事实上,当你遇到个别的嫌疑人时,让数据库名称的最后一个"维度"没有实现TLA规则也很常见:ABC_ACM_pgrondierABC_012_pgrondier

  • ABC_ACM_012_username 是订阅者 ABC_ACM_012

  • ABC_ACM_012_CAN_username 是订阅者 ABC_ACM_012_CAN