数据库设计与优化Word下载.docx
《数据库设计与优化Word下载.docx》由会员分享,可在线阅读,更多相关《数据库设计与优化Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
(1)冗余度大 一艘轮船有N个部件,就有N次重复船号、船名、马力的数据;
(2)插入异常 一种部件,如果在某一阶段没有轮船用到,其对应的信息就无法插入,使数据库在功能上产生了不正常的现象,同时也给用户带来极大的不便;
(3)删除异常 一种部件,若只有一艘轮船用到,则删除他的信息,有关他选用的部件信息同时也删除了,从而丢失了应用的数据。
从上面的分析可知,轮船关系不是一个“好”的数据库模式。
一个“好”的模式应当避免发生插入异规范化理论认为,关系中的各属性是相互关联的,他们互相依赖、互相制约,构成一个结构严谨的整体。
因此,在关系设计中,必须从语义中摸清这些关联,特别是依赖关系,只能把那些相互关联密切的属性拼凑在一起。
构造一个“好”的数据库模式,必须使他的关系模式的属性之间满足某种内在的语义条件,而这种联系又可对关系的不同要求分为若干等级,这就是关系规范化。
以函数依赖为基础的关系模式的规范化等级主要有5种,即第1范式(1NF),第2范式(2NF),第3范式(3NF),BC范式(BCNF)和第4范式(4NF),满足这些范式条件的关系模式可在不同程度上避免冗余、插入和更新异常问题。
1.2 规范化理论的应用 为了消除关系模式在操作上的异常问题,优化数据模式,可进行规范化处理。
具体做法是:
确定数据依赖,把每个关系模式的各个属性按数据分析阶段所得到的语义写出其数据依赖,同时,考察不同的关系模式属性之间是否还存在某种数据依赖,得到一组数据依赖及诸关系的全部数据依赖。
按照数据依赖的理论,逐一分析这组关系模式,确定他们属于第几范式,进行模式分解。
例如,对上述轮船关系进行分解,提高范式等级,可构成一个轮船信息的数据库,他的数据模式由4个关系组成:
轮船(船号、船名、马力);
使用(船号、部件号、用量);
部件(部件号、部件名、型号);
型重(型号、重量)。
这4个关系属于3NF,至此,是一个比较“好”的数据库了。
2 改善数据库性能 关系数据库的性能的好坏,主要体现在查询的速度上,他是数据库应用中的一个关键问题,是必须在数据库的设计中加以认真考虑的问题,特别是对那些响应时间要求较苛刻的应用,应予以特别注意。
可从以下几个方面提高查询速度,改善数据库性能,从而达到数据库设计的优化目的。
2.1 减少连接操作 连接操作对数据库的查询速度有着重要的影响,参与联接的关系越多,查询越慢。
因此,对一些常用的、性能要求较高的数据库查询,最好是一元查询,这与规范化的要求相矛盾。
有时为了保证性能,把规范化的关系再合并起来,称之为逆规范化。
当然,这样会引起更新异常,破坏数据库完整性,必须采取相应的措施来保证数据库的完整性,从而也会增加系统的开销。
因此,决定做逆规范化时,一定要权衡利弊,仔细分析应用的数据存取需求和实际的系统性能。
2.2 减小关系大小及数据量 被查询关系的大小对查询速度影响很大。
为了提高查询速度,可以采用水平分割或垂直分割等方法把一个关系分成几个关系,使每个关系的数据量减少。
例如,对于有关学生的关系,既可以把全校集中在一个关系中,也可用水平分割的方法,分系建立关系,从而减少了每个关系的元组数。
前者对全校范围内的查询较方便,后者则可以显著提高对系的查询速度;
也可采用垂直分割的方法,把常用数据和不常用的数据分开,以提高常用数据的查询速度。
例如:
人事档案中,属性很多,有些需经常查询,有些则很少查询。
如果放在一起,则关系数据量很大,影响查询速度。
分开可提高常用数据的查询速度。
垂直分割提高了一些操作的速度,但也可能使某些操作不得不执行连接操作,从而降低了效率。
因此,决定是否进行垂直分割取决于是否垂直分割后数据库上的所有操作的总效率得到了提高。
同时,垂直分割还要确保无损连接和保持函数依赖。
3 节省存储空间 尽管随着硬件技术的发展,提供给用户使用的存储空间越来越大,但毕竟是有限的,而数据库,尤其是一型的数据库,需要占用的存储空间比较大。
因此,节省存储空间仍是数据库设计中要考虑的问题。
为此,在数据库优化设计中,可采取以下措施:
3.1 缩小每个属性占用的空间 一般用编码表示属性,用缩写名代替全称,可以节省存储空间,但用户看起来就不那么直观了,须根据实际条件斟酌决定。
3.2 采用假属性 在有些关系中,某些数据会多次出现,采用假属性可以减少重复数据占用的存储空间。
在职工关系中,职工的经济状况这一属性,通常由职工号决定。
一个大型企业的职工人数较多。
如每一个职工逐一填写经济状况,就要占用较多的空间,而其经济状况有相同的和相似的情况,也即,经济状况这一属性不同值比较少,而在关系中可能有较多的重复。
为此,可把经济状况分为几种类型,用类型代替原来的经济状况(这类经济状况的类型就是假属性),另外建立一个较小的关系来描述每种经济状况的具体内容。
这样,可大大减小数据占用存储空间的用量。
4 结 语
数据库设计不同于数学问题,他是一项综合性工作,受到各种各样因素的制约,有些要求往往是彼此矛盾的。
因此,设计结果常常是有得有失。
因此,设计者必须根据实际情况,综合应用上述技术,在基本合理的总体设计的基础上,做一些优化调整,力求最大限度地满足用户各种各样的要求,实现数据库的优化设计。
1.3 模式分解的2条原则 关系规范化是可以解决关系操作的问题,但进行模式分解时由于受到数据间的相互约束,因此分解不可能是随意的。
在规范化化的关系分解过程中,不仅要着眼于提高关系的范式等级,而且应遵守以下2条原则:
(1)无损分解原则 无损分解就是在关系分解过程中,既不丢失数据也不增加数据,同时还能保持原有的函数依赖。
一个关系分解为多个关系,原来的数据就存储到多个关系中,起码要求分解后不能丢失原来的信息。
(2)相互独立原则 所谓独立是指分解后的新关系之间相互独立,对一个关系内容的修改不应该影响到另一关系。
此外还应注意到,关系分解必须从实际出发,并不是范式等级越高,分解得越细就越好。
若把关系分解得过于琐碎,虽然对于消除数据冗余和更新异常等有好处,但在进行检索操作时往往又需要进行链接,从而使检索效率大大降低。
另外,在数据操作中经常是检索操作多于更新操作,其结果很可能是分解带来的好处与检索的效率降低相比,得不偿失。
正因为如此,一般规范化只需达到3NF就可以了。
PLSQL开发笔记和小结
关键字:
plsql开发笔记和小结
*****************************************
PLSQL基本结构
基本数据类型变量
1.基本数据类型
Number数字型
Int整数型
Pls_integer整数型,产生溢出时出现错误
Binary_integer整数型,表示带符号的整数
Char定长字符型,最大255个字符
Varchar2变长字符型,最大2000个字符
Long变长字符型,最长2GB
Date日期型
Boolean布尔型(TRUE、FALSE、NULL三者取一)
在PL/SQL中使用的数据类型和Oracle数据库中使用的数据类型,有的含义是完全一致的,有的是有不同的含义的。
2.基本数据类型变量的定义方法
变量名类型标识符[notnull]:
=值;
declare
agenumber(3):
=26;
--长度为3,初始值为26
begin
commit;
end;
其中,定义常量的语法格式:
常量名constant类型标识符[notnull]:
piconstantnumber(9):
=3.1415926;
--为pi的数字型常量,长度为9,初始值为3.1415926
表达式
变量、常量经常需要组成各种表达式来进行运算,下面介绍在PL/SQL中常见表达式的运算规则。
1.数值表达式
PL/SQL程序中的数值表达式是由数值型常数、变量、函数和算术运算符组成的,可以使用的算术运算符包括+(加法)、-(减法)、*(乘法)、/(除法
)和**(乘方)等。
命令窗口中执行下列PL/SQL程序,该程序定义了名为result的整数型变量,计算的是10+3*4-20+5**2的值,理论结果应该是27。
―――――――――――――――――――――――――――――――――――――
setserveroutputon
Declare
resultinteger;
result:
=10+3*4-20+5**2;
dbms_output.put_line('
运算结果是:
'
||to_char(result));
dbms_output.put_line函数输出只能是字符串,因此利用to_char函数将数值型结果转换为字符型。
2.字符表达式
字符表达式由字符型常数、变量、函数和字符运算符组成,唯一可以使用的字符运算符就是连接运算符“||”。
3.关系表达式
关系表达式由字符表达式或数值表达式与关系运算符组成,可以使用的关系运算符包括以下9种。
<
小于
>
大于
=等于(不是赋值运算符:
=)
like类似于
in在……之中
=小于等于
=大于等于
!
=不等于或<
>
between在……之间
关系型表达式运算符两边的表达式的数据类型必须一致。
4.逻辑表达式
逻辑表达式由逻辑常数、变量、函数和逻辑运算符组成,常见的逻辑运算符包括以下3种。
NOT:
逻辑非
OR:
逻辑或
AND:
逻辑与
运算的优先次序为NOT、AND和OR。
PLSQL函数
PL/SQL程序中提供