1、保密级别:绝密 机密 秘密 内部公开数据库设计规范变更记录版本号修改点说明变更日期变更人审批人V1.0创建修改点说明的内容有如下几种:创建、修改(+修改说明)、删除(+删除说明)目 录1编写目的12数据库策略12.1数据库对象长度策略12.2数据完整性策略12.3规范化设计与性能之间的权衡策略12.4字段类型的定义与使用策略13命名规范33.1数据库命名规则33.2数据库对象命名的一般原则43.3表空间(Tablespace)命名规则43.4表(Table)命名规则43.5字段命名规则53.6视图(View)命名规则53.7序列(Sequence)命名规则53.8存储过程(Procedure)
2、的命名规则53.9函数(Function)的命名规则53.10索引(Index) 命名规范53.11约束(Constraint) 命名规范54数据模型产出物规范5附录A:xml文件使用说明7附录B:保留关键字8 数据库设计规范例会制度 1 编写目的本文的目的是提出针对Oracle数据库的设计规范,使利用Oracle数据库进行设计开发的系统严格遵守本规范的相关约定,建立统一规范、稳定、优化的数据模型。参照以下原则进行数据库设计:1) 方便业务功能实现、业务功能扩展;2) 方便设计开发、增强系统的稳定性和可维护性;3) 保证数据完整性和准确性;4) 提高数据存储效率,在满足业务需求的前提下,使时间
3、开销和空间开销达到优化平衡。2 数据库策略1) 数据模型全局单一,所有公共的数据模型得到共享。2) 数据库建模要基于统一的元数据管理机制。3) 数据库设计遵循关系数据库的规范化理论。4) OLTP与OLAP分开设计。2.1 数据库对象长度策略数据库字段的长度要考虑业务对象的类型、数据库所用字符集、时间格式来设定出相对准确的长度,满足业务需要,同时保证数据库的高效,避免不必要的开销。2.2 数据完整性策略1) 必须遵循数据库设计的第二范式,根据业务需要尽量满足第三范式。2) 数据完整性尽量通过业务逻辑实现,数据库设计应尽量避免使用大量的外键约束,避免使用触发器。2.3 规范化设计与性能之间的权衡
4、策略数据的标准化有助于消除数据库中的数据冗余。如果数据冗余低,数据的一致性容易得到保证,如无特殊理由,OLTP系统的设计应当遵循第三范式,对于OLAP系统,为了减少表间连接查询的操作,提高系统的响应时间,合理的数据冗余是必要的。2.4 字段类型的定义与使用策略1) 数据类型的选用原则数据类型使用说明CHAR根据业务数据的特征决定是否使用CHAR类型,例如静态编码、固定年月日的时间字段等,避免数据变长的情况下使用CHAR类型VARCHAR2(N)Oracle数据库VARCHAR2类型,根据业务数据特征定义适当的长度,定义成偶数长度。REAL、FLOAT、INTEGER、NUEBEROracle数
5、据库必须使用NUEBERNUMBER(P,S)、NUMERIC (P, S)、DECIMAL (P, S)Oracle数据库必须使用NUMBERDATE时间类型必须使用DATEBLOB(二进制数据)、CLOB(字符数据)2) 数据类型长度的选用参考:如果以下字段类型和长度能满足设计要求,必须遵循以下字段选用原则数据类型常用类型CHARCHAR(1)本规范不推荐长度不为1的字段使用char类型VARCHAR2(N)VARCHAR2(2)VARCHAR2(4)VARCHAR2(8)VARCHAR2(10)VARCHAR2(16)VARCHAR2(20)VARCHAR2(30)VARCHAR2(40
6、)VARCHAR2(50)VARCHAR2(100)VARCHAR2(200)VARCHAR2(400)VARCHAR2(1000)VARCHAR2(2000)NUMBERNUMBER(P,S)DATEBLOB3) 常用字段定义:l 涉及销售额等金额的数值:NUMBER (16,2)l 涉及税率、比例、分成的数值:NUMBER (10,6)l 涉及货物单价的数值:NUMBER (16,6)l 涉及人数的数值:NUMBER (10)l 涉及人名的:VARCHAR2 (50)l 涉及单位名称、地址的:VARCHAR2 (100)l 涉及说明、理由、意见的: VARCHAR2 (200)l optr
7、_code,建议在业务表中增加该字段,表示操作员工号;l opt_date,建议在业务表中增加该字段,表示操作时间;l remark,建议在业务表中增加该字段,作为备用字段;l stand,建议在业务表中增加该字段,作为备注;l 描述“是、否”类型的字段命名,避免使用“IS_”开头。3 命名规范3.1 数据库命名规则数据库命名规则如下:项目简称+1位数据库类型代码+识别代码+序号数据库类型代码:1) T:业务型数据库2) A:分析型数据库3) H:历史数据库识别代码:1) DEV:开发数据库2) TEST:测试数据库如果一种类型的数据库一个数据库,则不加序号,否则末尾增加序号。如果是生产库则不
8、加识别代码,否则需要增加爱识别代码DEV或TEST如果只作历史库,部分生产、开发或者测试,则只需要项目简称+H+序号举例:出入系统业务生产库:AOCT、AOCT1、AOCT2出入系统业务开发库:AOCTDEV、AOCTDEV1、AOCTDEV2出入系统业务测试库:AOCTTEST、AOCTTEST1、AOCTTEST23.2 数据库对象命名的一般原则数据库对象的命名应该以最少的字母达到最容易理解的意义。如果没有特殊规定,数据库对象及其属性的命名应满足如下条件:1) 命名不推荐使用保留字;2) 数据库实体统一采用英文命名;3) 对象命名长度最好不要超过18个字符,缩写要易于理解,符合通用的习惯,
9、例如部门编码缩写:dept_code,组织机构编码缩写:org_code。4) 前导字符为A至Z5) 非前导字符可以为:l A至Zl 0至9l _(下划线字符)3.3 表空间(Tablespace)命名规则1) 表空间l 表空间的描述规则统一为:TS_业务规则。l 例如:TS_CRM等2) 临时表空间临时表空间的描述规则统一为:TS_TMP_业务规则。3.4 表(Table)命名规则1) 业务数据库中的数据表命名规则:子系统简称_业务含义2) 分析型数据库中的数据表操作型数据存储区中的数据表:ODS_业务规则。事实表:FACT_业务规则。维表数据:DIM_业务规则。中间表:MID_业务规则。3
10、.5 字段命名规则1) 主键与外键必须使用相同的字段名和数据类型(含数据精度);尽量少使用联合主键;主键的命名有一定的含义,不要只写成“ID”之类的字段名;主键的生成规则有一定的含义,比如前缀+流水号规则,不要使用自增主键,不要使用数字类型。2) 凡与业务含义无关的主键一律加_ID后缀。如PARTY_ID;3) 凡是具有业务含义的编码(或代码)等字段一律加_CODE后缀。如PARTY_CODE;4) 凡是名称、姓名等字段一律加_NAME后缀。如PARTY_NAME;3.6 视图(View)命名规则命名规则:VW_子系统简称_业务含义。3.7 序列(Sequence)命名规则命名规则:SEQ_表
11、名。3.8 存储过程(Procedure)的命名规则命名规则:PRC_子系统简称_业务含义。3.9 函数(Function)的命名规则命名规则:FUN_子系统简称_业务含义。3.10 索引(Index) 命名规范命名规则:IDX_表名_有关字段。不允许使用自动生成的索引。3.11 约束(Constraint) 命名规范主键(Primary Key Constraint):PK_表名,需要考虑主键长度太长无法创建的情况,表名部分要尽量简化且易于区分。外键(Foreign Key Constraint):FK_表名_字段_被参照 (referenced) 表名,需要考虑外键长度太长无法创建的情况,
12、表名部分要尽量简化且易于区分。4 数据模型产出物规范1) PDM文件数据模型产出物统一为PDM文件。各个项目根据情况,可以区分概念模型和物理模型;2) XML文件数据模型需要产出相应的XML文件,通过PDM进行转换,具体xml使用说明参照附录A。3) 建表脚本数据库的建表脚本作为数据库设计的规范产出物,需要严格进行版本控制,有统一的命名规范,命名规范如下:l 创建表脚本:项目简称_create_table.sql。l 修改表脚本:项目简称_alter_table.sql,在原有表的基础上做的修改,增加字段、主键、外键、索引等。l 创建存储过程脚本:项目简称_create_prc.sql,所有涉
13、及存储过程的创建和修改,必须实时更新此文件。l 创建函数脚本:项目简称_create_fun.sql,所有涉及函数的创建和修改,必须实时更新此文件。l 创建视图脚本:项目简称_create_view.sql, 所有涉及视图的创建和修改,必须实时更新此文件,并且如果在PDM文件中有视图的创建,需要更新PDM文件。注:修改表脚本只作为备忘,所有表结构的修改,都必须实时更新“PDM文件”和“创建表脚本”,便于项目实施时表结构的导入。附录A:xml文件使用说明表结构设计文件是指在进行表,视图,以及约束的设计过程中所产生的文件。格式:xml文件 上面两行格式固定,主要用于数据结构的列表展示,每一个表结构
14、文件都要引用 文件根节点 文件二级节点,下面允许有多个元素 文件三级节点,指项目设计中的模块,name 和chineseDescription必须维护。 下面允许有多个节点。 文件四级节点,指项目设计中的模块,name 和chineseDescription必须维护。下面允许有多个节点 表定义节点,下面允许有多个元素 属性name指代表的英文名称, 属性chineseDescription指表的中文名称。 属性pkg指由表结构自动生成的java类所在包路径。 属性jspPath指由表结构自动生成的jsp文件在所路径 属性function=“all”指生成增删改查 属性head =“TABLE_
15、NAME”指当前表的主表名称 属性line = “TABLE_NAME”指当前表的细表名称 表注释元素,用来对表的功能,修改信息做出描述 表的列元素。 属性name指代字段的英文名称(即字段名) primaryKey =“true”用来标识当前列为主键列 required=“true”用来标识当前列是否允许为空 type=“VARCHAR”用来标识当前列的字段类型定义 size=“10” 用来标识当前列的字段长度 chineseDescription=“内码”用来标识当前列的字段中文名称 queryShow=“true”标识列中在查询列表中是否显示 searchShow=“true”标识列中在
16、查询条件中是否显示 updateShow=“标识列中在修改页面中是否显示 insertShow=“true”标识该列在插入页面中是否显示 detailShow=“true”标识该列在明细页面中是滞显示 enumValue=“1:JSP,2:CLASS”标识该列允许的选择值及代表意义。 标识外键引用,允许子节点 本节点主要是把当前表字段与引用表字段根据字段名关联起来附录B:保留关键字对象命名不允许使用的关键字:ABSOLUTEINDICATORSYSTEM_USERAUXILIARYABSOLUTEINITIALIZETABLEBUFFERPOOLACTIONINITIALLYTEMPORARY
17、CALLEDADAINNERTERMINATECAPTUREADDINOUTTEXTSIZECCSIDADMININPUTTHANCLUSTERAFTERINSENSITIVETHENCOLLECTIONAGGREGATEINSERTTIMECOLLIDALIASINTTIMESTAMPCOMMENTALLINTEGERTIMEZONE_HOURCONCATALLOCATEINTERSECTTIMEZONE_MINUTECONDITIONALTERINTERVALTOCOUNT_BIGANDINTOTOPCURRENT_LC_PATHANYISTRAILINGCURRENT_SERVERARE
18、ISOLATIONTRANCURRENT_TIMEZONEARRAYITERATETRANSACTIONDAYSASJOINTRANSLATEDB2GENERALASCKEYTRANSLATIONDB2SQLASSERTIONKILLTREATDBAATLANGUAGETRIGGERDBINFOAUTHORIZATIONLARGETRIMDBSPACEAVGLASTTRUNCATEDISALLOWBACKUPLATERALTSEQUALDOBEFORELEADINGUNDERDSSIZEBEGINLEFTUNIONEDITPROCBETWEENLESSUNIQUEELSEIFBINARYLEV
19、ELUNKNOWNENCRYPTBITLIKEUNNESTERASEBIT_LENGTHLIMITUPDATEEXCLUSIVEBLOBLINENOUPDATETEXTEXPLAINBOOLEANLOADUPPERFENCEDBOTHLOCALUSAGEFIELDPROCBREADTHLOCALTIMEUSEFINALBREAKLOCALTIMESTAMPUSERGENERATEDBROWSELOCATORUSINGGRAPHICBULKLOWERVALUEHANDLERBYMAPVALUESHOURSCALLMATCHVARCHARIDENTIFIEDCASCADEMAXVARIABLEIN
20、TEGRITYCASCADEDMINVARYINGISOBIDCASEMINUTEVIEWJAVACASTMODIFIESWAITFORLABELCATALOGMODIFYWHENLC_CTYPECHARMODULEWHENEVERLEAVECHAR_LENGTHMONTHWHERELINKTYPECHARACTERNAMESWHILELOCALECHARACTER_LENGTHNATIONALWITHLOCATORSCHECKNATURALWITHOUTLOCKCHECKPOINTNCHARWORKLOCKSIZECLASSNCLOBWRITELONGCLOBNEWWRITETEXTLOOP
21、CLOSENEXTYEARMICROSECONDCLUSTEREDNOZONEMICROSECONDSCOALESCENOCHECKFALSEMINUTESCOLLATENONCLUSTEREDTRUEMODECOLLATIONNONEACCESSMONTHSCOLUMNNOTADDNAMECOMMITNULLALLNAMEDCOMPLETIONNULLIFALTERNHEADERCOMPUTENUMERICANDNODENAMECONNECTOBJECTANYNODENUMBERCONNECTIONOCTET_LENGTHASNULLSCONSTRAINTOFASCNUMPARTSCONST
22、RAINTSOFFAUDITOBIDCONSTRUCTOROFFSETSBETWEENOPTIMIZATIONCONTAINSOLDBYOPTIMIZECONTAINSTABLEONCHARPACKAGECONTINUEONLYCHECKPAGECONVERTOPENCLUSTERPAGESCORRESPONDINGOPENDATASOURCECOLUMNPARTCOUNTOPENQUERYCOMMENTPARTITIONCREATEOPENROWSETCOMPRESSPCTFREECROSSOPENXMLCONNECTPCTINDEXCUBEOPERATIONCREATEPIECESIZEC
23、URRENTOPTIONCURRENTPRIQTYCURRENT_DATEORDATEPRIVATECURRENT_PATHORDERDECIMALPROGRAMCURRENT_ROLEORDINALITYDEFAULTPSIDCURRENT_TIMEOUTDELETEQUERYNOCURRENT_TIMESTAMPOUTERDESCRECOVERYCURRENT_USEROUTPUTDISTINCTRELEASECURSOROVERDROPRENAMECYCLEOVERLAPSELSEREORGDATAPADEXCLUSIVEREPEATDATABASEPARAMETEREXISTSRESE
24、TDATEPARAMETERSFILERESOURCEDAYPARTIALFLOATRRNDBCCPASCALFORRUNDEALLOCATEPATHFROMSCHEDULEDECPERCENTGRANTSCRATCHPADDECIMALPLANGROUPSECONDSDECLAREPOSITIONHAVINGSECQTYDEFAULTPOSTFIXIDENTIFIEDSECURITYDEFERRABLEPRECISIONIMMEDIATESHAREDEFERREDPREFIXINSIMPLEDELETEPREORDERINCREMENTSOURCEDENYPREPAREINDEXSTANDA
25、RDDEPTHPRESERVEINITIALSTAYDEREFPRIMARYINSERTSTOGROUPDESCPRINTINTEGERSTORESDESCRIBEPRIORINTERSECTSTORPOOLDESCRIPTORPRIVILEGESINTOSTYLEDESTROYPROCISSUBPAGESDESTRUCTORPROCEDURELEVELSYNONYMDETERMINISTICPUBLICLIKETABLESPACEDIAGNOSTICSRAISERRORLOCKTYPEDICTIONARYREADLONGUNDODISCONNECTREADSMAXEXTENTSUNTILDI
26、SKREADTEXTMINUSUPSERTDISTINCTREALMLSLABELVALIDPROCDISTRIBUTEDRECONFIGUREMODEVARIANTDOMAINRECURSIVEMODIFYVCATDOUBLEREFNOAUDITVOLUMESDROPREFERENCESNOCOMPRESSWLMDUMMYREFERENCINGNOTYEARSDUMPRELATIVENOWAITADDDYNAMICREPLICATIONNULLARITH_OVERFLOWEACHRESTORENUMBERCHAR_CONVERTELSERESTRICTOFCONFIRMENDRESULTOF
27、FLINECONTROLROWEND-EXECRETURNONENDTRANEQUALSRETURNSONLINEERRORDATAERRLVLREVOKEOPTIONERROREXITESCAPERIGHTOREXP_ROW_SIZEEVERYROLEORDERIDENTITY_GAPEXCEPTROLLBACKPCTFREEIDENTITY_STARTEXCEPTIONROLLUPPRIORINSTALLEXECROUTINEPRIVILEGESJAREXECUTEROWPUBLICMAX_ROWS_PER_PAGEEXISTSROWCOUNTRAWMIRROREXITROWGUIDCOL
28、RENAMEMIRROREXITEXTERNALROWSRESOURCENOHOLDLOCKEXTRACTRULEREVOKENUMERIC_TRUNCATIONFETCHSAVEROWONCEFILESAVEPOINTROWIDONLINEFILLFACTORSCHEMAROWNUMPERMFIRSTSCOPEROWSPERMANENTFLASESCROLLSELECTPROCESSEXITFLOATSEARCHSESSIONPROXY_TABLEFORSECONDSETQUIESCEFOREIGNSECTIONSHAREREADPASTFORTRANSELECTSIZEREMOVEFOUN
29、DSEQUENCESMALLINTREPLACEFREESESSIONSTARTRESERVEPAGEGAPFREETEXTSESSION_USERSUCCESSFULSHAREDFREETEXTTABLESETSYNONYMSTRIPEFROMSETSSYSDATESYB_IDENTITYFULLSETUSERTABLESYB_RESTREEFUNCTIONSHUTDOWNTHENTEMPGENERALSIZETOUNPARTITIONGETSMALLINTTRIGGERUSER_OPTIONGLOBALSOMEUIDGOSPACEUNIONGOTOSPECIFICUNIQUEGRANTSP
30、ECIFICTYPEUPDATEGROUPSQLUSERGROUPINGSQLCAVALIDATEHAVINGSQLCODEVALUESHOLDLOCKSQLERRORVARCHARHOSTSQLEXCEPTIONVARCHAR2HOURSQLSTATEVIEWIDENTITYSQLWARNINGWHENEVERIDENTITY_INSERTSTARTWHEREIDENTITYCOLSTATEWITHIFSTATEMENTACQUIREIGNORESTATICALLOWIMMEDIATESTATISTICSASINSTRUCTUREASUTIMEINCLUDESUBSTRINGAUDITIND
31、EXSUMAUX 其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。二培训的及要求培训目的安全生产目标责任书为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:一、目标值:1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。2、现金安全保管,不发生盗窃事故。3、每月足额提取安全生产费用,保障安全生产投入资金的到位。4、安全培训合格率为100%。二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直
32、接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整
33、改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育;11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落