




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库开发命名规范版本:V0.1高伟达股份有限公司二一二年十月一十七日文档信息标题数据库开发命名规范版本号0.1版本日期文件名数据库开发命名规范所有者高伟达股份作者修订记录日期 描述作者版本号1.0文档审核/审批(此文档需如下审核)姓名公司/部门职务/职称文档分发(此文档将分发至如下各人)姓名公司/部门职务/职称开发组组长本文档中所包含的信息属于机密信息,如无高伟达股份有限公司的书面许可,任何人都无权复制或利用。Copy Right 2011 Great Info Tech China目录1.前言42.简介53.数据表命名规范63.1.1.1.1.统一命名规范63.1.1.2.数据区域命名规范63.1.1.2.1.1.实体表命名63.1.1.2.1.2.属性/列命名73.1.1.2.1.3.代码表规范83.1.1.2.2.遵循的数据码表规范93.1.1.2.3.数据存储格式规范104.存储过程开发规范144.1.书写规范144.1.1.1.1.缩进风格144.1.1.1.2.空格及换行144.1.1.1.3.其他154.2.变量命名164.3.注释规范164.4.语法规范184.5.脚本规范194.6.存储过程模版195.其他对象命名221. 前言本文件的目的仅为提供信息,并不构成任何合同或具法律约束力的文件的基础。高伟达公司发布的这份文件并不保证内含信息是否正确或者是否将保持正确,也不保证使用其中的信息将确保对相关服务或设备的操作正确无误。文件内容如有改动,恕不另行通知。2. 简介本规范制定的目的:保证数据结构清晰,功能明确,提高Oracle代码可读性,有利于对多人协同开发,以及后期的编码维护。3. 数据表命名规范3.1.1.1.1. 统一命名规范对于表名的命名,采用具有业务含义的英文名称进行命名,在表名称中可以明显识别出表所属的主题。对于表中字段的命名,采用具有业务含义的英文名称进行命名。整个系统中,具有相同业务含义的字段,采用相同的命名。比如:所有表中的机构代码的字段名要相同。所有的表、字段命名均采用大写英文字母。3.1.1.2. 数据区域命名规范平台数据库统一存储管理全行的数据,数据类型比较多,数据库表也比较多,有由源业务系统直接采集按主题整合而成的基础业务数据,有经过中间汇总的汇总数据,有管理应用专用的操作型数据和应用分析需要而加工出的多维分析数据。因此在平台数据库中,各数据区域的数据表统一存放到一个数据库中,不同数据区域采用不同的用户以及数据表命名规范,区分不同的数据分区。下表对数据区域的规范进行说明:数据区域中文名数据区域英文名数据区域前缀对应用户表命名规范基础汇总数据层(区)Foundation Data AreaFAPP_DATAF_主题标识_表标识(支持多个主题)业务汇总数据层(区)Summary Data AreaSAPP_DATAS_业务标识_表标识(支持多种业务)应用数据层(区)Application Data AreaPORTAL_DATAODS数据层(区)ODS Data AreaRAW_DATAETL应用服务器数据层ETL Application Data AreaETL_DATA3.1.1.2.1.1. 实体表命名原则上,实体/表名称应使用易于理解、能准确描述该实体/表意义的业务术语,同时命名应遵循下述规则:1 逻辑模型实体名以中文命名,物理模型表名以英文命名,中文名与英文名含义应严格一致;2 实体/表命名不要使用不易理解的方言或有地域性/部门局限的业务术语,应使用统一的、正式的、全局范围内通用的官方业务术语;3 关于物理模型实体/表中的命名,如果实体表所属业务在行内有比较权威的源系统,且该系统的命名已经规范化,则尽量贴近权威源系统的命名,如:核心业务贴近会计处理平台,尽量参照数据字典中表命名; 4 实体/表英文名由多个单词组成,单词之间用下划线分开;5 物理模型实体/表命名不超过30个字符,应尽量使用简练的英文拼写。(主要考虑一些数据库(如ORACLE)定义的表名不能超过30个字符);当表的全名超过30字符时,可用缩写来减少表名的长度,如description - desc;information - info;address - addr等6 在数据库建表过程中,所有表均需添加Comments,附上中文名实体/表的英文命名格式为:TB_。如:风险分类减值损失估算 TB_TLM_CLS_LOSS_ASSESSMENT 风险分类抵质押 TB_TLM_CLS_REPAY_GRT_ASSET3.1.1.2.1.2. 属性/列命名原则上,属性/列名称应使用易于理解、能准确描述该属性/列意义的业务术语,同时命名应遵循下述规则:1 逻辑模型属性名以中文命名,物理模型列名以英文命名,中文名与英文名含义应严格一致;2 属性/列命名不要使用不易理解的方言或有地域性/部门局限的业务术语,应使用统一的、正式的、全局范围内通用的官方业务术语;3 属性/列的中文名称尽量保留实体所属主题的名称作为前缀,比如“活期帐号”、“定期帐号”;4 属性/列名称通常由两部分组成:“主词”和“类词”,“主词”部分标明属性/列标明所描述的对象内容;“类词”部分标明属性/列所描述的内容的类别。如:属性“CUST_TYPE”中,“CUST”是“主词”部分,表明该属性/列描述的是“客户”;“_TYPE”是“类词”部分,表明该属性/列是一个描述“(客户的)类别”。5 关于属性/列的命名,如果实体/表所属业务在行内有比较权威的源系统,且该系统的命名已经规范化,则尽量贴近权威源系统的命名,如:核心业务贴近会计核算平台,尽量参照数据字典中表属性/列的命名; 6 属性/列英文名应尽量是字段的缩写; 7 英文名全部使用字母大写,如果属性/列英文名由多个单词组成,单词之间用下划线分开;8 属性/列命名不超过30个字符,应尽量使用简练的英文拼写。个别超长的需要提出来,模型组统一综合考虑(主要考虑一些数据库(如ORACLE)定义的表名不能超过30个字符);9 实体/表和属性/列的命名中英文都应保持同步。10 在数据库建表过程中,所有的字段均需添加Comments,附上中文名3.1.1.2.1.3. 代码表规范代码表实体、属性/列的命名规则遵从前面的普遍性规范,并同时遵从以下规范:1 代码实体/表英文名统一命名为“F_XX_CD”,中文名为“代码表”;2 属性命名规则同一般实体规则,但代码字段属性名后缀为_CD,相应的描述字段属性名后缀是_DESC,如,“事件关系种类代码表F_CM_CD”,两个字段分别为“事件关系种类代码 EVT_RELA_TP_CD”和“事件关系种类描述 EVT_RELA_TP_DESC”;3 对于一些习惯称为“XX 名称”的代码,实体名“XX 代码表T_CM_XX”,描述属性中文名可以用“XX 名称”,英文名用“XX_NAME”,如,“货币代码表F_CM_CD_CURR_CD”实体,其两个字段分别为“货币代码 CURR_CD”和“货币名称 CURR_NAME”;3.1.1.2.2. 遵循的数据码表规范公贷风险系统的主要业务数据来源于对公信贷系统,同时为了兼顾我行科技部门对全行IT系统规划和标准规范的要求,公贷风险系统的数据码表采用以下优先级顺序采纳规范:l 首先,如果科技部门有要求的,按照科技部门的要求确定数据代码表;l 其次,对于信贷主要业务采用的数据码表,采用对公信贷系统的码表;l 再次,如果对于国标有的标准,且能匹配上当前数据码表相关数据的,将此类数据码表转为国标的标准;l 最后,对于其他的、某业务系统中独有且与其他系统无冲突的,采用该业务系统代码表。3.1.1.2.3. 数据存储格式规范为了充分考虑系统的技术层面扩展性,与其他外围系统的数据交换,以及未来系统升级要求,对公信贷系统要求在数据存储格式上要尽可能考虑兼容性。比如:l 日期、时间类的值要便于运算:u 在公贷风险系统中,日期类型的数据存储的字段类型为DATE(YYYY-MM-DD);l 日期或时间类字段,根据业务需要需达到必要的精度,比如是精确到日、秒、或者毫秒级别:u 对于来自业务系统每日的增量数据,其日期标识为精确到日;u 对于公贷风险系统内的操作数据的、每日可能会有多次变化的数据,其时间类精确到秒;u 对于日志类的数据项,其时间列精确到毫秒。l 字符串值要兼容汉字等双字节数据,且兼容大部分生僻字的存储;u 在公贷风险系统中,需要存储汉字等双字节数据的字段,数据类型都要求是varchar2类型;l 金额类、比率类、利率类、汇率类等数据要充分考虑其存储长度和精度要求;u 金额类数据的精度要求不低于NUMBER(20,2);u 比率类数据的精度要求不低于NUMBER(16,8);u 汇率类数据的精度要求不低于NUMBER(15,10);u 利率类数据的精度要求不低于NUMBER(16,8);l 数值型数据的存储基本单位统一:u 金额类数据存储到“元”,界面中用到“万元”或“亿元”的,在应用中进行运算;u 比率类数据存储的值是转换为小数后的值,比如:12%存储到数据中是0.12,而非12。3.1.1.2.3.1. 数据类型定义规范目前,邮政储蓄银行在信息化建设过程中,包括邮政储蓄银行公司信贷业务系统、邮政储蓄银行公司业务系统、邮政储蓄银行综合业务系统等,已经对数据类型做了全行统一标准,此部分内容参加邮政储蓄银行公司信贷系统数据类型规范即可。字段含义数据类型说明配置类型日期类(年月日)日期类型数据定义为:date时间类(时分秒)时间类型的数据定义为: TIMESTAMP日期时间类(年月日时分秒)日期及时间类型的数据定义为: TIMESTAMP精确到毫秒的时间戳(年月日时分秒毫秒)9(15) COMP-3 CONVTIMESTAMP定义为: TIMESTAMP太阳日太阳日,表示某年的第几天,格式为:YYYYDDDYYYY表示年份;DDD表示该年的第几天,取值范围从1到366;将转换为正常的日期格式:YYYYMMDD定义为:date旬日期格式:YYYYMMT(年月旬),T=1代表上旬,T=2代表中旬,T=3代表下旬,例如:2004年11月下旬表示为2004113定义为:char(7)指示器表示“是/否”意义的指示器,例如:外部产品标志,雇员标志,等等定义为:char(1) 具体含义:“1是,0否”。整数类数据包括长整数和短整数。定义为:number(12,0)金额类数据所有金额类数据,例如:资产评估价值,负债余额,等等定义为:number(20,2)或number(20,3) (20位数字字符,其中包括小数点和两(三)个小数位)。一般数值类数据一般的、无特殊含义的数值,例如:不动产面积,等等定义为:number(20,2)利率利率数据定义为:number(16,8)汇率汇率数据定义为: NUMBER(15,10)费率费率数据定义为:number(16,8)占比(百分比类数据)某种情况相对另一种情况的占比,一般在0和1之间取值,例如:市场占有率,资产折旧率,等等定义为:number(16,8)比率(百分比类数据)两种情况之间的比率,可能会出现大于1的情况定义为:number(16,8)一般字符串记录描述性的文字当长度固定时,char2(n);当长度不定时,使用varchar2(n)3.1.1.2.3.2. 全局数据定义规范机构的统一:l 将各源系统机构编码进行统一,公司信贷风险系统提供统一基线机构,在整合中进行转换客户的统一:l 将各源系统客户号进行统一,公司信贷风险系统提供统一的客户号,在整合中进行转换字段含义数据类型说明配置类型客户编号例如统一标准化命名为:customer_num定义为:VARCHAR2(40)机构编号例如统一标准化命名为:org_cd定义为:VARCHAR2(20)4. 存储过程开发规范4.1. 书写规范4.1.1.1.1. 缩进风格 程序块严格采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2个。必须使用空格,不允许使用【Tab】键。以免在用不同的编辑器阅读程序时,因【Tab】键所设置的空格数目不同而造成程序布局不整齐。 当同一条语句需要占用多于一行时,每行的其他关键字与第一行的关键字进行右对齐。(如图1-1所示)图1-14.1.1.1.2. 空格及换行 不允许把多个语句写在一行中,即一行只写一条语句。 避免将复杂的SQL 语句写到同一行,建议要在关键字和谓词处换行。 相对独立的程序块之间必须加空行。 BEGIN、END 独立成行。 当不同类型的操作符混合使用时,建议使用括号进行隔离,以使代码清晰。 减少控制语句的检查次数,例如,在IFELSE 控制语句中,应将最常用的符合条件前置以被检查到。(如图1-2所示)图1-24.1.1.1.3. 其他 避免使用SELECT * 语句;不要用*来代替所有字段,应给出字段列表,以避免在表结构发生变化时应用程序出现无法识别的情况。 INSERT 语句必须给出字段列表,以避免在表结构发生变化时发生编译错误。 当一个PL/SQL 或SQL 语句中涉及多个表时,始终使用别名来限定表名和字段名,这使其他人阅读起来更方便,避免了含义模糊的引用,并能够在别名中清晰地判断出表名和相关字段名。 确保变量和参数在类型和长度上与表数据列相匹配。如果与表数据列宽度不匹配,则当较宽或较大的数据传进来时会产生运行异常。(如图1-3所示)图1-34.2. 变量命名 所有PL/SQL 中的变量与对象命名规则相似,如表1-5所示。变量类型前缀范例输入变量i_i_user_id/iuserid输出变量o_o_user_name/ousername输出输入变量io_/ioio_user_name/iousername普通变量v_/vv_user_id/vuserid全局变量gv_/gvgv_user_id/gvuserid常量大写PI游标cur_cur_userinfo用户自定义类型type_type_user_info保存点(save point)spt_spt_user_info表1-5 命名不允许使用中文或者特殊字符。 命名中若使用特殊约定或缩写,则要注释说明。 对于变量命名,禁止取单个字符(如i、j),建议除了要有具体含义外,还要能表明变量类型等。说明:变量,尤其是局部变量,如果用单个字符表示,很容易输错(如i 写成j),而编译时又检查不出来,有可能因为这个小小的错误而花费大量的时间。4.3. 注释规范 在一般情况下,源程序有效注释量必须在30%左右。说明:注释的原则是有助于对程序阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言需准确、易懂、简洁、精炼。统一文件头的注释。 主要是对相关过程、函数进行功能性描述、修订记录,以及入参出参说明。 对存储过程、函数的任何修改,都需要在注释后添加修改人、修改日期及修改原因等修订说明。(如图1-6所示)图1-6 所有变量定义需要加注释,说明该变量的用途和含义。注释内容要清晰、明了、含义准确,防止注释二义性。在代码的功能、意图层次上进行注释,提供有用、额外的信息。避免在一行代码或表达式的中间插入注释。尽量使用“-”进行注释。 对程序分支必须书写注释。说明:这些语句往往是程序实现某一特定功能的关键,对于维护人员来说,良好的注释有助于更好地理解程序,有时甚至优于看设计文档。 在程序块的结束行右方加注释,以表明程序块结束。 注释应与其描述的代码相似,对代码的注释应放在其上方或右方(对单条语句的注释)相近位置,不可放在下面。注释要与所描述的内容进行同样的缩排。注释上面的代码应空行隔开。4.4. 语法规范 良好的语法规范有助于书写出高效、完备的PL/SQL 程序,同时有助于提高系统的容错性、健壮性、可追溯性。 避免隐式的数据类型转换。说明:在书写代码时,必须确定表的结构和表中各个字段的数据类型,特别是在书写查询条件时的字段就更要注意了。这个是导致SQL 性能不佳的原因之一。 为了方便不同数据库平台的移植,尽量使用SQL99 标准,而不要使用Oracle 的“方言”。例如,DECODE 函数完全可以用CASE WHEN 语句代替,而且可编程性更强。(+)=右关联用RIGHT OUTER JOIN 语句代替。=(+)左关联用 LEFT OUTER JOIN 语句代替。 对于非常复杂的SQL(特别是多层嵌套、带子句或相关的查询),应该先考虑是否是由设计不当引起的,原则上遵循一句话只做一件事情。 关于处理的优先级静态SQL动态SQL。绑定变量的SQL动态SQL(在OLTP 系统中建议这么做)。SQLPL/SQL 的过程,极端复杂的SQL 除外。SQL临时表游标遍历。Oracle 函数自定义函数。尽量使用Oracle 分析函数代替同一个表多次的关联。 原则上不要使用动态SQL,如果非得使用动态SQL,建议使用绑定变量。 一定要及时关闭和释放游标(建议使用系统临时表代替游标)。 建议在异常处理中,把收集到的错误信息记入错误日志表,以备查询和分析。 不要将空的变量值直接与比较运算符(符号)比较。如果变量可能为空,应使用IS NULL 或IS NOT NULL 或NVL 函数进行比较。 尽可能地使用相关表字段的类型定义,如%TYPE、%ROWTYPE。这样做当表结构发生变动的时候,能够最大程度地做到容错性和健壮性。 在存储过程中变量的声明应集中在AS 和BEGIN 关键字之间,不允许在代码中随意定义变量。在定义变量时,完成相同功能模块的变量应放在一起,与不同模块的变量应空行隔开,增加代码的可读性。4.5. 脚本规范脚本规范有助于进行版本基线的管理、版本控制,也有助于系统的自动部署、定位和解决部署过程中出现的问题。 所有脚本按分类或内容分开存放,并按以下顺序进行存储:(1)创建数据库角色、用户脚本。(2)创建数据库表空间、数据文件脚本。(3)创建数据类型脚本,自定义的数据类型。(4)创建业务表脚本,表是其他依赖关系的基础。(5)创建临时表脚本,可能会在过程脚本中用到。(6)创建视图脚本。(7)创建主外键脚本。(8)创建索引脚本。(9)创建触发器脚本。(10)创建函数、存储过程脚本。(11)初始化数据脚本。(12)创建作业脚本。 创建每个对象代码的首部应该有对象注释。4.6. 存储过程模版CREATE OR REPLACE PROCEDURE P_XXXXX(I_TXDATE IN VARCHAR2, O_LOG_ID OUT INTEGER, O_TXDATE OUT DATE, O_NAME OUT VARCHAR2, O_START_TIME OUT DATE, O_END_TIME OUT DATE, O_STATUS OUT CHAR, O_RETMSG OUT VARCHAR2) IS /*- 名称:P_XXXXX 功能描述: 修订记录: 版本号 编辑时间 编辑人 修改描述 1.0.0 2012-09-10 BLUE 1.创建此存储过程 1.0.1 2012-09-10 LXZ 2.加入转入参数 入参、出参描述: I_TXDATE IN VARCHAR2(8) 输入日期 O_LOG_ID OUT INTEGER 输出日志ID O_TXDATE OUT DATE 数据日期 O_NAME OUT VARCHAR2(40) 过程名 O_START_TIME OUT DATE 开始时间 O_END_TIME OUT DATE 结束时间 O_STATUS OUT CHAR(1) 状态 O_RETMSG OUT VARCHAR2(60) 信息 返回值描述: (针对函数) -*/ V_STEP NUMBER; -阶段标记BEGIN O_TXDATE := TO_DATE(I_TXDATE, YYYY-MM-DD); -数据日期 O_NAME := P_XXXXX; -获取过程名 O_STATUS := D; O_START_TIME := TO_DATE(TO_CHAR(SYSDATE, YYYY-MM-DD HH24:MI:SS), YYYY-MM-DD HH24:MI:SS); -开始时间 SELECT SEQ_ETL_JOB_LOG.NEXTVAL INTO O_LOG_ID FROM DUAL; V_STEP := 1; -阶段1 可能会用到临时表 - SQL . . . . . . . V_STEP := 2; -阶段2 把数据插入到目标表 - SQL . . . . . . . O_RETMSG := SQL%ROWCOUNT | 记录被处理; -获取更新或插入的记录数 O_END_TIME := TO_DATE(TO_CHAR(SYSDATE, YYYY-MM-DD HH24:MI:SS), YYYY-MM-DD HH24:MI:SS); -结束时间 COMMIT;EXCEPTION WHEN OTHERS THENR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蒸汽安全知识培训总结课件
- 蒲瓜营养知识培训课件
- 蒲城会计财税知识培训课件
- 2025年高考历史试题分类汇编:中国古代史·选择题(魏晋-唐宋元明清)原卷版
- 2025年展望:我对长期服务合同的新见解
- 向量加法运算题目及答案
- 乡土中国的题目及答案
- 2025年矿压观测工考试题库及答案(含各题型)
- 沧州科学期末考试试卷及答案
- 2025跨国合作协议范本
- 青少年运动员 运动损伤的预防 课件
- 音乐《上学歌》课件
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 2022年十部经典的三级片电影
- 六三制新青岛版四年级科学上册第一单元《动物王国》全部课件(一共5课时)
- 历史八年级上册电子课件:第2课 第二次鸦片战争
- 消防安全培训及应急演练主题教育课件PPT模板宣传PPT动态PPT
- 顶推法钢箱梁安装施工方案
- 中国诗词协会入会申请表
- 新版人民音乐出版社三年级(上册)音乐教案简版
评论
0/150
提交评论