ORACLE对象命名规范

合集下载

Oracle数据库命名规范

Oracle数据库命名规范

1.Oracle数据库命名规范数据库命名规范总体上以“汉语拼音和常见英语单词相结合”的方式,汉语拼音即是采用每一个汉字拼音的第一个字母的方式。

英语单词采用整个英文单词或可以识别的英文单词缩写的方式。

数据库字段命名原则总统上同数据库命名,采用“汉语拼音和常见英语单词相结合”方式命名。

这里单独出来主要是强调本系统字段命名需要额外遵循如下规则:1)字段名称的唯一性:即同一含义的字段在整个系统范围内中必须有相同的字段名。

不能有类似一个表中的备注字段用“BeiZhu”,另一表中的备注却用“Remark”、“Desc”、“XXRemark”等。

2)字段含义唯一性:即系统同一字段名称必须有同一含义。

不能有类似“Name”在一个表中表单位名称,在另外一个表中表项目名称,这种情况需要加前缀区分。

3)所有字段名不能以SM开头,目的是避免与SuperMap保留字段前缀混淆4)空间表中:字段顺序以空间信息字段在前,属性信息字段在后原则。

5)属性表中:字段顺序以主次顺序设计,用于空间定位的字段放在最后原则。

1.1表属性规范1)表名前缀为Tbl_。

数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:tbl_pstn_detail。

表名称不能用双引号包含。

2)表分区名前缀为p。

分区名必须有特定含义的单词或字串。

例如:tbl_pstn_detail的分区p2004100101表示该分区存储2004100101时段的数据。

3)字段名字段名称必须用字母开头,采用有特征含义的单词或缩写,不能用双引号包含。

4)主键名前缀为PK_。

主键名称应是前缀+表名+构成的字段名。

如果复合主键的构成字段较多,则只包含第一个字段。

表名可以去掉前缀。

5)外键名前缀为FK_。

外键名称应是前缀+外键表名+主键表名+外键表构成的字段名。

表名可以去掉前缀。

1.2索引1)普通索引前缀为IDX_。

索引名称应是前缀+表名+构成的字段名。

如果复合索引的构成字段较多,则只包含第一个字段,并添加序号。

数据库命名规范

数据库命名规范

数据库命名规范1 目的规范数据库各种对象的命名规则。

2 数据库命名原则2.1 数据文件如果数据库采用文件系统,而不是裸设备,约定下列命名规则:1)数据文件以表空间名为开始,以.dbf为结尾,全部采用小写英文字母加数字命名。

如该表空间有多个数据文件,则从第2个数据文件开始,在表空间名后加_。

例:对system表空间的数据文件:system.dbf,system_2.dbf2)对oracle数据库的控制文件,用control.ctl来表示。

如control01.ctl,control02.ctl。

3)对oracle数据库的日志文件,在线日志文件用redo<组名><文件序列名>.dbf来表示。

其中组名和文件序列名均用2位数字来表示。

如第一组的两个文件表示位redo0101.dbf和re do0102.dbf。

归档日志用arch_%t_%s.arc来表示。

其中%t和%s均为oracle约定的变量。

2.2 表空间2.2.1 数据库系统表空间数据库系统表空间包括system表空间,临时表空间,回滚段的表空间。

约定下列命名规则:1)system表空间由数据库直接限定,不能进行修改。

2)临时表空间用temp来表示。

如果有多个临时表空间,从第2个临时表空间开始,在tem p后面加来表示。

3)回滚段表空间用undotbs来表示。

如果有多个回滚段表空间,从第2个回滚段表空间开始,在undotbs后面加来表示。

2.2.2 数据库的用户表空间数据库的用户表空间用ts_<表空间名>来表示。

其中,表空间名分为:1)数据空间:对于用户的缺省表空间,用default来表示。

对于其他的表空间,根据存放在表空间上的表的类别来表示。

如放代码的表,用code来表示。

放客户资料的表,用custo mer来表示。

尽量用一个表空间来存放该类的表。

如果某表特别大,可考虑单独使用一个表空间。

2)索引空间:在相应的数据表空间的名字前加ind_。

Oracle数据库设计规范建议

Oracle数据库设计规范建议

Oracle数据库1 数据对象的命名规范1.1 通用规范1.1.1 使用英文:要用简单明了的英文单词,不要用拼音,特别是拼音缩写。

主要目的很明确,让人容易明白这个对象是做什么用的;1.1.2 一律大写,特别是表名:有些数据库,表的命名乃至其他数据对象的命名是大小写敏感的,为了避免不必要的麻烦,并且尊重通常的习惯,最好一律用大写;1.2 数据库对象命名规范1.2.1 表的命名1.2.1.1 表名的前缀:前缀_表名_T。

为表的名称增加一个或者多个前缀,前缀名不要太长,可以用缩写,最好用下划线与后面的单词分开;其目的有这样几个:1.2.1.1.1 为了不与其他项目或者其他系统、子系统的表重名;1.2.1.1.2 表示某种从属关系,比如表明是属于某个子系统、某个模块或者某个项目等等。

表示这种从属关系的一个主要目的是,从表名能够大概知道如何去找相关的人员。

比如以子系统为前缀的,当看到这个表的时候,就知道有问题可以去找该子系统的开发和使用人员;1.2.2 视图命名:相关表名_V(或者根据需要另取名字);1.2.3 程序包命名:程序包名_PKG(用英文表达程序包意义);1.2.4 存储过程命名:存储过程名_PRO(用英文表达存储过程意义);1.2.5 函数命名:函数名称_FUN(用英文表达函数作用);1.2.6 触发器命名:触发器名称_TRI(用英文表达触发器作用);1.2.7 索引命名:表名_字段名_IDX(如果存在多字段索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail 上建立联合索引,命名为表名_cus_cut_cur_IDX,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立联合索引,就命名为表_tid_tom_tna_IDX;1.2.8 唯一索引命名:表名_字段名_UNI(如果存在多字段唯一索引,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立唯一索引,命名为表名_ cus_cut_cur_UNI,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如:在 custid, custom,custname上建立唯一索引,命名:表_tid_tom_tna_UNI;1.2.9 主键命名:表名_字段名_PK(如果存在多字段主键,取每字段前三个字符加下划线组合,如在 custom, cutting, curtail上建立主键,命名为表名_cus_cut_cur_PK,如果前三个截取字符相同,就从字段名称中不同的字符开始取三个字符加下划线组合,如在 custid, custom,custname上建立主键,命名:表_tid_tom_tna_PK;1.2.10 外键命名:表名_主表名_字段名_FK;1.2.11 Sequence命名:表名_列名_SEQ(或者根据需要另取名字);1.2.12 Synonym命名:与对应的数据库对象同名;1.2.12 JAVA命名:遵守公司相应的JAVA命名规范;2 SQL的设计和使用2.1 Sql 书写规范2.1.1 尽量不要写复杂的SQL:过于复杂的S QL可以用存储过程或函数来代替,效率更高;甚至如果能保证不造成瓶颈的话,把条SQL拆成多条也是可以的。

Oracle数据库编程规范

Oracle数据库编程规范

密级公开()普通(√)秘密()机密()绝密()Oracle数据库编程规范文档编号:<文档编号(按照文档编码规范)>文档归类:<文档归类>作者:李程扬创建时间:2005-11-14修改时间:2005-11-15版本号:v1.0文档传阅:一、数据库对象创建及命名规范1、数据库字段及对象命名规范a.数据库命名规范与PB编程规范对命名方式的约定可相互参照;b.命名单词间分隔用下划线[_],尽可能使用与业务相匹配的单词或其缩写;c.绝对不允许使用拼音首码及简单数字的命名方式;d.Oracle对于对象或字段名称长度有限制,最多31个字符;2、字段定义及类型说明a.字段定义仅能使用以下类型i.date:日期时间类型,存入日期字段的数据若未指明时间,时间缺省就是[00:00:00];若未指明日期,则日期缺省是[1900-01-01];对于年份[number(4,0)]与月份[number(6,0)]这类数据,一般用number类型定义;ii.number:数值类型,字段所占空间与每一行数据相关,即有多少存多少;要注意其定义小数位是包含在总长度中,如number(12,2)——总长度为12位,其中小数占2位;iii.char:定长字符串类型,不论字符串信息多少都要占用所定义长度的空间,不足的部分用空格填充;对于一些更新操作比varchar2效率高;长度限制为255;iv.varchar2:非定长字符串类型,字符串信息多少就占多少空间,所以对于此类型数据在存入数据库前要去空格,以防止多余空格造成字段关联错误;相比char可节省很多存储空间,某种程序上可提高网络传输效率;长度限制为4000个字符;v.clob:一般存大于4000个字节的字符串信息,如数据窗口的语法;vi.blob:一般存二进制数据,如图片;b.对于字符串类型,除数据固定长度字段(如char(1)、SICK_ID),其它情况都必须使用varchar2类型;c.对于number与varchar2类型,在定义时要预留足够的长度,因为这两种类型都是按实际数据来分配存储空间,这样才能避免数据需求变长,字段长度修改造成程序错误(数据窗字段及数值变量小数位定义);d.应尽量使用number类型定义代码、状态字段;相比char或varchar2,这可最大程度地节省空间,并可显著提度检索效率;当然,同类型已定义的字段,为兼容原先设计,还是必须使用旧的类型定义;e.字段命名约定i.字段名称不必像PB变量使用前缀来标识其数据类型;ii.字段常用后缀如下ID/No表示唯一的序列号标识;其中ID多用于表示对人或物的标识,即指的是一种标志(如Sick_ID);而No多用于对连续号或流水号的标识(如单据号Apply_No)Code 表示项目代码(如项目代码Item_Code)Name 表示名称(如项目名称Item_Name)Class 表示类别(如单据类别Apply_Class)Operator 表示操作员(类型用varchar(27),如Apply_Operator)Time 表示日期或日期时间(如Audit_Time)Dept 表示科室(如开单科室Apply_Dept)Flag 表示标志(字段类型用char(1),值为Y或N)Status 表示状态(字段类型用char(1))iii.常见业务字段名称及类型定义如下3、数据库对象定义说明:创建对象时一定要指定是在哪个模式下面a.表i.下面列出建表步骤(一般在PB6中新建表,再拷出相应建表语法)建表语法创建主键及索引创建同义词对象授权(所有新建对象都必须授权给zhiydba)ii.对于表命名有以下常用后缀_master:主表_detail:细表_record:记录表_dict:系统字典/用户字典_config:用户配置表iii.不推荐使用表外键约束,也不推荐除空值以外的其它约束检查,这类约束判断一般在程序中处理;b.主键:一种特殊的索引i.主键名都是以pk_作为前缀,后面一部分用表名,即pk_+表名ii.所有表都必须创建主键,否则这些表就没办法做更新操作c.索引i.索引名以idx_作为前缀,后面一部分用表名+索引相关列名或其缩写ii.创建索引时一定要记得指明其所在模式(一般与表在同一模式下),这一点程序员常会遗漏;iii.索引也要区分是唯一索引还是可重复索引;iv.要查询的列尽可能创建索引,一般不推荐使用多列组合索引,而应分开建立索引;如病人ID或查询时间字段;另外,用到组合索引时要注意索引列的顺序;v.一个表索引最多不能超过7个,否则会影响数据更新效率,且占用存储空间,即:索引越多、查询效率高、但更新操作慢、存储占用高;vi.对于值内容单一(如只有0与1)或大部分数据是空值的字段不用建索引;对于某些数据量很少的表(如字典),也是不用建索引;d.视图:其命名以v_作为前缀,统一建在zhiydba模式下(可省去授权)e.序列号:其命名以_seq作为后缀,统一建在zhiydba模式下;主要用于数据表的主键字段取唯一值(如单据号),对于字典代码就没必要用序列号;f.同义词:创建相应对象的同义词主要是便于编程(public),做到对象模式无关g.用户:即模式h.函数及存储过程:除非开放接口给其它软件供应商,否则不使用这两类对象,因为包(package)就可代替其功能,并便于分类组织;i.后台包/Java包:不用深入了解,知道有这些东西就可;j.后台任务(Job):后台计划任务执行,通过dba_jobs可查询当前在执行任务;k.触发器:Oracle的触发器一般都认为在事务处理上不安全,所以除非特殊接口,否则不准使用触发器;二、Oracle常用函数1、Oracle的PL/SQL语言是对SQL的过程性语言扩展,当前Oracle的SQL语法遵循SQL92标准;2、完整PL/SQL函数集可查阅\\Research\ZHIS4_Tools\Database\Oracle8i资料\doc\server.816\a76989\toc.htm3、字符串相关函数a.||:字符串合并操作符b.trim:去字符串前后空格,一定要记住存取字符串数都要调用此函数去空格c.substr:截取字符串的一部分内容,也PB的mid函数功能一样d.to_char:将数值型或日期型数据转化为字符类型,如to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')e.lpad/rpad:在串值左/右重复填充指定的字符串,与PB的fill函数功能类似f.upper/lower:字符串都转为大写/小写4、日期相关函数a.+/-:加/减天数操作符b.to_date:将字符串类型数据转为日期型信息,如to_date('2005-11-15','yyyy-mm-dd')c.trunc:去掉时间那部分信息,常用于按日期检索数据d.add_months:增加月份5、数值相关函数:a.to_number:将字符串类型数据转为数值型,如to_number(to_char(operation_time,'yyyymmdd'))要注意,如果待转化数据包含非数字内容,就会报Oracle错误b.trunc:按指定小数位精度截取6、其它函数a.nvl:空值判断,这是很常用的函数;对于PL/SQL的空串与空值是一样的,即在SQL语法中没必要像PB一样判断空串;b.decode:条件分支判断,if elsec.sign:判断数值的符号,可用于>或<判断,常与decode合起来使用;7、伪列:在SQL语法中可以和普通列一样使用a.sysdate:取当前数据库所在服务器的时间——系统时间b.rownum:用于限制检索行数c.rowid:当前检索行的唯一内部定位标识符8、序列号取值:nextval,取序列号的下一数值9、特殊表:dual10、解析表列类型信息的命令:desc(describe)三、Oracle事务处理1、事务概念a.在PB编程中,事务开始于SQL更新操作或行锁,结束于提交(commit)或回滚操作,即一个事务的开始与结束是隐式由系统自动控制;b.在中断任何事务前(如弹出提示框或窗口),一定要把事务提交或回滚;c.注意:任何出错函数都会自动把事务回滚,再弹出相应提示;要注意判断返回值2、并发控制(锁机制/资源争用):多用户操作程序必须会遇到并发问题,数据库系统中一般通过锁来防止并发a.锁类型/锁粒度:PB编程中常用到的是排它锁,而Oracle内部处理一般是共享锁(如update/delete操作)i.行级锁:select for update语法;推荐在程序中使用;ii.表级锁:lock table语法;杜绝在程序中使用表级锁,除非是同一事务中对表的所有数据进行修改操作,否则极易引发数据库阻塞;b.死锁类型i.行间死锁:在不同事务处理中,a行与b行的锁表顺序相反;ii.表间死锁:在不同事务处理中,A表与B表的锁表顺序相反;c.死锁与阻塞:可认为两者是共生的,都源于对数据库资源未能及时释放i.死锁:Oracle对于死锁会在一定时间范围内检测到并自动解锁,但此过程需占有大量资源,大量事务并发死锁时常造成数据库变慢,客户端操作没有响应,严重情况下会引起系统崩溃;若Oracle没能及时解锁,这时数据库就会发生大量阻塞;ii.阻塞:一般是程序事务处理长时间未能提交或回滚,导致事务所占数据库资源未能释放,系统响应时间变量,大量阻塞也会使平常不会出现的行级死锁大量出现,从而使系统陷入资源争用的死循环,除非这时手工干预或引发阻塞的事务释放资源,否则最终结果必然是系统崩溃;iii.系统崩溃:指数据库系统对客户端操作无任何响应,且客户端无法连接;数据库所在服务器(一般是windows2000)对鼠标或键盘操作也无响应,这种情况下只能是重启服务器;四、数据库编程容错1、SQL执行语句容错:任何数据库操作都必须判断是否正确执行(sqlca)a.查询语句错误判断(select/cursor/execute immediate)sqlca.sqlcode:=0(正确),-1(出错),f_sqlerr/sqlca.sqlcode=100b.更新语句错误判断(update/insert/delete)sqlca.sqlcode/sqlnrows:数据更新影响行数,f_sqlerror2、PB程序错误判断a.数据窗口更新错误判断:update(true,false)=1/resetupdateb.数据窗口内部错误处理:dberror事件c.应用级错误:systemerror事件五、SQL执行效率问题1、客户端等待最占用时间的部分就是数据库操作及网络传输,网络问题不是这文档所涉及的,下面主要针对数据库操作讲一些常用优化方法;2、Oracle的SQL语法从提交命令到输出结果一般要经过以下几步:语法分析、语义分析、执行路径分析、……3、Oracle的优化方式:基于规则(base rule)/基于选择(base choose),一般推荐用基于选择(base choose)的优化方式,但可在检索语法中设置特殊的优化方式;4、SQL查询语句优化列举:尽可能利用索引,减少表间关联字段a.关联的字段不能加上使用表达式(函数、计算式等),特殊是修改数据窗口的检索条件时(SetSQLSelect),如:to_char(operation_time,'yyyy-mm-dd')=正确的写书方式应为:selectfrom dispensary_sick_price_itemwhere operation_time >= to_date('2005-11-15','yyyy-mm-dd')and operation_time < to_date('2005-11-16','yyyy-mm-dd');b.特别要注意对于字符型字段与数值参数关联(或反过来数值型字段与字符参数关联),一定要把参数先转化为与字段同样的类型,否则即使字段有建索引也没办法用到,因为Oracle分析SQL语法时会自动把字段加上相应的函数处理以匹配参数;即所有参数类型定义应与所关联字段匹配,或对类型转化要显示在参数中处理;c.多表关联时,尽可能使用主键列;d.尽可能用exists/not exists语法,而不是in/not in语法;一般若子查询数据量较小可用in语法,若子查询行数可能会超过100条,则必须使用exists语法,且Oracle的in语法有最多999行限制;e.尽量使用绑定变量,主要是动态执行的SQL语法(用动态游标),这样可在SQL执行预处理时省却语法分析阶段所占的时间,特别是在循环语句中;f.char和varchar2字段类型关连:i.char与char:不论两字段长度定义如何,都能利用索引;ii.varchar2与varchar2:也与其长度定义无关,但要注意要么后面都没空格,要么空格数量要一致才能用到索引;iii.char与varchar2:除非varchar2字段空格补足到与char定义长度一样,否则没办法用到索引;g.对于大数据量表新建索引时,一定要记得分析索引analyze index comm.PK_IC_CARD_DEPOSIT(索引名) compute statistics;5、判断SQL执行情况的方法:可通过在SQLPlus设置以下命令,然后执行所要分析的SQL语法,就可以得到其执行路径与执行时间等信息set autotrace on/set autotrace traceonly(不显示所检索的数据)set timing on6、大幅提高批量数据处理效率的方法——后台包,如床位计价、每日报表基表数据生成等;对于一些医院业务高峰常用模块(如住院摆药、单据扣费等)也常把这类业务写在后台包中处理;7、数据库连接接口:正常情况下都是使用PB原生Oracle接口,且按其客户端配置尽可能用高版本的Oracle客户端;六、数据库操作安全问题1、不准在PB的数据库管理窗口中执行SQL更新语法,必须在sqlplus执行,这样才能判断执行结果,防止更新语法写错(如where条件写漏了),以决定提交(commit)还是回滚(rollback);2、更新数据前先用相同条件的select语法查看,且把检索出的数据导出备份(用PB或程序员助手),以便出错时恢复数据(很有中能SQL语法没错,但需求是错的);3、除非是清库才使用truncate table语法(直接提交,无法回滚,且无数据库日志),否则删除所有数据只能使用delete from 语法;七、数据库管理相关1、Oracle数据库文件a.初始化文件:initzhis4.ora与spfilezhis4.ora(Oracle9i才有)b.密码文件:可用命令orapwd创建c.控制文件:control filed.数据文件:Oracle系统文件、临时表空间文件、回滚段数据文件、用户数据文件e.日志文件:在线日志与归档日志2、手工启动/关闭数据库实例a.启动实例(初始化文件):startup nomount->alter database mountb.启动实例(控制文件):startup mount->alter database openc.启动实例(数据文件):startup/startup opend.关闭实例:shutdown immediate3、数据库备份机制:a.[硬件]双机热备b.[软件]文件备份(在线热备/离线冷备)c.[软件]导出备份(全库导出/增量导出)4、重建数据库相关(详细步骤参见创建数据库步骤.txt)a.修改数据库实例名:创建实例,init文件实例参数修改,重建控制文件b.数据库文件路径修改:init文件控制文件路径修改,重建控制文件c.实例名与数据库文件路径都不变:拷到相同目录,直接启动。

chap13OraclePLSQL命名对象

chap13OraclePLSQL命名对象
• 删除存储过程
• DROP PROCEDURE • DROP PROCEDURE proc_show_emp;
16 chap13OraclePLSQL命名对象
13.2.5 人力资源管理系统存储过程的创建
• 创建名为“PROC_SECURE_DML”的存储过程,检查当前用户操作时间是否为工作 时间,即非周六、周日,时间为08:00-18:00。
• 为EMPLOYEES表创建触发器,当更新员工部门或插入新员工时,保证部门人 数不超过20人。
6 chap13Oracl存储过程的创建 • 存储过程的调用 • 存储过程的管理
7 chap13OraclePLSQL命名对象
(1)存储过程的创建
• 基本语法

'average salary is: '||v_sal);
• FOR v_emp IN (SELECT * FROM employees
• WHERE department_id=p_deptno AND salary>v_sal)LOOP
• DBMS_OUTPUT.PUT_LINE(v_emp.employee_id||' '||
• CREATE OR REPLACE PROCEDURE proc_secure_dml
• IS
• BEGIN
• IF TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:00'
• AND '18:00' OR TO_CHAR (SYSDATE, 'DY',
• 'NLS_DATE_LANGUAGE=AMERICAN') IN ('SAT', 'SUN')

ORACLE数据库设计规范

ORACLE数据库设计规范

1命名原则1.1约定ü是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定;ü命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割ü避免使用Oracle的保留字如LEVEL、关键字如TYPE(见Oracle保留字和关键字);ü各表之间相关列名尽量同名;ü除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;ü命名只能使用英文字母,数字和下划线;1.2表名规则如下:命名规则为xxx_yyy_TableName。

xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有), 最多五个字母构成,尽量用简称;TableName为表含义, 最多十个字母构成,尽量用简称TableName规则如下:ü使用英文单词或词组作为表名,不得使用汉语拼音ü用名词和名词短语作表名ü不使用复数正确的命名,例如:fiber_sys_userfiber_biz_order1.3存储过程规则如下:命名规则为xxx_yyy_StoredProcedureName。

xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有), 最多五个字母构成,尽量用简称;StoredProcedureName为存储过程含义,最多十个字母构成,尽量用简称StoredProcedureName规则如下:ü用动词或动词短语来命名,并带有宾语ü需要符合用Pascal 命名规则。

ü尽量谨慎地使用缩写ü尽量不要和关键字重合ü不要用任何名前缀(例如U,B)üStoredProcedureName内不使用下划线ü当操作依赖条件时,一般结尾使用By+条件存储过程正确的命名,例如:sys_InsertUsersys_SearchUserByUserIDsys_DeleteUserByUserID1.4视图规则如下:ü视图的命名采用xxx_yyy_ViewName_v。

oracle命名规则

oracle命名规则一、概述Oracle命名规则是指在Oracle数据库中定义各种对象(如表、列、索引、约束等)时所遵循的命名规范。

合理的命名规则可以提高数据管理的效率,降低出错率,使数据库更易于维护和管理。

二、命名规则的基本原则1. 命名应该简洁明了,易于理解和记忆。

2. 命名应该准确反映对象的含义和作用。

3. 命名应该避免使用特殊字符和空格,以免造成不必要的麻烦。

4. 命名应该遵循大小写敏感原则。

三、表命名规则1. 表名应该用单数形式,并且尽量简短明了。

2. 表名应该准确反映表内数据的含义和作用。

3. 表名中可以使用下划线分隔单词,但不建议过多使用。

四、列命名规则1. 列名应该用小写字母,并且尽量简短明了。

2. 列名应该准确反映列内数据的含义和作用。

3. 列名中可以使用下划线分隔单词,但不建议过多使用。

五、索引命名规则1. 索引名称应以“IDX_”开头,后面跟上表名和列名,以便于识别。

2. 索引名称应该用小写字母,并且尽量简短明了。

3. 索引名称中可以使用下划线分隔单词,但不建议过多使用。

六、约束命名规则1. 约束名称应以“PK_”或“FK_”开头,分别代表主键和外键。

2. 约束名称应该用小写字母,并且尽量简短明了。

3. 约束名称中可以使用下划线分隔单词,但不建议过多使用。

七、存储过程和函数命名规则1. 存储过程和函数名称应该用大写字母,并且尽量简短明了。

2. 存储过程和函数名称应该准确反映其功能和作用。

3. 存储过程和函数名称中可以使用下划线分隔单词,但不建议过多使用。

八、包命名规则1. 包名称应该用大写字母,并且尽量简短明了。

2. 包名称应该准确反映其功能和作用。

3. 包名称中可以使用下划线分隔单词,但不建议过多使用。

九、触发器命名规则1. 触发器名称应该用大写字母,并且尽量简短明了。

2. 触发器名称应该准确反映其功能和作用。

3. 触发器名称中可以使用下划线分隔单词,但不建议过多使用。

十、总结Oracle命名规则是数据库管理中不可或缺的一部分,良好的命名规则可以提高数据管理的效率和准确性。

Oracle数据库开发规范

Oracle数据库开发规范V 2.0目录一、命名规范 (3)二、表规范 (4)三、索引规范 (4)四、书写规范 (6)五、注释规范 (8)六、注意事项 (9)附PL/SQL Developer美化器规则 (14)一、命名规范数据库对象命名应使用有意义、易于记忆、描述性强、简短及唯一的英文单词或英文单词缩写,不允许使用中文、拼音或特殊字符。

变量名命名规范示例:PROCEDURE P_CHECK_PROMOTION_RULE(I_WEB_ORDER_ID IN NUMBER,O_ISACCORD_PROM_RULE OUT NUMBER)ISV_ISNO_ACCORD_PRODUCT VARCHAR2(1000);--用于XX目的... ...二、表规范1. 表必须要有注释如comment on table CU_COUPON is '收支明细';2. 列尽量要有注释如comment on column CU_COUPON.coupon_code is '单号';3. 经常用到的列放在表的前面,有利于提高检索效率。

4. 列值和列的数据类型要尽量匹配数值用NUMBER,字符用VARCHAR2,时间用DATE,否则会发生隐式数据类型转换,影响性能。

5. 不要用LONG和RAW数据类型LONG和RAW都属于已经被淘汰的数据类型,可以用CLOB和BLOB代替。

对于已有的LONG类型列,可改为LOB类型,如ALTER TABLE 表名MODIFY列名CLOB;但注意LONG改为LOB后,会导致该表上其他列索引(非LONG列)失效,需要重建索引,可执行ALTER INDEX 索引名REBUILD ONLINE;6. 大表要考虑数据的生命周期对于一些大表如日志表,考虑数据的保留时间,可建成分区表,以方便定期把老数据迁移到历史库,减少在线库的容量,提高在线库的性能。

7. 能加主键的列加上主键,能加唯一约束的列加上唯一约束,能加上非空约束的列加上非空约束,能加上check约束的列加上check约束,主键、唯一约束、非空约束、check约束可大大提高sql的执行效率。

oracle命名空间详解(5篇模版)

oracle命名空间详解(5篇模版)第一篇:oracle 命名空间详解一.初识Namespace Oracle通过namespace来管理schema object的名字,关于Namespace 的定义,在官网文档上没有找到一个详细的定义,在网上搜到一些相关信息:SchemaObject NamespacesA namespace defines a group of object types, within whichall names must be uniquely identified—by schema and name.Objects in differentnamespaces can share the same name.The Oracle database usesnamespaces to resolve schema object references.When you refer to an object ina SQL statement, Oracle considers the context of the SQL statement and locatesthe object in the appropriate namespace.After locating the object, Oracleperforms the operation specified by the statement on the object.If the named object cannot be found in the appropriate namespace,then Oracle returns an error.Because tables and views are in the same namespace, a table and a view inthe same schema cannot have the same name.However, tables and indexesare in different namespaces.Therefore, a table and an index in the same schemacan have the same name.Eachschema in the database has its own namespaces for the objects it contains.Thismeans, for example, that two tables in different schemas are in differentnamespaces and can have the same name.--以上解释提到了几点:1.每个用户都有自己对应的namespace来保存自己的对象2.表和视图存放在同一个namespace,所以对于同一个用户的表和视图不能重名,但是表和索引是存放在不同的namespace,所以可以重名。

Oracle数据库使用及命名规则的详解

Ekw719公司已建立的或待建立的网站,如:中文站(CHINA),国际站(ALIBABA),华商站(CHINESE)等。

OLPSOnline process system,在线处理系统,即我们的会员可以浏览的网站所连接的数据库,也是我们所说的前台。

BOPSBack Office process system,后台处理系统,即我们的网站的发布系统。

BZOBusiness Object(?),公司网站低层JAVA对象,主要负责与数据库打交道。

一、命名约定1.是指数据库、数据库对象如TABLE、SEQUENCE、PROCEDURE、COLUMN等的命名约定;2.命名富有意义英文词汇,除个别通用的(见列表),要避免使用缩写),多个单词组成的,中间以下划线分割;3.除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;4.命名只能使用英文字母,数字和下划线;'Ekw719'>5.避免使用Oracle的保留字如level、关键字如type(见列表);6.名表之间相关列名尽量同名;7.数据库的命名:网上数据库命名为“OLPS”+表示站点(SITE,以下同)的2-4个字符,后台数据库命名为“BOPS”+表示站点的2-4个字符。

测试数据库命名为“OLPS|BOPS”+“TEST”,开发数据库命名为“OLPS|BOPS”+“TEST”,用模式(SCHEMA/USER)的不同来区分不同的站点。

8.INDEX命名:table_name+column_name+index_type(1 byte)+idx,各部分以下划线(_)分割。

多单词组成的column name,取前几个单词首字母,加末单词组成column_name。

如:sample表member_id上的index: sample_mid_idx news表title上的unique index:news_titile_uidx;9.SEQUENCE命名:seq_+table_name;二、注释说明1.本注释说明主要用于PL/SQL程序及其它SQL文件,其它可作参考;2.SQLPLUS接受的注释有三种:――这儿是注释/*这儿是注释*/REM这儿是注释3.开始注释,类似JAVAK中的开始注释,主要列出文件名,编写日期,版权说明,程序功能以及修改记录:REMREM$Header: filename, version, created date,autherREMREM CopyrightREMREM FUNCTIONREM function explanationREMREM NOTESREMREM MODIFIED(yy/mm/dd)REM who when - for what, recently goes first4.块注释,如表注释,PROCEDURE注释等,同JAVA:/** This table is for TrustPass* mainly store the information* of TrustPass members*/5.单行注释,如列注释:login_id VARCHAR2(32) NOT NULL, -- 会员标识三、缩进低级别语句在高级别语句后的,一般缩进4个空格:DECLAREv_MemberId VARCHAR2(32),BEGINSELECT admin_member_id INTO v_MemberIdFROM companyWHERE id = 10;DBMS_OUTPUT.PUT_LINE(v_MemberId);END;同一语句不同部分的缩进,如果为sub statement,则通常为2个空格,如果与上一句某部分有密切联系的,则缩至与其对齐:BEGINFOR v_TmpRec IN(SELECT login_id,gmt_created, -- here indented as column abovesatusFROM member -- sub statementWHERE site = 'china'AND country='cn' )LOOPNULL;END LOOP;END;四、断行•一行最长不能超过80字符•同一语句不同字句之间•逗号以后空格•其他分割符前空格SELECT offer_name||','||offer_count as offer_category,idFROM categoryWHERE super_category_id_1 = 0;五、大小写属于ORACLE的关键字大小,表名、列名等小写。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle对象命名规范(试用稿)2019年11月修改说明正文目录1引言...........................................................................................................................1.1目的....................................................................................................................1.2范围....................................................................................................................1.3参考资料............................................................................................................ 2国网标准化命名规范...............................................................................................2.1基本原则............................................................................................................2.2实体(表)的英文命名规则............................................................................2.3属性(列)的英文命名规则............................................................................2.4主键的英文命名规则........................................................................................2.5外键的英文命名规则........................................................................................3内部补充命名规范...................................................................................................3.1表分区(P ARTITION) .......................................................................................3.2索引(I NDEX)..................................................................................................3.3视图(V IEW)...................................................................................................3.4物化视图(M ATERIALIZED V IEW) ..................................................................3.5临时表................................................................................................................3.6触发器(T RIGGER) .........................................................................................3.7过程(P ROCEDURE) ........................................................................................3.8函数(F UNCTION) ...........................................................................................3.9包(P ACKAGE &P ACKAGE B ODY) ...................................................................3.10序列发生器(S EQUENCE) ...........................................................................3.11数据链接(D ATABASE L INK) ......................................................................3.12类型(T YPE &T YPE B ODY) ........................................................................3.13角色(R OLE) ...............................................................................................3.14目录(D IRECTORIE).....................................................................................3.15表空间(T ABLESPACE) ................................................................................4附录...........................................................................................................................4.1常用缩写简表....................................................................................................1引言1.1目的本规范的目的是让数据库设计人员,在进行数据库对象设计时,确保命名的标准化、规范化。

通过建立命名规范,促使每个设计人员养成良好的习惯,提高对象的可识别性,促进团队交流和新员工的学习,以保证软件产品的质量。

1.2范围本规范应用于高阳金信公司电力服务中心使用到Oracle数据库的软件开发项目。

本规范适用人员包括电力服务中心所有软件开发人员,在整个软件设计开发过程中必须遵循此规范。

1.3参考资料《电力用户用电信息采集系统主站软件标准化设计》2命名规范2.1基本原则规范的命名能使对象更易阅读,可以提供一些标识功能方面的信息,有助于更好的理解其用途。

特别是加前缀的命名方式可以为数据库对象的管理和浏览带来极大便利,同时也能清晰地与其他工具建立的对象进行区别。

2.2表(Table)1)表的命名采用英文与下划线组合的命名规则。

表名的长度一般不允许超过20个字符。

要求使用英文,不能使得拼音,英文单词的字母要求大写,多个单词间用下划线连接,"_"。

关联表命名规则为:前缀_RELA_表A_表B。

采用的英文单词应尽量为常用单词,英文单词过长时,可以采用适当的简写(一般是前4个字符),如果CODE仅有一个单词,要求不使用缩写,而是采用完整的单词。

一般下划线不应多于四个。

示例:表命名规则:“前缀”+“_”+“英文单词”+“_”+“英文单词”+“_”+“英文单词”其中前缀为主题域的简写。

2)词意准确性要尽可能采用专业词汇和国际标准词汇,包括:IEC通用电力标准、中国电力行业标准、国际会计标准协会 IASB 国际会计准则等通用行业术语。

3)高频词汇优先原则如遇多个单词均可反映表的内容,要求采用 GOOGLE 的标准译法,也就是使用频率最多的单词优先选用原则。

已规定的表前缀见下表:2.3列/字段(Column)1)字段命名采用英文与下划线组合的命名规则。

字段名的长度一般不允许超过15个字符,个别的字段名的长度可以达到20,但不允许超过20。

英文单词的字母要求大写,多个单词间用下划线连接,"_"。

采用的英文单词应尽量为常用单词,英文单词过长时,可以采用适当的简写(一般是前4个字符),复杂的词组取各个单词的首字母拼成一个简写单词,如果CODE仅有一个单词,要求不使用缩写,而是采用完整的单词,一般下划线不应多于四个。

示例:字段命名规则:“英文单词”_“英文单词”2)词意准确性要尽可能采用专业词汇和国际标准词汇,包括:IEC通用电力标准、中国电力行业标准、国际会计标准协会 IASB 国际会计准则等通用行业术语。

通用CODE的选用,要尽可忠实地反映实体的内容,并注意细微区别,如:TYPE 表示类型,MODEL表示型号,CATEGORY表示分类,NO 表示编号,CODE 表示编码,ID 表示标识。

3)高频词汇优先原则如遇多个单词均可反映实体的内容,要求采用 GOOGLE 的标准译法,也就是使用频率最多的单词优先选用原则。

2.4主键约束一般采用PK_加实体名的命名规则,如:客户实体(CUSTOMER)的主键为PK_CUSTOMER 。

2.5外键约束一般采用“FK_子表_主表_主键”的命名规则,用电户(CONSUMER)的引用为FK_CONSUMER_CUSTOMER_ID 。

2.6唯一性约束一般采用“UN_实体名”的命名规则,如:客户实体(CUSTOMER)的唯一键为UN_CUSTOMER 。

相关文档
最新文档