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_。
索引名称应是前缀+表名+构成的字段名。
如果复合索引的构成字段较多,则只包含第一个字段,并添加序号。
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数据库规划设计和运行维护方案(V1。
0)目录1。
前言 (6)1。
1. 编写目的 (6)1。
2。
方案说明 (6)1.3. 预期读者 (7)2。
数据库部署模式 (7)2.1. 单机模式 (7)2.2. 双机热备模式(HA模式) (8)2.3。
集群模式(RAC) (9)2。
4. 主从模式(DataGuard) (10)2.5。
混合模式(DataGrard+RAC) (10)2。
6。
数据库运行模式选择 (11)3。
系统特点和数据库类型 (11)3。
1。
业务系统的特点 (11)3。
1.1。
OLTP特点 (12)3.1.2。
OLAP特点 (13)3。
2。
数据库的规模 (13)3.3。
数据库版本建议 (13)4. 数据库运行环境规划 (14)4.1。
主机规划 (14)4。
2. 网络规划 (15)4.3. 存储规划 (17)5。
数据库安装部署规划 (19)5.1。
软件安装路径 (19)5。
2. 表空间设计 (19)5.2.1. 业务数据量估算 (19)5。
2。
2。
表空间使用规则 (21)5.2.3。
表空间的概念和分配原则 (25)5。
2.4。
表空间的参数配置 (26)5.2。
5. Undo/temp表空间的估算 (30)5.2。
6. 表的参数设置 (30)5.2。
7. 索引的使用原则 (31)5。
3. 文件设计 (32)5.3。
1. RAC配置文件 (32)5.3。
2. 参数文件 (33)5。
3。
3. 控制文件 (34)5。
3.4。
重做日志文件 (35)6。
数据库应用规划 (37)6。
1。
数据库用户设计 (37)6。
1。
1。
用户权限规划 (37)6.1.2。
用户安全实现 (39)6。
1。
3. 用户类型及角色命名规范 (41)6.2. 数据库分区 (44)6.2。
1. 数据库分区介绍 (44)6。
2.3. 物理分割 (45)6。
2。
4. 数据分区的优点 (45)6.2.5. 数据分区的不足 (45)6.2。
oracle数据库设计课程设计
oracle数据库设计课程设计一、课程目标知识目标:1. 理解Oracle数据库的基本概念,掌握数据库设计的基本原理;2. 学会使用SQL语言进行数据库的基本操作,如创建表、查询数据、更新数据等;3. 掌握数据库设计规范,能够设计出结构合理、性能优良的数据库表结构;4. 了解数据库的安全性和一致性约束,能够为数据库设置合理的约束条件。
技能目标:1. 能够运用所学知识独立完成小型信息系统的数据库设计;2. 能够熟练运用SQL语言进行数据库的操作,解决实际问题;3. 能够运用数据库设计原则对现有数据库进行优化,提高数据库性能;4. 能够分析实际业务需求,撰写数据库设计文档,为软件开发提供支持。
情感态度价值观目标:1. 培养学生对数据库技术的兴趣,激发学习积极性,提高自主学习能力;2. 培养学生具备良好的团队合作精神,能够在团队项目中发挥积极作用;3. 培养学生严谨、细致的学习态度,对待数据库设计和操作能够认真负责;4. 通过数据库技术在实际案例中的应用,使学生认识到信息技术对社会发展的积极作用,增强社会责任感。
二、教学内容1. Oracle数据库基础知识- 数据库概念、发展历史及Oracle数据库特点- 数据库体系结构、数据库存储结构- SQL*Plus工具的使用2. SQL语言基础- 数据定义语言(DDL):创建、修改、删除表- 数据操纵语言(DML):插入、查询、更新、删除数据- 数据控制语言(DCL):权限管理、事务控制3. 数据库设计原理- 实体关系模型(ER模型)及其转换- 数据库设计范式:1NF、2NF、3NF、BCNF- 数据完整性、约束条件设置4. Oracle数据库高级应用- 索引、分区、视图、序列的应用- 存储过程、函数、触发器的创建与使用- 数据库性能优化、备份与恢复5. 实践项目- 设计一个小型信息系统的数据库,包括表结构设计、数据操作、完整性约束设置等- 对数据库进行性能优化,分析并解决性能瓶颈- 撰写数据库设计文档,进行项目展示与交流教学内容按照以上五个方面进行组织,确保学生能够系统地掌握Oracle数据库的设计与应用。
oracle,外键命名规范
竭诚为您提供优质文档/双击可除oracle,外键命名规范篇一:数据库(oracle)命名规范命名规范(oracle数据库)1表命名命名最好望文生义,避免使用数据库关键词命名一律为大写字母(不要大下写混合)英文单词单数命名.例:FactoRy 英文单词缩写命名.例:dept英文单词之间用下划线连结,且每个单词皆为单数.例:task_Result用来存储历史资料,命名以histoRy结尾.例:task_his用来存储日志资料,命名以log结尾.例:task_log用来存储类别资料,命名以type结尾.例:task_type2表字段命名最好望文生义,避免使用数据库关键词英文单词单数命名.例:mail英文单词缩写命名.例:dept_id英文单词之间用下划线连结,且每个单词皆为单数.例:useR_name字段用来存储流水号,命名以id结尾.例:task_id字段用来存储代码,命名以no结尾.例:task_no字段用来存储类别,命名以type结尾.例:station_type字段用来存储名称,命名以name 结尾.例:enduseR_name字段用来存储描述,命名以desc结尾.例:station_desc字段用来存储代码,命名以code结尾.例:eRRoR_code字段用来存储标志,命名以Flag开头.例:debug_Flag3索引命名以表名+index+两位流水号(01~99).例:enduseR_index014键值主键命名以表名+pk+一位流水号(1~9).例:dept_pk1附键命名以表名+ak+一位流水号(1~9).例:dept_ak1外键命名以表名+Fk+一位流水号(1~9).例:dept_Fk1检查条件以表名+ck+一位流水号(1~9).例:dept_ck15视图命名以V_开头例:V_dept其它规则参考资料表命名规则6触发器以表名+tR+一位流水号(1~9)命名.例:dept_tR17存储过程命名以pc开头实现单一资料表交易功能,以pc+表名命名.例:pc_line实现关联资料表交易功能,以pc+功能命名.例:pc_getdata命名需让人明白其主要功能8函数检查功能的函数,以is+检查项目命名.例:boolischarValid(char)获取资料功能的函数,以get+数据项命名.例:stringgetlineno(char)设定资料功能的函数,以set+数据项命名.例:intsetlineno(char)9序列命名以seq开头以表的字段名命名.例:seq_line_id若与其它表的字段名相同,则以表名+字段名命名.例:seq_code_type_id10表空间存储资料的命名为项目名称.例:cRm存储索引的命名为项目名称+idx.例:cRmidx存储历史的命名为项目名称+old.例:cRmold存储临时的命名为项目名称+log.例:cRmlog.11数据文件命名以所属表空间开头+两位流水号(01~99)+.oRa.例:cRm01.oRa12包命名以功能缩写开头+pkg+流水号(1~9).例:cRmpkg1篇二:oRacle对象命名规范oracle对象命名规范(试用稿)20xx年4月修改说明正文目录1引言................................................. ................................................... .....................41.11.21.32目的................................................. ................................................... ..............4范围................................................. ................................................... ..............4参考资料................................................. ................................................... (4)国网标准化命名规范.............................................................................................42.12.2 2.32.42.5基本原则................................................. ................................................... ......4实体(表)的英文命名规则................................................. .........................4属性(列)的英文命名规则................................................. .........................5主键的英文命名规则................................................. .....................................6外键的英文命名规则................................................. . (6)3内部补充命名规范................................................. ..............错误!未定义书签。
oracle数据库开发规范
编程规范1:所有数据库关键字和保留字都大写;字段、变量的大小写2:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2/4个。
必须使用空格,不允许使用【tab】键。
3:当同一条语句暂用多于一行时,每行的其他关键字与第一行的关键字进行右对齐。
4:不允许多个语句写到一行,即一行只写一条语句。
5:避免把复杂的SQL语句写到同一行,建议要在关键字和谓词处换行。
6:相对独立的程序块之间必须加空行。
BEGIN、END独立成行。
7:太长的表达式应在低优先级操作符处换行,操作符或关键字应放在新行之首。
不同类型的操作符混合使用时,用括号隔离,使得代码清晰。
8: 不同类型的操作符混合使用时,应使用括号明确的表达运算的先后关系。
9:运算符以及比较符左边或者右边只要不是链接的括弧,则空一格。
10:if 后的条件要用括号括起来,括号内每行最多两个条件。
11:减少控制语句的检查次数,如在else( if..else)控制语句中,对最常用符合条件,尽量往前被检查到。
尽量避免使用嵌套的if 语句,在这种情况应使用多个if 语句来判断其可能。
命名规范1:不使用数据库关键字和保留字,为了避免不必要的冲突和麻烦。
2:严禁使用带空格的名称来给字段和表命名,会出错误而终止。
3:用户自定义数据库对象:表,视图,主外键,索引,触发器,函数,存储过程,序列,同义词,数据库连接,包,包体风格要保持一致。
数据库名称1-8个字符,其他对象1-30个字符,数据库连接不操过30个字符。
使用英文字母、数字、下划线。
除表外,其他对象命名最好用不同的前缀来区别。
表tbl_/t_视图v_序列seq_簇c_触发器trg_存储过程sp_/p_函数f_/fn_物化视图mv_包和包体pkg_类和类体typ_主键pk_外键fk_唯一索引uk_普通索引idx_位图索引bk_4:PL/SQL对象和变量命名规则输入变量i_输出变量o_输入输出变量io_普通变量v_全局变量gv_常量大写游标cur_用户自定义类型type_保存点spt_不允许使用中文和特殊字符用户对象命名应全部为小写,且不允许使用控制符号强制转换对象为小写字符变量命名,要有具体含义,能表明变量类型。
数据库命名设计规范
数据库命名、设计规范一、数据库表及字段1.数据库表的命名规范:表的前缀应该用系统或模块的英文名的缩写(全部大写)。
如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀。
例如:如果有一个模块叫做BBS(缩写为BBS),那么你的数据库中的所有对象的名称都要加上这个前缀:BBS_ + 数据库对象名称,BBS_CustomerInfo标示论坛模块中的客户信息表。
表的名称必须是易于理解,能表达表的功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须大写。
如果当前表可用一个英文单词表示的,请用完整的英文单词来表示;例如:系统资料中的客户表的表名可命名为:SYS_Customer。
如果当前表需用两个或两个以上的单词来表示时,尽量以完整形式书写,如太长可采用两个英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。
表名称不应该取得太长(一般不超过三个英文单词)。
表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。
在命名表时,用单数形式表示名称。
例如,使用 Employee,而不是 Employees。
对于有主明细的表来说。
明细表的名称为:主表的名称 + 字符Dts。
例如:采购定单的名称为:PO_Order,则采购定单的明细表为:PO_OrderDts;对于有主明细的表来说,明细表必须包含两个字段:主表关键字、SN,SN字段的类型为int型,目的为与主表关键字联合组成明细表的关键字,以及标示明细记录的先后顺序,如1,2,3……。
表必须填写描述信息,后台表名尽量与前台表名相同,后台独有的表应以_b作为后缀。
如r_gggd_b。
数据库表的命名采用如下规则:1)表名用模块名_开头,表名长度不能超过30个字符,表名中含有单词全部采用单数形式,单词首字母必须大写。
2)多个单词间用下划线(_)进行连接。
ORACLE数据库设计规范
1 命名原则约定ü? 是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定;ü? 命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割ü? 避免使用Oracle的保留字如LEVEL、关键字如TYPE(见Oracle保留字和关键字);ü? 各表之间相关列名尽量同名;ü? 除数据库名称长度为1-8个字符,其余为1-30个字符,Database link名称也不要超过30个字符;ü? 命名只能使用英文字母,数字和下划线;?表名规则如下:命名规则为xxx_yyy_TableName。
xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有), 最多五个字母构成,尽量用简称;TableName为表含义, 最多十个字母构成,尽量用简称?TableName规则如下:ü? 使用英文单词或词组作为表名,不得使用汉语拼音ü? 用名词和名词短语作表名ü? 不使用复数?正确的命名,例如:fiber_sys_userfiber_biz_order?存储过程规则如下:命名规则为xxx_yyy_StoredProcedureName。
xxx表示开发公司的名称,最多五个字母构成,尽量用简称;yyy表示子系统中的子模块的名称(可以没有), 最多五个字母构成,尽量用简称;StoredProcedureName为存储过程含义,最多十个字母构成,尽量用简称?StoredProcedureName规则如下:ü? 用动词或动词短语来命名,并带有宾语ü? 需要符合用Pascal 命名规则。
ü? 尽量谨慎地使用缩写ü? 尽量不要和关键字重合ü? 不要用任何名前缀 (例如 U,B)ü? StoredProce dureName内不使用下划线ü? 当操作依赖条件时,一般结尾使用 By+条件?存储过程正确的命名,例如:sys_InsertUsersys_SearchUserByUserIDsys_DeleteUserByUserID?视图规则如下:ü? 视图的命名采用xxx_yyy_ViewName_v。
数据库设计规范和指导
数据库设计规范和指导1数据库设计规范需考虑以下1.业务根据业务和范式设计合理的表结构2.容量根据业务考虑月增长量,年增长量等等,考虑是否进行水平分表.根据请求性能指标考虑是否进行垂直水平分表.3.性能过高的范式会影响性能,数据库库表结构直接影响查询语句,间接影响查询效率.4.范式一般情况遵循范式,特殊情况可以反范式,进行表之间的字段冗余.5.索引优化dba根据业务表查询进行索引优化2数据库以及账户名划分1. 尽量简洁明义,能够一眼看出来这个数据库是用来做什么的;2. 使用名词作为数据库名称,并且只用英文,不用中文拼音;3. 使用英文字母,全部小写,如果oracle可按个人习惯全部大写或者小写.4. 如果有多个单词,则使用下划线隔开.使用常见单词,避免使用长单词和生僻词;2.1读写账号分离读写库w_xxx 只读库r_xxx2.2开发环境读写库dev_w_xxx 只读库dev_r_xxx2.3测试环境读写库qa_w_xxx 只读库qa_r_xxx2.4生产模拟环境生产数据库从库(准实时同步),只读环境,不允许修改数据,不允许修改表结构;供线上问题查找,数据查询等读写库real_w_xxx 只读库real_r_xxx2.55.生产线上环境线上环境;开发人员不允许直接在线上环境进行数据库操作,如果需要操作必须找DBA进行操作并进行相应记录;读写库online_w_xxx 只读库online_r_xxx3表名字段名限制SQLSERVER 128个字符,临时表116个字符。
Oracle 30个字符。
(为什么要这么短?)MySQL 64个字符。
DB2 128个字符?4表名命名规范1. 尽量简洁明义,能够一眼看出来这个数据库是用来做什么的;2. 使用名词作为数据库名称,并且只用英文,不用中文拼音;3. 使用英文字母,全部小写,如果oracle可按个人习惯全部大写或者小写.4. 如果有多个单词,则使用下划线隔开.使用常见单词,避免使用长单词和生僻词;5. 表名以t_开头,视图v_,类似常用的还有过程sp_xxx/函数f_xxx/包pkg_xxx/序列seq_xxx.6. 具备统一前缀,对相关功能的表应当使用相同前缀,如acl_xxx,ord_xxx,ppc_xxx;其中前缀通常为这个表的模块或依赖主实体对象的名字,通常来讲表名为:业务_动作_类型,或是业务_类型;acl_xxx_idx7. 数据库编码utf8mb4, 表编码可选择utf8和utf8mb4,默认utf8.字段中如果包含非主流字(如非主流的qq昵称)需用utf8mb4编码.8. 表引擎取决于实际应用场景及当前数据库中的已经存在的存储引擎;日志及报表类表建议用myisam,与交易,审核,金额等事务相关的表用innodb引擎。
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.实例名与数据库文件路径都不变:拷到相同目录,直接启动。
数据库设计规范详细说明
数据库设计规范详细说明1.选择适当的数据库引擎在进行数据库设计之前,根据应用的需求选择适当的数据库引擎是非常重要的。
常见的数据库引擎有关系型数据库(如MySQL、Oracle)和非关系型数据库(如MongoDB、Redis)。
根据应用的特点和数据处理的要求,选择合适的数据库引擎是数据库设计的首要步骤。
2.确定数据表之间的关系在进行数据库设计时,根据实际需求确定数据表之间的关系是至关重要的。
主要有三种关系:一对一关系、一对多关系和多对多关系。
通过合理划分实体和识别实体之间的关系,能够建立正确的数据库表结构,提高数据的存储效率和查询效率。
3.使用适当的数据类型在设计数据库表时,需要根据数据的特点选择适当的数据类型。
例如,对于整数类型的数据,可以选择INT、BIGINT等;对于浮点数类型的数据,可以选择FLOAT、DOUBLE等。
正确选择数据类型有助于增加数据库的存储效率和查询效率,并避免数据冗余和损失。
4.设计合理的主键和索引主键是用于唯一标识数据表中每一条记录的字段,对于数据的唯一性和完整性非常重要。
在设计数据库表时,需要为每一个数据表设置适当的主键。
此外,为了提高查询效率,还需要为常用的查询字段设置索引,但是过多的索引也会影响数据库的性能,所以需要根据实际情况进行权衡。
5.规范命名规则在设计数据库表和字段时,需要遵循一套规范的命名规则。
命名应该具有一定的描述性,能够准确地表达出字段的含义和作用。
同时,应该避免使用特殊字符和关键字作为命名,以免引起语法错误和冲突。
6.定期备份和优化数据库数据库是应用中最重要的组成部分之一,所以定期备份数据库是非常重要的。
备份能够保证在数据丢失或数据库出现故障时能够恢复数据。
此外,还需要定期对数据库进行优化,包括对表的结构进行优化、对索引进行优化、对查询语句进行优化等,以提高数据库的性能和稳定性。
7.设计良好的数据表结构良好的数据表结构能够提高数据的存储效率和查询效率,并且易于维护和扩展。
oracle数据库安装及配置规范_v1.0
Oracle数据库系统安装及配置规范2015-10目录1. 数据库物理设计原则 (5)1.1. 数据库环境配置原则 (5)1.1.1. 操作系统环境 (5)1.1.2. 内存要求 (5)1.1.3. 交换区设计 (5)1.1.4. 其他 (6)1.2. 数据库设计原则 (6)1.2.1. 数据库SID (6)1.2.2. 数据库全局名 (6)1.2.3. 数据库类型选择 (6)1.2.4. 数据库连接类型选择 (7)1.2.5. 数据库SGA配置 (7)1.2.6. 数据库字符集选择 (8)1.2.7. 数据库其他参数配置 (9)1.2.8. 数据库控制文件配置 (9)1.2.9. 数据库日志文件配置 (10)1.2.10. 数据库回滚段配置 (10)1.2.11. 数据库临时段表空间配置 (11)1.2.12. 数据库系统表空间配置 (11)1.3. 数据库表空间设计原则 (11)1.3.1. 表空间大小定义原则 (11)1.3.2. 表空间扩展性设计原则 (12)1.4. 裸设备的使用 (12)2. 数据库逻辑设计原则 (13)2.1. 命名规范 (13)2.1.1. 表属性规范 (13)2.1.2. 索引 (14)2.1.3. 视图 (15)2.1.4. 实体化视图 (15)2.1.5. 存储过程 (15)2.1.6. 触发器 (15)2.1.7. 函数 (16)2.1.8. 数据包 (16)2.1.9. 序列 (16)2.1.10. 表空间 (16)2.1.11. 数据文件 (16)2.1.12. 普通变量 (16)2.1.13. 游标变量 (17)2.1.14. 记录型变量 (17)2.1.15. 表类型变量 (17)2.2. 命名 (17)2.2.1. 语言 (17)2.2.2. 大小写 (18)2.2.3. 单词分隔 (18)2.2.4. 保留字 (18)2.2.5. 命名长度 (18)2.2.6. 字段名称 (18)2.3. 数据类型 (18)2.3.1. 字符型 (18)2.3.2. 数字型 (19)2.3.3. 日期和时间 (19)2.3.4. 大字段 (19)2.3.5. 唯一键 (19)2.4. 设计 (20)2.4.1. 范式 (20)2.4.2. 表设计 (20)2.4.3. 索引设计 (23)2.4.4. 视图设计 (24)2.4.5. 包设计 (24)2.4.6. 安全性设计 (25)2.5. SQL编写 (26)2.5.1. 字符类型数据 (26)2.5.2. 复杂sql (27)2.5.3. 高效性 (27)2.5.4. 健壮性 (28)2.5.5. 安全性 (29)2.5.6. 完整性 (30)3. 备份恢复设计原则 (30)3.1. 数据库exp/imp备份恢复 (30)3.1.1. 数据库级备份原则 (30)3.1.2. 用户级备份原则 (30)3.1.3. 表级备份原则 (31)3.2. 数据库冷备份原则 (31)3.3. Rman备份恢复原则 (31)3.3.1. Catalog数据库 (31)3.3.2. Archive Log (33)3.3.3. 全备份策略 (33)3.3.4. 增量备份策略 (33)3.3.5. 恢复原则 (33)3.4. 备用数据库原则 (34)3.5. 一些小经验 (34)3.6. 系统调优知识 (35)3.6.1. 生成状态报表(statspack的使用) (35)3.6.3. 内存调整 (37)3.6.4. 排序的优化 (40)3.6.5. 统计信息 (41)4. 设计工具 (42)1.数据库物理设计原则1.1.数据库环境配置原则1.1.1.操作系统环境对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle10gRAC 的集群数据库的方法,集群节点数范围在2—64个。
Oracle数据库规划设计和运行维护方案
O r a c l e数据库规划设计和运行维护方案(V1.0)目录1.前言1.1.编写目的..........................................................1.2.方案说明..........................................................1.3.预期读者..........................................................2.数据库部署模式2.1.单机模式..........................................................2.2.双机热备模式(HA模式)...........................................2.3.集群模式(RAC)...................................................2.4.主从模式(DataGuard).............................................2.5.混合模式(DataGrard+RAC).........................................2.6.数据库运行模式选择................................................3.系统特点和数据库类型3.1.业务系统的特点....................................................OLTP特点.................................................OLAP特点.................................................3.2.数据库的规模......................................................3.3.数据库版本建议....................................................4.数据库运行环境规划4.1.主机规划..........................................................4.2.网络规划..........................................................4.3.存储规划..........................................................5.数据库安装部署规划5.1.软件安装路径......................................................5.2.表空间设计........................................................业务数据量估算............................................表空间使用规则............................................表空间的概念和分配原则....................................表空间的参数配置..........................................Undo/temp表空间的估算....................................表的参数设置..............................................索引的使用原则............................................5.3.文件设计..........................................................RAC配置文件..............................................参数文件..................................................控制文件..................................................重做日志文件..............................................6.数据库应用规划6.1.数据库用户设计....................................................用户权限规划..............................................用户安全实现..............................................用户类型及角色命名规范....................................6.2.数据库分区........................................................数据库分区介绍............................................逻辑分割..................................................物理分割..................................................数据分区的优点............................................数据分区的不足............................................Oracle分区技术...........................................分区使用建议..............................................分区索引..................................................6.3.数据库实例配置....................................................6.4.数据库参数设置....................................................必须修改的初始化参数......................................建议修改的初始化参数......................................不可修改的初始化参数......................................建议不可修改的初始化参数..................................与并行有关的参数..........................................6.5.数据库连接服务....................................................专用服务器连接............................................共享服务器连接............................................连接服务建议..............................................6.6.数据库安全建议....................................................6.7.数据库备份和恢复..................................................RMAN备份.................................................EXP/IMP备份..............................................存储级备份................................................数据库恢复................................................6.8.数据库网络配置....................................................监听器的使用配置原则......................................TNSNAMES的使用配置原则...................................RAC环境下TNSNAMES的配置.................................7.业务系统开发建议7.1.数据库模型设计规范................................................命名规则..................................................数据库对象................................................7.2.PLSQL开发规则....................................................总体开发原则..............................................7.3.SQL语句编写规则..................................................查询语句的使用原则........................................DML语句的调整原则........................................8.数据库体系结构8.1.整体结构..........................................................8.2.内存结构..........................................................系统全局区(SGA).........................................程序全局区(PGA).........................................后台进程..................................................8.3.存储结构..........................................................物理结构..................................................逻辑结构..................................................9.数据库基本管理9.1.参数文件管理......................................................9.2.表空间管理........................................................用户表空间管理............................................临时表空间管理............................................回滚段表空间管理..........................................9.3.重做日志文件管理..................................................增加重做日志文件组........................................添加重做日志文件组成员....................................改变重做日志文件组成员....................................删除重做日志文件组成员....................................删除重做日志文件组........................................重做日志切换..............................................重做日志清理..............................................重做日志切换次数查询......................................9.4.归档模式设置......................................................单实例数据库设置归档模式..................................RAC数据库设置归档模式....................................归档路径设置..............................................9.5.控制文件重建......................................................9.6.内存参数管理......................................................Oracle内存管理发展阶段...................................自动内存管理AMM..........................................自动共享内存管理ASMM.....................................自动PGA管理..............................................9.7.其它管理内容......................................................查看数据库版本............................................数据库字符集..............................................创建密码文件..............................................关闭数据库审计功能........................................账号管理..................................................10.数据库集群(RAC)管理10.1.RAC状态检查......................................................检查守护进程..............................................检查资源状态..............................................10.2.RAC启动与关闭....................................................10.3.管理OCR..........................................................OCR盘状态查看............................................OCR备份与恢复............................................查看OCR内容..............................................指定OCR盘................................................增加OCR盘................................................删除OCR盘................................................10.4.管理VOTING DISK..................................................检查Voting Disl盘........................................VOTING DISK备份与恢复....................................添加VOTING DISK盘........................................删除VOTING DISK盘........................................10.5.CSS管理..........................................................10.6.SRVCTL管理工具...................................................管理实例..................................................管理监听程序..............................................管理ASM..................................................管理service..............................................10.7.修改RAC的IP及VIP...............................................修改外网IP和心跳IP......................................修改VIP..................................................查看与删除IP.............................................10.8.管理ASM..........................................................管理DiskGroup............................................ASM兼容性管理............................................ASM中添加disk的方法.....................................ASMCMD管理命令介绍.......................................ASM常用视图..............................................11.数据库备份11.1.备份概念说明......................................................脱机备份..................................................联机备份..................................................RMAN备份.................................................11.2.备份策略规划......................................................11.3.RMAN备份和恢复案例...............................................归档模式下的完全恢复......................................归档模式下的不完全恢复....................................12.数据库运维管理12.1.运维职责..........................................................12.2.运维要求..........................................................12.3.技能要求..........................................................12.4.运维内容..........................................................检查数据库运行情况........................................检查操作系统和数据库日志文件..............................检查Oracle对象状态.......................................检查数据库相关资源的使用..................................检查数据库备份............................................检查数据库的性能..........................................数据库安全性检查.......................................... 前言编写目的随着以使用Oracle数据库的应用系统不断增加,为了加强应用系统在规划、开发、实施、维护等环节工作的规范化,特编写本文档,力求对实际的设计、实施工作起到规范和指导作用。
oracle课程设计
针对Oracle课程的设计,以下是一个基本的框架和主题,供您参考:1. 数据库基础知识-数据库管理系统概述-关系数据库模型- SQL语言基础-数据库设计原则和规范2. Oracle数据库介绍- Oracle数据库的历史和版本- Oracle体系结构和组件- Oracle数据库安装和配置3. 数据库对象管理-表、视图和索引的创建与管理-数据类型和约束-数据库连接与事务管理-触发器和存储过程4. SQL高级查询-聚合函数和分组查询-多表查询和连接-子查询和集合运算-查询优化与性能调优5. 数据库安全与权限管理-用户和角色管理-权限控制和访问管理-数据加密与脱敏-审计和安全策略6. 数据库备份与恢复-数据库备份和恢复策略-冷备和热备备份-日志文件和闪回技术-数据库恢复和故障处理7. 数据库性能优化-查询优化和执行计划分析-索引和分区设计-统计信息和自动调优-调优工具和技术8. 高可用性与容灾-数据库的高可用架构-故障转移和故障恢复-数据库复制和数据同步- RAC和数据保护9. 数据库云服务- Oracle数据库云服务介绍-数据库部署和配置-迁移和扩展数据库-自动化管理和监控10. 实际案例和项目-设计和实施一个完整的数据库应用-数据库设计和优化案例分析-实验和实践项目以上只是一个大致的课程设计框架,您可以根据实际情况进行调整和拓展。
您还可以根据目标受众、课程时长和深度等因素,对每个主题进行详细的内容安排和实践项目。
同时,结合实际操作和案例分析,让学生能够更好地理解和掌握Oracle数据库的使用和管理技能。
数据库设计参考标准
数据库设计参考标准数据库设计参考标准文档控制文档属性文档修订历史[1]数据库设计参考标准一、概述为明确公司项目中数据库逻辑设计及物理设计的内容和流程,特制定本规范,供数据库设计、开发及维护人员参考。
数据库设计方法目前可分为四类:直观设计法、规范设计法、计算机辅助设计法和自动化设计法。
新奥尔良法是目前公认的比较完整和权威的一种规范设计法。
新奥尔良法将数据库设计分成需求分析(分析用户需求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。
目前,常用的规范设计方法大多起源于新奥尔良法,并在设计的每一阶段采用一些辅助方法来具体实现.以下是两种常用的规范设计方法:1. 基于E—R模型的数据库设计方法。
该方法是由P.P。
S。
chen于1976年提出的数据库设计方法,其基本思想是在需求分析的基础上,用E-R(实体—联系)图构造一个反映现实世界实体之间联系的企业模式,然后再将此企业模式转换成基于某一特定的DBMS的概念模式。
2. 基于3NF的数据库设计方法。
该方法是由S·Atre提出的结构化设计方法,其基本思想是在需求分析的基础上,确定数据库模式中的全部属性和属性间的依赖关系,将它们组织在一个单一的关系模式中,然后再分析模式中不符合3NF的约束条件,将其进行投影分解,规范成若干个3NF关系模式的集合。
其具体设计步骤分为五个阶段:(1)设计企业模式,利用规范化得到的3NF关系模式画出企业模式;(2)设计数据库的概念模式,把企业模式转换成DBMS所能接受的概念模式,并根据概念模式导出各个应用的外模式;(3)设计数据库的物理模式(存储模式);(4)对物理模式进行评价;(5)实现数据库。
备注:数据库设计规范、数据编程规范、数据库物理设计规范中以Oracle 数据库为例,其它结构的数据库类似.二、数据库设计流程[2]数据库设计参考标准以规范性设计为例,把数据库设计流程分为以下几个阶段.(一) 需求分析阶段1. 需求收集和分析,得到数据字典描述的数据需求和数据流图描述的处理需求。
oracle数据库标准
oracle数据库标准Oracle数据库标准。
Oracle数据库是全球领先的企业级关系数据库管理系统,被广泛应用于各种规模的企业和组织中。
作为数据库管理员或开发人员,了解和遵循Oracle数据库的标准是至关重要的。
本文将介绍Oracle数据库的标准,并对其重要性进行探讨。
首先,Oracle数据库标准涵盖了数据库设计、数据存储、查询优化、安全性和可靠性等方面。
在数据库设计阶段,应该遵循Oracle的设计规范,包括表的范式化、索引的创建和外键约束的应用。
此外,数据存储方面需要考虑到表空间的管理、数据文件的组织和存储结构的优化。
在查询优化方面,需要根据实际业务需求设计合适的查询语句,并利用索引、分区等技术提升查询性能。
同时,数据库的安全性和可靠性也是Oracle数据库标准中不可或缺的部分,包括用户权限管理、数据备份和恢复策略等。
其次,遵循Oracle数据库标准的重要性不言而喻。
首先,遵循标准可以提高数据库系统的性能和稳定性。
通过合理的设计和优化,可以降低数据库的响应时间,提升系统的吞吐量,从而提高业务处理效率。
其次,遵循标准可以降低系统维护成本。
规范的数据库设计和管理可以减少系统故障和数据损坏的风险,降低维护成本和风险。
最后,遵循标准可以提升开发人员的工作效率。
规范的数据库结构和查询优化可以减少开发人员的工作量,提升开发效率,缩短系统上线时间。
在实际应用中,我们应该如何遵循Oracle数据库标准呢?首先,需要充分理解Oracle数据库的设计原则和最佳实践,包括官方文档、技术博客和培训课程等。
其次,需要结合实际业务需求进行数据库设计和优化,避免盲目套用标准,应用灵活性和创新性。
同时,需要建立完善的数据库管理和监控体系,及时发现和解决数据库性能和安全问题。
最后,需要不断学习和更新数据库技术知识,跟随Oracle数据库的发展和变化,不断优化和改进数据库系统。
综上所述,Oracle数据库标准是数据库设计和管理的重要指导原则,遵循标准可以提高数据库系统的性能和稳定性,降低维护成本,提升开发效率。
结构设计通用规范
结构设计通用规范
1、数据库设计:
(1)数据库选择:根据业务需求,合理选择合适的关系数据库,如MySQL,Oracle,SQL Server等;
(2)数据表设计:每个表的结构要设计严谨,字段名要有完整和明确的表示意义;
当遇到一对多关系,就要引入外键来进行关联;
(3)表、字段说明:每张表以及表中每个字段,均要有清晰的说明文档,表示意义、字段类型、字符长度、字段注释、空值是否允许等信息;
(4)索引设计:为了提高查询效率,应该合理的设计表的索引;
2、接口设计:
(1)参数设计:设计接口的参数,参数应当精确明了,并要有详细的注释,完成参
数的验证;
(2)数据传输:采用准确的数据格式来传输,常用的数据格式有JSON、XML等;
(3)接口文档:接口文档应当精细,要详细说明接口的功能、参数、返回值等信息;
(4)接口安全:设计接口时,要考虑安全因素,如参数加密处理,采取多重安全技
术提高接口的安全性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE设计规范1、数据库模型设计方法规范1.1、数据建模原则性规范1.2、实体型之间关系认定规范1.3、范式化1NF的规范1.4、范式化2NF的规范1.5、范式化3NF的规范1.6、反范式化冗余字段使用规范1.7、数据库对象命名基本规范第一:长度规范:凡是需要命名的对象其标识符均不能超过30个字符,也即:Oracle中的表名、字段名,函数名,过程名,触发器名,序列名,视图名的长度均不能超过30个字符;第二:构成规范:数据库各种名称必须以字母开头,但严禁使用SYS开头;名称只能含有字母,数字和下划线“_”三类字符,“_”用于间隔名称中的各语义字段;不要使用DUAL作表名;第三:大小写规范:构成Oracle数据库中的各种名称(表明,字段名,过程名,视图名等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何名称添加双引号“”来设定字符的大小写形式,只要不采用“”限制,Oracle自动会将各名称转化成大写。
2、表的设计规范2.1、表的主键规范遵循如下三点原则:第一:有无原则:除临时表和外部表,以及流水表,日志表外,其他表都要建立主键;第二:构成原则:主键不能使用含有实际语义的列,应该增加一个xx_id字段做主键,类型为number,取值来自序列sequence;第三:创建原则:对于500万以上的表,请数据组参与设计实施,采用先建唯一索引再添加主键约束的方式来创建主键;2.2、表的主键列规范对于实体表,主键就是一列,就是没有任何语义的自增的NUMBER列,对于关系表,主键就是相关实体表主键形成的复合主键,是多列;2.3、使用注释的规范2.4、一个表所含字段总长度的规范2.5、一个表所含字段访问频繁度的规范2.6、一个表所含数据量的规范2.7、大对象字段(BLOB,CLOB)使用规范2.8、增量同步表的设计规范字典信息表和需要使用增量同步的表必须增加如下属性:2.9、表的表空间使用规范2.10、索引的表空间使用规范3、设计分区表的规范3.1、RANGE分区的规范3.2、LIST分区的规范3.3、HASH分区的规范3.4、RANGE-LIST分区的规范3.5、RANGE-HASH分区的规范4、索引的设计规范4.1、主键索引的规范4.2、唯一约束索引的规范4.3、外键列索引的规范4.4、复合索引的规范4.5、函数索引的规范4.6、位图索引的规范4.7、反向索引的规范4.8、分区索引的规范4.9、索引重建的规范5、SQL访问规范5.1、避免SELECT *程序中不能出现SELECT*,即使是选择全部选择项,也需要全部指明,这主要出于如下原因:第一:使用*相对比较慢,因为Oracle 需要遍历更多的内部字典信息;第二:为避免以后相关表增加字段造成程序错误,比如INSERT INTO SELECT和SELECT INTO语句会报错;5.2、避免笛卡尔运算多表关联查询不能出现笛卡尔积,如果在报表中为集聚表(或称中间表)生成多个维度组成的复合主键需要使用迪克尔积的,必须请数据组确认性能。
5.3、使用CTAS备份在进行DML操作(INSERT,UPDATE,DELETE)之前,必须对数据进行备份,使用如下语句:方法一:表数据全部备份:CREATETABLE TAB_NAME_BAK AS SELECT * FROM TAB_NAME;方法二:部分备份:对大表仅备份将要修改的数据:CREATE TABLE TAB_NAME_BAKAS SELECT * FROM TAB_NAME WHERE [选择出被操作数据的条件];5.4、INSERT时需写全列名代码中INSERT语句必须写出全部列名,以保证表增加字段后语句执行不受影响:如:INSERT INTO TAB(COL1,COL2)VALUES(COL1_VAL,COL2_VAL);再如:INSERT INTO TAB(COL1,COL2)SELECT COL1_VAL,COL2_VAL FROM TAB_BB;不能将COL1,COL2和COL1_VAL,COL2_VAL省略;5.5、大数据量的DMLDML操作涉及到大数据量时,请分解为多次执行;对于UPDATE和DELETE每次涉及数据量在1万条左右,并且每次执行完就提交;对于INSERT INTO SELECT如果采用提示(/*+ append parallel */)可以处理百万级别的数据量。
5.6、完成事务及时commit对于一个完成了的事务,请用commit显示提交,这是避免锁争用的锁等待的需要,特别是对DML操作频繁的表;5.7、java的变量绑定使用“变量绑定”来处理一条SQL带不同常量多次执行的情况,动态绑定可以大大优化SQL的执行效率,还可以优化Oracle的内存使用。
在Java中,结合使用setXXX系列方法,可以为不同数据类型的绑定变量进行赋值,从而大大优化了SQL语句的性能。
JAVA情况下的动态绑定示例如下:String v_id = 'xxxxx';String v_sql = 'select name from tb_a where id = ? ';stmt = con.prepareStatement( v_sql );stmt.setString(1, v_id ); //为绑定变量赋值stmt.executeQuery();5.8、perl的变量绑定使用“变量绑定”来处理一条SQL带不同常量多次执行的情况,动态绑定可以大大优化SQL的执行效率,还可以优化Oracle的内存使用。
PERL绑定变量实例如下:$modsql = qq{insert into tmp_tai_rtkpi_mark(tab_name,kpi_id,ne_id,timepoint,cacu_time,start_time,stop_time,down_base,up_base,ajast_flag,inuse_flag,cal_data)values(?,?,?,?,?,?,?,?,?,?,?,?)};if ( !$dbh->prepare($modsql) ) {writeToLog( "start SQL prepare Error!/n" . DBI::errstr . "/n/n" ); }$sth_msg_in_DB = $dbh->prepare($modsql)|| die( "start SQL prepare Error!/n" . $DBI::errstr . "/n" );$sth_msg_in_DB->bind_param( 1, $kpiid_tab{$kpi_id} );$sth_msg_in_DB->bind_param( 2, $kpi_id );$sth_msg_in_DB->bind_param( 3, -1 );$sth_msg_in_DB->bind_param( 4, -1 );$sth_msg_in_DB->bind_param( 5, $current_time );$sth_msg_in_DB->bind_param( 6, $start_time );$sth_msg_in_DB->bind_param( 7, $end_time );$sth_msg_in_DB->bind_param( 8, $temp_min );$sth_msg_in_DB->bind_param( 9, $temp_max );$sth_msg_in_DB->bind_param( 10, 0 );$sth_msg_in_DB->bind_param( 11, 1 );$sth_msg_in_DB->bind_param( 12, -1 );$sth_msg_in_DB->execute() || die( "SQL Execute Error!/n" . $DBI::errstr . "/n" );5.9、避免重复访问:使用group避免重复访问(一):同源单组单查询:如下语句要避免:SELECT CLASS,sum(COL) FROM TAB_TEST WHERE CLASS=’A’ UNION ALLSELECT CLASS,sum(COL) FROM TAB_TEST WHERE CLASS=’B’ UNION ALLSELECT CLASS,sum(COL) FROM TAB_TEST WHERE CLASS=’C’改写成:SELECT CLASS,sum(COL) FROM TAB_TEST GROUP BY CLASS5.10、避免重复访问:竖向显示变横向现实避免重复访问(二):竖向显示变横向显示问题语句:SELECTA.C1AC1,A.C2AC2,A.C3AC3,B.C1BC1,B.C2BC2,B.C3BC3,C.C1CC1,C.C2CC2,C.C3CC3FROM(SELECT'123'X,'SYNONYM'C1, sum(2)C2,count(1)C3FROMTAB WHERE TABTYPE= 'SYNONYM')A,(SELECT'123'X,'TABLE'C1, sum(2)C2,count(1)C3FROMTAB WHERE TABTYPE= 'TABLE')B,(SELECT'123'X,'VIEW'C1, sum(2)C2,count(1)C3FROMTAB WHERE TABTYPE= 'VIEW')C;正确使用形式如下:SELECTMAX(DECODE(TABTYPE,'SYNONYM','SYNONYM',NULL)) AC1,MAX(DECODE(TABTYPE,'SYNONYM',sum(2),0))AC2,MAX(DECODE(TABTYPE,'SYNONYM',count(1),0))AC3,MAX(DECODE(TABTYPE,'TABLE','TABLE',NULL)) BC1,MAX(DECODE(TABTYPE,'TABLE',sum(2),0))BC2,MAX(DECODE(TABTYPE,'TABLE',count(1),0))BC3,MAX(DECODE(TABTYPE,'VIEW','VIEW',NULL)) CC1,MAX(DECODE(TABTYPE,'VIEW',sum(2),0))CC2,MAX(DECODE(TABTYPE,'VIEW',count(1),0))CC3FROMTABWHERETABTYPE IN('TABLE','SYNONYM','VIEW')GROUPBY TABTYPE;5.11、避免重复访问:用表更新表避免重复访问(三):一个表同时更新另一个表的多个字段问题SQL:使用TB_SOURCE表更新表TB_TARGET的多个字段UPDATE TB_TARGET A SETA.COL1 = (selectB.COL1 from TB_SOURCE B where B.id = A.id) ,A.COL2 = (selectB.COL2 from TB_SOURCE B where B.id = A.id) ,A.COL3 = (selectB.COL3 from TB_SOURCE B where B.id = A.id) ,A.COL4 = (selectB.COL4 from TB_SOURCE B where B.id = A.id)WHERE A.id IN ( select B.id from TB_SOURCE B)正确使用形式如下:UPDATE TB_TARGET ASET (COL1, A.COL2, A.COL3, A.COL4 )=(SELECT B.COL1, B.COL2, B.COL3, B.COL4 FROM TB_SOURCE B WHERE B.id = A.id)WHERE EXISTS (select 1 from TB_SOURCE B where B.id = A.id)5.12、数据库连接及时关闭程序中必须显示关闭数据库连接,不仅正常执行完后需显示关闭,而且在异常处理块(例如java的exception段)也要显示关闭。