数据库开发有什么规范

admin3年前软件教程26

作为java程序员对数据库有或多或少的了解,基本使用大家都会,一些关键性的细节可能在平时的开发过程中没有注意到,导致写出来的SQL查不出数据,或查询速度特别忙、超时等情况,以下是工作中常用oracle数据库的一些总结:

一、oracle数据库开发规范

1、所有的名称用英文

要用简单明了的英文单词或简明的英文缩写,不要用拼音,特别是拼音缩写。目的很明确,主要是让人容易明白这个对象是做什么用的。

2、一律大写,特别是表名

有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,建议一律采用大写(Mysql数据库和表名在 Windows 中是大小写不敏感的 ,而在大多数类型的 Unix 系统中是大小写敏感的)。

对于SQL语句,如无特殊要求,也一律使用大写。

3、表的命名

①.基础表统一采用"<模块名>_<应用名>"构成

②.备份表,COMMENT部分必须说明具体意义,命名格式:原表名_YYYYMMDD

③.历史表(应用已经删除)需要保留,去掉模块名(CARD_,PAYMENT_)更改为HIST_。

④.表命名全大写,在存储过程或应用程序中使用时,全大写。

⑤.自用表同一采用格式"T_DB_<应用名>"。

4、属性(列或字段)

①.采用有意义的英文单词,如果单词过长,可采用缩写代替(或单词组合,单词过长可缩写)。列名尽可能简短、精要(单词过长的情况可简写),尽量控制在20个字符以内。

②.所有列名必须有COMMENT,并注明有限取值列所有取值的含义。如state 取值为0,1 需标明0和1的含义。

③.对于不同表相同内容的属性字段的命名,必须统一命名,数据类型和精度定义也需统一。

④.除非必要,否则尽量不加冗余列。所谓冗余列,是指能通过其他列计算出来的列,或者是与某列表达同一含义的列,或者是从其他表复制过来的列等等。冗余列需要应用程序来维护一致性,相关列的值改变的时候,冗余列也需要随之修改,而这一规则未必所有人都知道,就有可能因此发生不一致的情况。除非是应用的特殊需要,或者是为了优化某些逻辑很复杂的查询等操作,可以适当考虑加冗余列。

⑤.除非必要,否则尽量不使用LONG, TEXT, BLOB, CLOB, NCLOB, LONG, LONG RAW这一类的数据类型,而是使用其他可以替代的数据类型;优先使用varchar2类型替代CHAR类型,除非列宽有严格的要求而且得到应用严格支持。

⑥.字段的类型及精度在设计以及后面进行开发时,需要与应用的设计、开发人员商讨,以得到双方认可的类型及宽度。

⑦.表增加数据创建时间和更新时间。

⑧.状态等相同或者相近表示某种状态的字段统一使用varchar2,长度由开发和DBA协商拟定,成功(开启,生效等)为01,失败(关闭失效等)为02,无状态为03,其他为预留各开发人员自定。

⑨.金额字段或者涉及到钱的字段设置为非空,默认值为0,以避免NULL的问题。

5、主键/外键

①.表主(外)键命名格式:"PK(FK)_<应用名>_主(外)键标识",如:"PK_CARD_USER_INFO_ID"等。

②.每个表,都必须要有主键。主键是每行数据的唯一标识,保证主键不可随意更新修改,特别在不知道是否需要主键的时候,加上主键会为你的程序以及将来查找数据中的错误等等,提供一定的帮助。

③.特别提醒,不同的表主键的命名严禁使用相同的命名,避免混乱。

6、索引

①.创建表时必须指定主键名称,主键索引名称包括表名缩写_列名缩写和一个PK_前缀,如:"PK_CARD_USER_INFO_CARDID"等。

②.唯一键索引名称包括表名缩写_列名缩写和一个UNK_前缀,如:"UNK_TRAN_NORMAL_0101_TRANUUID"等。

③.外键列的索引名称包括子表名缩写_父表名缩写_列名缩写和一个FKN_前缀。

④.对于不用于约束的索引包括表名缩写_列名缩写和一个IDX_前缀,如:"INX_TRAN_NORMAL_0101_EQPID"等。

⑤.某些基于函数的索引包括表名缩写_列名缩写和一个FCN_前缀。

⑥.对于复合索引,需要添加的列名称以数字进行替代,数字按着列出现顺序排序。如:"INX_TRAN_SETTLE_0101_46_18"等。

注意:

①.根据实际业务需要经过讨论后建立索引,避免建无用索引。

②.索引必须建在索引表空间。

③.避免数据库索引抑制,即创建索引但是查询仍走全表扫描。

7、触发器

①.INSERT型触发器统一命名:"TR_INSERT_<应用名>"。

②.UPDATE型触发器统一命名:"TR_UPDATE_<应用名>"。

③.DELETE型触发器统一命名:"TR_DELETE_<应用名>"。

8、视图

视图统一命名:"V_<应用名>"。

9、序列

①.序列统一命名为:"SEQ_<应用名>_<列名>"组成。

②.若线上环境为RAC(oracle集群),如果使用cache,请慎重考虑业务问题。若需要保证缓存相对连续,创建序列是需要加order。

10、同义词

同义词命名与其基础对象的名称一致,但要去除其用户前缀或含有远程数据库链接的后缀。同义词安全性考虑,使用数据用户隔离,需要使用link用户创建,link用户允许读取表,不允许做任何修改。

11、存储过程

①.存储过程统一命名为:"PROC_存储过程功能标识(缩写)"。

②.所有存储过程参数入参格式必须为:IN_<参数名> IN 数据类型 --字段备注说明。

③.所有存储过程参数出参格式必须为:OUT_<参数名> OUT 数据类型 --字段备注说明。

12、函数

①.函数统一命名为:"FUN_函数功能标识"。

②.注释方面请参照存储过程。

13、包

包统一命名为:"PKG_包标识"。

14、数据库新建表对象需要的元素

①.表空间。

②.表名及表备注。

③.字段名、字段类型、是否可空、默认值以及字段comment(注意:列出所有有限取值列取值的含义)。

④.主键、外键和唯一约束。

⑤.查询时经常用到的列以及查询方式。

⑥.表的查询频率以及数据量。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

拼多多看不了直播是怎么回事

拼多多APP版本为5.25.0,拼多多看不了直播的原因是:1、检查一下网络信号是否通畅,可换不同地方打开app,也可关机重启试试。2、检查“拼多多app”固件是否有问题又或者网站服务器有问题,可将手机...

企业为什么要拥有自己的APP

企业拥有自己的APP如下:1、塑造企业形象。领先同行,率先做APP,令品牌差异化明显化。营造公司创新的形象,走在潮流尖端。2、节省企业的成本。省大量印刷的宣传费用,包括单张、书籍、 利用即时推送功能,...

爱奇艺字幕显示一半怎么办

爱奇艺字幕显示一半的解决方法:1、爱奇艺的软件bug,建议退出重新进入。2、可能是视频资源有问题,需要视频上传者修复。3、可能是视频比例设置有问题,调整到适合的画面比例即可。爱奇艺是由龚宇于2010年...

腾讯文档分享失败是什么原因

腾讯文档分享失败是因为腾讯文档没有保存上,或者是内存不足而导致的。腾讯文档是一款可多人同时编辑的在线文档,支持在线Word/Excel/PPT/PDF/收集表多种类型。可以在电脑端(PC客户端、腾讯文...

QQ音乐怎么下载mv

以QQ音乐v10.3为例,下载mv的方法是:1、首先我们打开QQ音乐。2、找到想要听的歌曲,点击之后我们进入该歌曲的播放页面。3、接着我们点击播放的歌曲界面右下角的按钮,再点击播放视频。4、点击播放视...

外卖送餐APP该如何开发

如今,手机订餐已成为人们日常生活的一部分,办公室的白领一天三顿不离外卖已经成为常态。用户可以在不离开家的情况下享用美味的食物。那么外卖订餐APP应该如何开发呢?具体介绍下。外卖订餐APP优势1、使用外...