zoukankan      html  css  js  c++  java
  • 数据库使用规范

    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命名:首字母大写的驼峰命名

     

  • 相关阅读:
    20189207《网络攻防实践》第一周作业
    事件冒泡
    链接分类
    JS:offsetWidth\offsetleft
    JS alert()、confirm()、prompt()的区别
    this用法
    事件绑定
    clippath
    浅谈正则
    C++大师Lippman:我对中国程序员的忠告(转载)
  • 原文地址:https://www.cnblogs.com/jiangtu/p/6037041.html
Copyright © 2011-2022 走看看