(DB2逻辑设计.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(DB2逻辑设计

DB2逻辑设计 赵坚密above@163.com 1表 1.1规范化和反规范化 a不能拆分1NF 表1 不符合1NF 员工 部门 部门经理 姓 名 张 三 人力资源 张三 张 三 财务 李四 李 四 财务 李四 表2 符合1NF 员工 部门 部门经理 张三 人力资源 张三 张三 财务 李四 李四 财务 李四 b不能重复2NF(1—2:消除非主属性对码的部分依赖) 表3 符合2NF 员工编号 员工姓名 部门 部门经理 1 张三 人力资源 张三 2 张三 财务 李四 3 李四 财务 李四 c不能冗余3NF(2—3:消除非主属性对码的传递依赖) 表4 符合3NF 员工编号 员工姓名 部门 1 张三 人力资源 2 张三 财务 3 李四 财务 表5 部门编号 部门 部门经理 1 人力资源 张三 2 财务 李四 d通俗的介绍: 第一范式:属性不可再分 就是字段A,不能再分成A.filed1,A.filed2 第二范式实在第一范式得基础上 第二范式其实就是要求有主键 通过主键可以唯一确定一行记录 也就是员工表,必须有个员工ID 部门表必须有部门ID 第三范式实在第二范式得基础上 消除了字段对非主属性得传递依赖 员工表 员工ID,员工姓名,部门ID,部门名称 这个是不允许得 不能有部门名称 部门会有另一张表 e反规范化 反规范化,即数据冗余。首先需要付出空间代价,其次是管理代价,维护数据的完整性。它的好处是:减少查询所要连接表的个数,减少了I/O和CPU时间,加速了查询。。因此做反规范化时,一定要权衡利弊,仔细分析数据的存取需求和实际的性能特点。 1.2创建表时的可选参数 a COMPRESSION 压缩70% b APPEND ON 直接插入表尾 c PCTFREE 表中空闲百分比 d PARTITION BY RANGE 快速加载和分离数据 e VOLATILE 访问时使用索引 2索引 2.1执行计划 DB2基于成本的优化,优化器计算SQL语句的多种访问路径下的执行成本(CPU内存硬盘等),最终选择最优路径作为SQL语句的执行计划。 动态SQL每执行一次都需要重新编译和优化,静态SQL不需要。所以静态SQL免去了编译和优化得过程,节约了时间,但是随着时间的改变,数据库的数据以及服务器的资源负载改变之后原先的执行计划可能不是最优。 2.2访问数据的方法 a表扫描 按顺序扫描整个表。 b索引扫描 通过首先访问表上的索引来定位到某一行,然后再访问该行。 c完全索引访问 所有需要的数据都在索引中,那么就没必要访问索引所在的基表 2.3影响索引作用的因素 a区分度(检索比例) 优化器根据统计信息来生成执行计划,如果数据库没有收集索引的统计信息,优化器就无从下手,只能按部就班,通过全表扫描来执行查询。所以,新创建的索引需要重新运行统计,否则索引无效。 举一个例子,有个表TABLE1,其中有一个字段COL1取值是“1”、“2”、“3”三种,运行统计的结果是告诉数据库TABLE1中的数据其中字段COL1的各种取值所占的比重。示意如下: “1” - 12%; “2” - 66%; “3” - 22%。 假设还有个字段COL2取值和数据所占的百分比如下: “A” - 50%; “B” - 50%。 则查询语句1: select * from TABLE1 where COL1 = “1” and COL2 = “A”, 数据库优化器会优先选择字段COL1上的索引来定位表中的数据,因为通过COL1上的索引就可以将结果集迅速定位在一个小范围内12%。而相反的,对于查询语句2: select * from TABLE1 where COL1 = “2” and COL2 = “A”, 数据库会优先选择COL2上的索引,因为对于语句2的查询条件COL2上的索引具有更好的区分度。 从上面可以看出,数据库的优化器通常会优先选择区分度较高的索引(针对于查询条件,条件不同选择的索引可能不同)。 数据库里的数据是变化的,所以某个时候采集的统计信息,过一段时间后可能会过时,甚至误导数据库优化器,这样同样会造成运行性能的低下。所以除了,最初建立索引时需要运行统计,在表中的数据发生变化时也需要运行统计。经验:当表中数据量变化达到10%时,需要重新运行统计。 b聚集度 补充知识:按块访问表数据。 c函数与索引 函数,like语句。。。 Substring(col_name, 1, 3) vs. Substring(col_name, 3, 3) like ‘QQQ% vs. like

文档评论(0)

jishu9527 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档