1.2-1项目规范-数据库规范

一、编写目的 

  规范数据库设计。

二、概述

  从数据库的设计原则  命名规范几方面论述数据库设计的规范思想及命名规则。

三、数据库设计原则

· 所有名称都采用英文,且准确无误,单词之间用下划线分隔。 

· 每个表必须有主键,一般的主键都是自动编号的。 

· 主键与对应的外键名字要一致。  

· 表与表之间的关联默认采用id实现。 

· 一般情况,不使用数据库提供的表与表之间的关系与约束 ,而应使用程序来判别关系。如删除一行会同时牵涉到两个表,就按照顺序使用代码来完成。 

· 如果没有特殊要求文本默认情况大文本采用varchar2(255),因为varchar2是可变长度的,不会浪费。 

· 表与表的关联是发生在一对多或多对多的情况下,一对一就用一个表。 尽量在数据库的设计中把多对多拆分成一对多。

· 所有的SQL语句字段都要写全,不使用星号来代替

· 缩写的原则:1.通用的缩写,例如PWD,就一定要缩写 ;2.太长了,如有多个单词可以用缩写,缩写一定要用单词的前4个字母,单词直接用下划线相连。3.尽量少的使用缩写。

· 所有表(Table)、列(Column)、视图(View)、存储过程(Stored Procedure)、函数 (Function)、约束(Constraint)、触发器(Trigger)、索引(Index)都应该有对应的注释。

四、数据库命名规则

4.1 数据库涉及字符规则

  采用26个英文字母(区分大小写)和9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)

4.2 数据库对象命名规则

    数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。前缀:使用小写字母。

4.2.1表命名原则

  数据库所有表的命名都要加上系统的前缀,比如干教网中的表都要以XX_来开头。

  标明的定义:可以根据业务名称的英文单词来命名,比如用户表XX_USER


4.2.2视图命名原则

    视图前缀:XX_V_...

4.2.3列命名规则

    1所有数字类型全部采用NUMBER

    2字符串都采用VARCHAR2VARCHAR2是一个UTF-8的可变长度的类型

    3字段排列顺序要注意,可读性强些。

    4备注采用:VARCHAR2(255)

    5所有能够缩写的尽量缩写,如Password->PWD,但是必须是大家一眼就能看明白缩写所代表的意义。

4.2.4索引命名规则

    索引前缀:INX_U_...U表示唯一索引,,,

    建议索引的命名:

    1、普通索引:前缀为IDX_,索引名称是 前缀+表名+构成的主键字段名,如果复合索引的构成字段较多,则只包含第一个字段,并添加序号。表名可以去掉前缀。 

    2、主键索引:前缀为IDX_PK_,索引名称应是 前缀+表名+构成的主键字段名

    3唯一索引:前缀为IDX_UK_,索引名称应是 前缀+表名+构成的字段名。 

    4、外键索引:前缀为IDX_FK_,索引名称应是 前缀+表名+构成的外键字段名。

    5、函数索引:前缀为IDX_FUNC_,索引名称应是 前缀+表名+构成的特征表达字符。 

    6、蔟索引:前缀为IDX_CLU_,索引名称应是 前缀+表名+构成的簇字段。

4.2.5序列命名规则

   序列前缀:SEQ_...

    前缀为SEQ_,序列名称是:前缀+业务名(表名)

    如:BJCE_USER(用户表)

主键自增序列:SEQ_XX_USER

序列命名应当是SEQ_+序列的字段名

4.2.6存储过程命名原则

    存储过程前缀:XX_PROC_...

4.2.7函数命名原则

   函数前缀:XX_FUN_...

4.2.8触发器命名原则

   触发器前缀:XX_TRI_...

4.2.9主键命名原则

    主键不使用前缀PK_...,统一使用表名前缀+ID。就是说所有表都以ID 作为主键字名。

    但是在添加主键约束时,约束命名为 PK前缀+表名缩写+ID。如果复合主键的构成字段较多,则只包含第一个字段。表名可以去掉前缀。 

    主键是不需要创建索引的,但主键建立时,会自的创建索引。

4.2.10外键命名原则

    统一不使用前缀为FK_,但是在添加外键约束时,约束命名为 FK前缀+表名缩写+ID+字段名。

    外键名称应是 外键表名 + ID + 外键表构成的字段名。表名可以去掉前缀。

4.2.11自定义数据类型、默认、规则命名原则

五、注释部分

5.1 概述

一定要养成写注释的习惯,这样可以加强相互直接的沟通。

5.2 注释规则

  1注释需用中文正确书写,注意错别字,以免造成误解。

  2每个自定义过程、函数的末行都需要写注释,标明这些自定义过程、函数的功能。

  3每个用缩写命名的变量(所有类型),或者其他缩写,均需要在本行注释全称。

  4若编写程序段结构较为复杂,则需要在段尾对于程序段结构做相关注释。

  5、当整个项目完成之后,需将所有注释部分删除。但是必须删除之前,必须有相应的文档说明。

  6common中文要写完整。

六、SQL优化

6.1 SQL优化调整的方向

    1.去掉不必要的大型表的全表扫描

    2.缓存小型表的全表扫描

    3.检验优化索引的使用

    4.检验优化的连接技术

5.尽可能减少执行计划的Cost

6.2 SQL优化具体方法

  1、常量的计算是在语句被优化时一次性完成,而不是在每次执行时。下面是检索月薪大于2000的的表达式:

  sal > 24000/12

  sal > 2000

  sal*12 > 24000

  如果SQL语句包括第一种情况,优化器会简单地把它转变成第二种。

  优化器不会简化跨越比较符的表达式,例如第三条语句,鉴于此,应尽量写用常量跟字段比较检索的表达式,而不要将字段置于表达式当中。否则没有办法优化,比如如果sal上有索引,第一和第二就可以使用,第三就难以使用。

  2、操作符优化:

  优化器把使用LIKE操作符和一个没有通配符的表达式组成的检索表达式转换为一个“=”操作符表达式。

  例如:优化器会把表达式ename LIKE 'SMITH'转换为ename = 'SMITH'

  优化器只能转换涉及到可变长数据类型的表达式,前一个例子中,如果ENAME字段的类型是CHAR(10), 那么优化器将不做任何转换。

  一般来讲LIKE比较难以优化。所有在开发中尽量少使用LIKE

  3、合理的索引设计

  4、避免使用不兼容的数据类型

  5IS NULL IS NOT NULL

  不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排 除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在WHERE子句中使用is nullis not null的语句优化器是不允 许使用索引的。

  6INOR子句常会使用工作表,使索引失效

  7、避免或简化排序

  8、尽量多使用COMMIT

  9、通过内部函数提高SQL效率

  10、用EXISTS替代IN、用NOT EXISTS替代NOT IN

  11、用>=替代>

SQL优化的方法很多,随便写了一些,大家可以补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值