数据库设计和优化.ppt_第1页
数据库设计和优化.ppt_第2页
数据库设计和优化.ppt_第3页
数据库设计和优化.ppt_第4页
数据库设计和优化.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库设计和优化,2001年6月 中科院软件所软件工程技术中心 金蓓弘,对象模型和范式,范式是关系数据库设计的数学原则,它与使用的开发技术如面向对象设计、实体关系设计技术无关 范式提供了组织数据的方法 按面向对象方法设计出来的对象模型(逻辑数据库模型)也是一种组织数据的方法,应该能自然地满足范式的要求,也不需要太多的非正规化,对象建模,表示 一个班最多只允许有20个学生 一个学校篮球队必须有至少8名,至多10名球员 ER图不擅长表示基数关系 实现:用触发器,手工编写业务规则。,逻辑数据库设计,用关系数据库实现UML模型 正规化设计 非正规化设计 常用的非正规化技术,用关系数据库实现UML模型,

2、映射结构 映射功能,映射结构之基本步骤,类映射成表 属性映射成列 有时,为生成型的标识符新增一列 用序列码做唯一标识符 映射关联关系 映射聚合和组合 映射继承关系,映射关联关系:多对多,推荐的实现方法,映射关联关系:一对多,推荐的实现方法,映射关联关系:一对零/一,推荐的实现方法,映射关联关系:一对零/一,另一种方法,资金清算系统中的例子,记帐凭证之间有1对0/1的关系,现设计成两个表,其中冲正记帐凭证关联表记录两个记帐凭证之间的关系(主键1,主键2)。,不好的映射(1),不好的映射(2),不好的映射(3),映射聚合和组合,聚合(aggregation)分成聚合(aggregate)和组合(c

3、omposite) Oracle8用聚簇(包括索引组织表),嵌套表,VARRAY实现,资金清算系统中的例子,映射继承关系:推荐的方法,映射继承关系:其他方法一,映射继承关系:其他方法二,映射继承关系:其他方法三,映射功能之基本步骤,将在对象模型上的遍历表达式直接映射成SQL语句 在Oracle中有四种实现方式 构造方式 成员方式 排序方式 映射方式,成员方式,成员方式是用户定义的存取路径,指明对一个指定的对象类的数据存取和操纵方式 用PL/SQL过程或函数实现 create or replace type person_t as object (person_ID number, last_n

4、ame varchar2(50), first_name varchar2(50), birth_date date, member function age return number) create or replace type body person_t is member function age return number is begin return (sysdate - birth_date) /365; end; end;,排序/映射方法,用于比较或排序同一对象类型的数据,即在对象类型中定义排序或映射方法支持对象的不等值比较。,为对象类写方法(method)的方法: PL/

5、SQL,C/C+ PL/SQL写的method在oracle服务器的地址空间运行,C/C+写的method在服务器的地址空间外运行 对计算量不大的method,用PL/SQL性能价格比最好。对计算量大的method,用C/C+,逻辑数据库设计,用关系数据库实现UML模型 正规化设计 非正规化设计 常用的非正规化技术,正规化(Normalization)设计,范式 每种范式都包含上一个范式的规则,例如,满足3NF的关系一定满足2NF。 第一范式 一行和一列位置包含的值不能超过一个(不包含任何多值属性) 第二范式 每个非键字段必须依赖整个主键,但不是复合主键的一部分(如果只依赖主键的一部分来确定信

6、息,就违反了第二范式) 第三范式 一个非键字段不能依赖另一个非键字段(即没有属性依赖于非键属性;数据库中不能存在传递依赖关系),违反第一范式的例子,Number Date Item1 Qty1 Price1 Item2 Qty2 Price2 1001 1/1/2001 Ball 3 4.00 Bat 3 5.00 1002 2/2/2001 Ball 2 4.00 1003 3/3/2001 Glove 2 2.00 Ball 2 4.00,这种表结构只允许定购两种货物。 增定一种货物,要修改表结构。 查询某种货物被定购的次数,要查找多列。,Third Normal Form (3NF),A

7、 relation R is in 3NF if : whenever A1A2An-B is a nontrival dependency, either A1,A2,An is a superkey, or B is a member of some key. 如果一个表有多个键,不要求所有的键都在A1,A2,An中,只要一个即可。 Boyce-Codd Normal Form: 依赖关系仅存在于每个属性和整个主键之间。 用Boyce-Codd范式作为标准评价依赖性,模式分解方法:例1,初始模式:title, year, length, filmType, studioName, star

8、Name 分析: title, year, starName是主键 下列函数依赖不满足3NF条件 title, year- length, filmType, studioName, 分解成: title, year, starName, title, year, length, filmType, studioName,模式分解方法:例2,初始模式:title, year, length, filmType, studioName, studioAddr 分析: title, year 是主键 title year-length,fileType, studioName 下列函数依赖不满足3

9、NF条件 studioName-studioAddr 分解成: title, year, length, fileType, studioName, studioName, studioAddr,模式分解方法:例3,初始模式:title, year, studioName, president, presAddr 分析: title, year 是主键 title year- studioName 下列函数依赖不满足3NF条件 studioName-president, president-presAddr 分解成: title, year, studioName, studioName, p

10、resident, president, presAddr,正规化设计,按照函数依赖分解的关系,能通过连接(join)恢复成原来的关系 优点 减少数据库冗余,数据库小,所以I/O速度快 表更小,行更窄 提供物理的、一致的格式 数据只要修改一次,所以修改更快。 缺点 需要连接,查询处理慢(I/O多和CPU时间长) 不允许汇总或复制数据,逻辑数据库设计,用关系数据库实现UML模型 正规化设计 非正规化设计 常用的非正规化技术,非正规化(Denormalization)设计,有意违反正规化设计原则 提供性能 需要了解数据如何被使用 用空间换时间,具体体现在: 用冗余的数据如汇总的数据减少连接数,减少

11、外键个数,减少索引 要维护冗余的数据,决定进行非正规化,数据项一起被访问的频率如何 四个或四个以上的表被连接,考虑非正规化 涉及多少行 数据修改的花费与非正规化获得的好处的比较,维护冗余数据,破坏数据正规化原则,需要维护数据完整性。 数据完整性通过下两种方式维护 触发器 存储过程,逻辑数据库设计,用关系数据库实现UML模型 正规化设计 非正规化设计 常用的非正规化技术,非正规化技术,复制列 重定义列 重定义表 复制整个表,复制列:精确复制,候选 从双亲表中选择不大可能改变或根本不可能改变的列 性能优点 通过删除连接,减少I/O 减少查询表竞争 不改变与列有关的数据类型,故增加维护数据完整性的操

12、作,复制列:精确复制例子,复制列:派生列,候选 行数 总计另一列上n行的值 一个或多个列上的计算 考虑 如果包含派生列的列改变,派生列也要改变 性能优点 减少多表访问 预先执行计算操作,提高查询性能,复制列:派生列例子,通常,在外键所在的表上计算出总值,然后写入主键所在的表上的总计。,非正规化技术,复制列 重定义列 重定义表 复制整个表,重定义列:虚键列,候选 键的大小超过8字节(4字节为可选) 多列主键 考虑 避免使用长主键 用虚键列一致性代替所有外键一致性 性能优点 虚键上的索引变得更小 查询优化器上有更精确有效的统计数据,重定义列:虚键列例子,虚键列prop_id用于property l

13、ist表中的主键和Rentals表中的外键,Rentals表可被缩小。,非正规化技术,复制列 重定义列 重定义表 复制整个表,重定义表:按列分割表,候选 不经常访问的列 OLTP数据要求和决策支持数据要求之间有冲突 考虑 确保被分割成独立表的数据不经常使用,否则,需要连接将取消性能优点。 优点 通过列分割数据可减少锁定次数和对数据的竞争,重定义表:按行分割表,候选 用户需要数据的不同子集 包含大量的行,但并没有可用的索引 考虑 查询策略若是用表扫描,那么通过行分割可提高性能,但如果通过索引访问列,行分割提高的性能就很少了。,非正规化技术,复制列 重定义列 重定义表 复制整个表,非正规化技术,复制列 重定义列 重定义表 复制整个表,物理数据库的设计/Orale8,如果属性可以被限制在几个值中,那么不用check constraint(写一段程序去检查属性值是否属于指定的几个值),而用value list class 除了共有的状态,还有某个对象可能有额外的状态,那么重载valu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论