您的位置:首页 - 教程 - 数据库 - 正文
数据库使用规范

1.数据库/表 名第一位为数字的话,需要加 "[]" ;为了规范,不要使用数字开头

2.如果没有业务列组合当主键,可以生成自增id当主键

  a.主键不是必须的,但是主键是必要的。首先,确保表的完整性(如数据的唯一性)当插入两行一模一样的数据时,没有主键则不可区分。其次,提升效率(没有主键时,是按照输入顺序进行插入的)

  b.有些数据库里主键时必须要有的。

  c 业务列作为主键 / GUID主键 / 时间+机器号+自增ID主键

3.注意数据库字段,表名的长度限制。Oracle是30个字符

4.外键必须是另一个表的主键

5.dbo:数据库名.架构名.表名。05版本前为 数据库名.用户名.表名

6.@自定义变量 @@系统变量  Cursor游标

7.使用top/where等控制sql执行返回的结果集合

8.注意数据库的编码规则

9.EXEC执行存储过程

10.游标:Cursor c is select .. from ..

11.游标和临时表对比:内存/硬盘,数据量两方面考虑

12.不使用goto 的原因:可以使用if else/while代替,提升代码质量和流程

13.SET NOCOUNT ON :不返回 ..行受到影响

14.业务逻辑是否封装到存储过程里:

  a.在开发过程中为什么需要写存储过程

  b.是:执行速度快,安全性(屏蔽开发人员权限)

  c.否:互联网基本采用这种,银行/电信等采用上条。

               i.业务逻辑交给程序处理,减少数据库资源消耗

               ii.不利于分层规范和维护

               iii.迁移方便(屏蔽具体sql的差异,如sqlserver和mysql)

15.最好有return信息。没有的话可添加 return 1

16.Union all ,from  .. where等等聚合写入/读出

17.索引:最实用的方法就是看执行计划找瓶颈,根据实际情况优化设计

  a.参考文章  SQL索引一步到位

  b.聚集索引/非聚集索引:是否是物理排序

  c.非聚集索引行定位器是

            i.指向行的指针(文件标识符+页码+行序号生成)

            ii.该行的聚集索引关键字的值。

  d.SQL SERVER 采用 B- 树结构,非聚集索引是一个新实体(类似术语表)

  e.原则上where字句上出现的列都需要创建索引:不然还是会到表中查询

  f.避免在WHERE条件中,在索引列上进行计算或使用函数:这将导致索引不被使用

  g.保证索引排序和Order By 字句顺序保持一致

  h.数据重复列高的字段不要创建索引:没有意义

  i.text, varchar(max)不创建索引

  j.外键和用于做表连接的字段需要做单独的索引:如果外键列缺少索引,从关联子表的查询就只能对子表选择全表扫描

  k.经常更改的列不创建索引:维护成本太高

使用规范

1.采用Pascal命名

2.ConstDict、ConstDictValues作为系统保留字段

3.每个实体表都必须包含 CreateDate、CreateBy、ModifyDate、ModifyBy四个字段

4.脚本头规范:参考别人写的就行了。

  a.作者 / 创建时间 / 修改人 / 修改时间 / 对应系统模块 / 描述

  b.参数注释

  c.TRANSACTION事务注释

5.存储过程规范:

  a.过程名称,作者,功能说明,创建日期,维护记录,使用案例

6.脚本命名:编号_数据库名_脚本功能

  a.脚本数据库存在分库情况时,DBA会将其全库执行,不需要开发处理

7.存储过程命名:架构名.模块名_功能语义

8.依赖条件使用 By+条件

 

命名法:

匈牙利命名法:

1.每个变量名前加上若干表示数据类型的字符。

2.变量名=属性+类型+对象描述

驼峰命名法:大小写混合的对象描述,如userName

Pascal命名:首字母大写的驼峰命名

 


评论: