《Oracle数据库使用及命名规则的详解》由会员分享,可在线阅读,更多相关《Oracle数据库使用及命名规则的详解(9页珍藏版)》请在金锄头文库上搜索。
1、Ekw719公司已建立的或待建立的网站,如:中文站(CHINA),国际站(ALIBABA),华商站(CHINESE)等。OLPSOnlineprocesssystem,在线处理系统,即我们的会员可以浏览的网站所连接的数据库,也是我们所说的前台。BOPSBackOfficeprocesssystem,后台处理系统,即我们的网站的发布系统。BZOBusinessObject(?),公司网站低层JAVA对象,主要负责与数据库打交道。一、命名约定1是指数据库、数据库对象如TABLE、SEQUENCE、PROCEDURE、COLUMN等的命名约定;2命名富有意义英文词汇,除个别通用的(见列表),要避免使
2、用缩写),多个单词组成的,中间以下划线分割;3除数据库名称长度为18个字符,其余为130个字符,Databaselink名称也不要超过30个字符;4命名只能使用英文字母,数字和下划线;Ekw7195避免使用Oracle的保留字如level、关键字如type(见列表);6名表之间相关列名尽量同名;7数据库的命名:网上数据库命名为“OLPS”表示站点(SITE,以下同)的24个字符,后台数据库命名为“BOPS”+表示站点的24个字符。测试数据库命名为“OLPS|BOPS”+“TEST”,开发数据库命名为“OLPS|BOPS”+“TEST”,用模式(SCHEMAUSER)的不同来区分不同的站点。8I
3、NDEX命名:table_name+column_name+index_type(1byte)+idx,各部分以下划线(_)分割。多单词组成的columnname,取前几个单词首字母,加末单词组成column_name。如:sample表member_id上的index:sample_mid_idxnews表title上的uniqueindex:news_titile_uidx;9SEQUENCE命名:seq_+table_name;二、注释说明1本注释说明主要用于PL/SQL程序及其它SQL文件,其它可作参考;2SQLPLUS接受的注释有三种:这儿是注释*这儿是注释*REM这儿是注释3开始注
4、释,类似JAVAK中的开始注释,主要列出文件名,编写日期,版权说明,程序功能以及修改记录:REMREM$Header:filename,version,createddate,autherREMREMCopyrightREMREMFUNCTIONREMfunctionexplanationREMREMNOTESREMREMMODIFIED(yy/mm/dd)REMwhowhen-forwhat,recentlygoesfirst4块注释,如表注释,PROCEDURE注释等,同JAVA:/*ThistableisforTrustPass*mainlystoretheinformation*ofT
5、rustPassmembers*/5单行注释,如列注释:login_idVARCHAR2(32)NOTNULL,-会员标识三、缩进低级别语句在高级别语句后的,一般缩进4个空格:DECLAREv_MemberIdVARCHAR2(32),BEGINSELECTadmin_member_idINTOv_MemberIdFROMcompanyWHEREid=10;DBMS_OUTPUT.PUT_LINE(v_MemberId);END;同一语句不同部分的缩进,如果为substatement,则通常为2个空格,如果与上一句某部分有密切联系的,则缩至与其对齐:BEGINFORv_TmpRecIN(SEL
6、ECTlogin_id,gmt_created,-hereindentedascolumnabovesatusFROMmember-substatementWHEREsite=chinaANDcountry=cn)LOOPNULL;ENDLOOP;END;四、断行 一行最长不能超过80字符 同一语句不同字句之间 逗号以后空格 其他分割符前空格SELECToffer_name|,|offer_countasoffer_category,idFROMcategoryWHEREsuper_category_id_1=0;五、大小写属于ORACLE的关键字大小,表名、列名等小写。六、列类型的选择 用C
7、HAR(1)代替布尔值; 应尽量使用VARCHAR2代替CHAR类型; VARCHAR(2)最多4000字符; DATE精确到微秒,而非天;Ekw719 使用CLOB代替LONG,BLOB代替LONGRAW; ORACLE只有NUMBER一种数据类型,使用时请给定长度;七、主键选择选择有意义的,不太长且能唯一标识记录行的列做主键,没有这种列时,才考虑使用SEQUENCE做主健。八、列长度的选择应当根据实际需要选择列长度。有对应web页面的,与页面上对应列长度一致。对数据的验证除数据库端实现外还要尽可能在表现层控制。九、使用SQL语句的约定1尽量避免在循环中使用SQL语句。2避免在WHERE字句
8、中对列施以函数:SELECTFROMservice_promotionWHERETO_CHAR(gmt_modified,yyyy-mm-dd)=20001-09-01;而应使用:SELECT*FROMservice_promotionWHEREgmt_modified=TO_DATE(2001-9-01,yyyy-mm-dd)ANDgmt_modifiedTO_DATE(2001-9-02,yyyy-mm-dd);3避免使用数据库的类型自动转换功能:SELECT*FROMcategoryWHEREid=123;-idstypeisnumber4避免无效的连接:SELECTcount(*)FR
9、OMoffera,count_by_emailbWHEREa.email(+)=b.email;5连接(join)时要使用别名:SELECTa.*,b.offer_count(*)FROMoffera,count_by_emailbWHEREa.email(+)=b.email;6.取TABLE的META信息:SELECT*FROMtable_nameWHERErowidisnull(orrownum=1orpk=impossible_value);可考虑使用:SELECT*FROMtable_nameWHERE1=0;十、关于ALIBABA表的约定如果使用ALIBABABZO,设表至少有如下
10、字段:siteVARCHAR2(32)gmt_createDATEgmt_modifiedDATE如果从IdBizObject继承,则还有一个NUMBER型的列,通常是主键,并与某一个SEQUENCECF对应;如果从StrIdBizObject继承,则还有一个VARCHAR2型的列。十一、列值约定1有固定值列表的列,如status,action,site,其值取小写;2应尽可能选择数字来代表固定值列表中的值,相应的列定义为NUMBER型;3用CHAR(1)表示布尔值的取大写:“Y”,“N”。十二、关于表重复属性的定义不能有多择一的重复属性列;对于能多选的重复属性列,如果不做查询列并且重复次数较
11、多,应使用ID_VARRAY代替,如要用作查询列,重复次数多的,应另建一表,次数少的且列值为二择一时,应使用NUMBER类型,加位操作。十三、数据修改约定发现Production环境中数据有误,需要改正的,应在RATERMINAL上提交数据更新表单,由数据库操作员在当日17时前修改完毕。数据库更程序更新的结构变动及数据更新,类似处理。提交SQTT测试需要准备数据或更新结构的,暂时先写入测试请求中,由SQTT同志MAIL(注明测试请求表单链接即可)通过数据库操作员修改数据库。待内部网TEAM增加新的表单后,测试请求分开提交。十四、数据库设计流程在新项目设计阶段会议,应有DBA参加。在SCHEMA
12、确定以后方可开始编码。缩写字列表:paymentpymtmytradeactivitymta特殊字列表:ACCESSDECIMALINITIALONSTARTADDNOTINSERTONLINESUCCESSFULALLDEFAULTINTEGEROPTIONSYNONYMALTERDELETEINTERSECTORSYSDATEANDDESCINTOORDERTABLEANYDISTINCTISPCTFREETHENASDROPLEVELPRIORTOASCELSELIKEPRIVILEGESTRIGGERAUDITEXCLUSIVELOCKPUBLICUIDBETWEENEXISTSLON
13、GRAWUNIONBYFILEMAXEXTENTSRENAMEUNIQUEFROMFLOATMINUSRESOURCEUPDATECHARFORMLSLABELREVOKEUSERCHECKSHAREMODEROWVALIDATECLUSTERGRANTMODIFYROWIDVALUESCOLUMNGROUPNOAUDITROWNUMVARCHARCOMMENTHAVINGNOCOMPRESSROWSVARCHAR2COMPRESSIDENTIFIEDNOWAITSELECTVIEWCONNECTIMMEDIATENULLSESSIONWHENEVERCREATEINNUMBERSETWHERECURRENTINCREMENTOFSIZEWITHDATEINDEXOFFLINESMALLINTCHARVARHCARVARCHAR2NUMBERDATELONGCLOBBLOBBFILEINTEGERDECIMALSUMCOUNTGROUPINGAVERAGETYPE