Jos*_*ell 5 database sql-server database-design naming
我们有一个包含许多数据库的SQL服务器.我们的客户拥有多个版本的类似应用和多个应用,适用于单个客户.几乎所有数据库都与特定网站相关联.
你如何保持有组织的数据库名称?当然没有单一的答案,但你有一个适合你的数据库命名策略吗?
我们正在考虑:
客户+产品+开发阶段(生产,分期等)
但是当客户运行三个版本的产品时,这会变得很尴尬.
创建一个Developmestuction,您在同一个数据库服务器上拥有同一个数据库(Dev,Production)的多个实例,这只是一个问题.如果您无法获得第二台服务器(物理或虚拟),则应考虑创建单独的SQL Server实例.
您的数据库名称应反映您在内部引用应用程序的方式.你写了:
我们的客户拥有多个版本的类似应用和多个应用,适用于单个客户
目前尚不清楚你的意思.请选择一个"基础"应用程序,然后为不同的客户端自定义应用程序?您是否为不同客户创建完全不同的应用程序?它是两者的混合物吗?
我的假设是,您首先要开发一次性应用程序,如果其他客户喜欢它,请将其用作未来客户的基本应用程序.基于此,通过名称+客户引用您的应用程序并相应地命名您的数据库是有意义的.
我们的命名策略通常基于表示数据库的不同"维度" 的"三个字母缩写词"(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