译自:http://weblogs.asp.net/jamauss/articles/DatabaseNamingConventions.aspx
通用规则:
命名长度不超过30个字符
使用字母和下划线 (避免使用数字)
尽量少用下划线.
以字母开头. (不要以下划线开头)
避免简写 (减少歧义或误解)
避免缩写 (缩写可能造成多义性 比如 "ASP")
见名知意
避免使用空格.
1. 表
规则 1a (Plural Names) – 复数形式。使用 "Customers" ,不用 "Customer". 比如:"UserRoles" "UserRoleSettings".
规则 1b (Prefixes) – 不要使用前缀 "tbl" or "TBL_" 。有时可用前缀对表进行分组.例如, "HcPayClients" ,不要使用"PayHcClients".
规则 1c (Notation) - 使用 Pascal Case 命名方式. 这样可以与SQL关键词区分开, "SELECT CustomerId_Pk, CustomerName FROM MyAppGroupTable"
规则 1d (Special Characters) – 不要使用任何特殊字符.
规则 1e (Abbreviations) – 尽量不要使用缩写和简写.
规则 1f (Junction a.k.a Intersection Tables) – 关联表,比如 "Doctors" 和 "Patients" 有多对多的关系,取名为“DoctorsPatients".
2. 列 - (incl. PRIMARY, FOREIGN, AND COMPOSITE KEYS)
使用 Pascal Case 命名方式.
规则 2a (Identity Primary Key Fields) – 主键列使用 “Id“ 比如 "Customers JOIN Orders ON Customer.Id = Orders.CustomerId“
规则 2b (Foreign Key Fields) –比如主表有主键为 "Id". 在外键表中取名 "CustomerId". 比如: HomeAddressId, WorkAddressId, MailingAddressId, ShippingAddressId.
规则 2c (Composite Keys) – 多个列组成主键. 比如 “ModuleId“ 和 “CodeId“ 组成主键.
规则 2d (Prefixes) –不要使用前缀 "fld_" or "Col_".
规则 2e (Data Type Specific Naming) – Boolean类型字段应取名为 "IsDeleted", "HasPermission", or "IsValid". 日期时间类型字段应包含 "Date" or "Time" ,数量单位字段,比如 "RuntimeHours" or "ScheduledMinutes".
3. 索引
规则 3a (Naming Convention) – 命名格式 {TableName}{ColumnsIndexed}{U/N}{C/N} "U/N" 表示唯一或非唯一索引 and "C/N" 表示族和非族. 比如. "ProductsIdUC". “OrderDetailsOrderIdCustomerIdNN".
规则 3b (Prefixes and Suffixes) – 避免使用前缀 "idx" or "IDX_".
4. 约束
规则 4a (Naming Convention) – 格式如下: {constraint type}{table name}_{field name}
比如:
1. PkProducts_Id - primary key constraint on the Id field of the Products table
2. FkOrders_ProductId - foreign key constraint on the ProductId field in the Orders table
3. CkCustomers_AccountRepId - check constraint on the AccountRepId field in the Customers table
规则 4b(Prefixes) 前缀如下
Primary Key: Pk
Foreign Key: Fk
Check: Ck
Unique: Un
5. 视图
规则 5a (Prefixes) – 使用前缀 "Vw" or "View" ,不使用 "V".
规则 5b (View Types) -. 连接表 "Customers" 和 "StatesAndProvinces"的视图取名为 "VwCustomersStatesAndProvinces"..
6. 存储过程
规则 6a (Prefixes or Suffixes) – 使用CRUD 分组, 使用前缀 "Create", "Get", "Update" or "Delete". 比如 "CreateProductInfo" or "CreateOrder".
或者,使用表分组,添加 "Create, Get, Update, or Delete" 后缀. 比如, "ProductInfoCreate" or "OrdersCreate".
其他验证或操作,使用动词和名词结合的方式,比如, "ValidateLogin"
规则 6b (Grouping Prefixes) – 可以使用前对对SP进行分组,比如 "Prl"—Payroll, "Hr" -- Human Resources.
规则 6c (Bad Prefixes) – 不要使用前缀 "sp_", "xp_" or "dt_".
7. 触发器
规则 7a (Prefixes and Suffixes) – 使用 "Trg" 做前缀或者后缀. 比如: Trg_ProductsIns, ProductsInsTrg, Products_InsTrg, or InsProducts_Trg. 要包含表名, 以及触发器的操作 (Ins, Upd, or Del).
规则 7b (Multiple Operations) – 如果一个触发器有多个操作 (both INSERT and UPDATE for example) 要包含多个操作比如, "Products_InsUpdTrg" or "TrgProducts_UpdDel"
download: template_sqlserver_naming_guideline.rar