一尘不染

您最有用的数据库标准是什么?

sql

已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。

我有一些想法,随着时间的推移我已经积累了一些想法,但是我真的很想知道是什么使您在对数据库建模时使事情顺利进行:

  1. 表名称与主键名称和描述键匹配
  2. 模式按功能区域划分
  3. 尽可能避免使用复合主键(使用唯一约束)
  4. 骆驼案例表名称和字段名称
  5. 不要在表前加上tbl_前缀,也不要在proc时加上SP_(无匈牙利符号)
  6. OLTP数据库应至少为BCNF / 4NF

阅读 151

收藏
2021-05-05

共1个答案

一尘不染

将每个人的意见汇总到一个列表中。

命名标准

  • 模式按功能区域(产品,订单,运输)命名

  • 没有匈牙利语符号:对象名称中没有类型名称(没有strFirstName)

  • 不要使用注册关键字作为对象名称

  • 对象名称中没有空格或任何特殊字符(仅允许使用字母数字和下划线)

  • 以自然方式命名对象(用FirstName代替NameFirst)

  • 表名称应与主键名称和描述字段匹配(SalesType ― SalesTypeId,SalesTypeDescription)

  • 不要以tbl_或sp_作为前缀

  • 按对象名称的名称代码(CustomerSearch,CustomerGetBalance)

  • CamelCase数据库对象名称

  • 列名应为单数

  • 表名可以是复数

  • 为所有限制提供公司名称(MustEnterFirstName)

资料类型

  • 在表之间使用相同的变量类型(在一个表中使用邮政编码-数字,在另一个表中使用varchar并不是一个好主意)

  • 使用nNVarChar获取客户信息(名称,地址)等,您永远不知道何时会跨国公司

在代码中

  • 关键字始终大写

  • 从不使用隐式联接(逗号语法)-始终使用显式的INNER JOIN / OUTER JOIN

  • 每行一个JOIN

  • 每行一个WHERE子句

  • 没有循环-替换为基于集合的逻辑

  • 对别名使用简短的表名形式,而不是A,B,C

  • 除非没有追索权,否则避免触发

  • 避免像瘟疫这样的游标(请阅读http://www.sqlservercentral.com/articles/T-SQL/66097/

文献资料

  • 创建数据库图

  • 创建数据字典

规范化和参照完整性

  • 尽可能使用单列主键。在需要时使用唯一约束。

  • 参照完整性将始终得到执行

  • 避免ON DELETE CASCADE

  • OLTP必须至少为4NF

  • 将每个一对多关系评估为潜在的多对多关系

  • 非用户生成的主键

  • 构建基于插入的模型,而不是基于更新的模型

  • PK到FK的名称必须相同(Employee.EmployeeId与EmployeeSalary.EmployeeId相同的字段)

  • 除非有双重联接(Person.PersonId联接到PersonRelation.PersonId_Parent和PersonRelation.PersonId_Child)

维护:运行定期脚本以查找

  • 不含表的架构

  • 孤记录

  • 没有主键的表

  • 没有索引的表

  • 非确定性UDF

  • 备份,备份,备份

做个好人

  • 始终如一

  • 修正错误, 现在

  • 阅读Joe Celko的SQL编程样式(ISBN 978-0120887972)

2021-05-05