`
septem
  • 浏览: 53401 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL语言艺术(一)制定计划:为性能而设计

    博客分类:
  • sql
阅读更多
第一章强调良好的模型和合理的数据库设计的重要性

sql的背后有着关系模型的数学理论做为基础,以前一直以为关系模型指的是一个表通过外键与其它表关联起来,实际却不是这样。关系模型不是因为不同表之间建立了关系,而是因为表内不同字段之间存在关系。几个值就处于表的同一行,它们之间就存在关系。关系理论的关键原理是:关系不包含重复数据,且记录之间没有顺序

规范化是关系理论很重要的一部分,它的原理是按照严格的逻辑要求,将松散的数据组织在一起,形成结构化的信息,这种严格性是通过不同级别的范式来界定的。最具代表性的是1NF,2NF,3NF,通常符合3NF的数据库也符合BCNF和5NF

1NF:原子性,确定主键,这是规范化的基础

以前的接触的教材仅从技术角度强调1NF指的每个字段都是不可分割的,从实用角度讲,原子性表示字段能在where子句中充分利用,如果where子句中必须引用字段的某一部分,则这个字段没有达到原子性的级别,必须进一步拆分。至于将数据拆分到什么级别应该根据应用需用,看应用如何使用数据

原子性有两个优点:

1.高效搜索的能力,因为常规索引通常以具有原子性的值作为键
2.从数据库保角度证数据的正确性

2NF:对键的完全依赖

非关键字段必须完全依赖于任一组候选关键字,不能存在部分依赖(A, B)-->(C, D), (A-->C)

3NF:检查属性独立性,不能存在转递依赖
除了唯一键所包含的字段外,不能由其它任何字段的值确定另一字段的值(A-->B, C, D), (C-->D)

违反2,3范式容易造成冗余,数据不一致,影响查询性能

还存在一种设计缺陷的征兆:太多的NULL值

如果表存在太多NULL,尤其是两个字段不可能同时有值,显然是违背了2NF或3NF。NULL有可能影响查询的优化。关系模型的完备性是以二值逻辑(two-valued logic, yes or no)为基础的,where子句中的条件必须明确,但NULL代表不确定。举个例子:
where color not in ('RED', null)

以上条件不会返回任何结果,因为SQL引擎无法确定null代表什么。如果表中出现了太多的空值,应当考虑是否需要引入新的表

理解子类型

子类型可能被误用,大量查询频繁引用父表不是高效的做法。如果父表保存着查询必需的信息,则所有查询都会来访问父表。子类型之间必须有逻辑差异性,千万不要受到OO思想的启发,而设计出继承性很强的schema

约束应明确声明

数据中存在隐含约束是一种不良设计,隐含约束通常只有人知道,但DBMS不知道,不能帮助优化器实现最高效的数据访问。应当尽可能多地定义约束,约束不仅有助于保证数据完整性,还为DBMS优化器提供了数据的重要信息

历史数据

处理不断变化并需要保存变化历史的数据,必须根据数据改变的快慢程度小心地设计策略

设计仅做到功能正确是不够的,设计时必须考虑性能,性能拙劣的罪魁祸首是错误的设计。后续的调优,可做为解决性能问题的补充手段。有时打着改善性能的旗号进行非规范化的处理,经常使性能问题变得更加糟糕,成功的数据库建模应该严格遵守基本的设计原则
2
0
分享到:
评论
1 楼 liberD 2010-03-07  
很好!我这个学期正准备把数据库好好学习一下。正需要这方面的资料!!

相关推荐

    SQL语言艺术pdf

    第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 第2章,发动战争:高效访问数据库 解释如何进行程序设计才能高效访问数据库 第3章,战术部署:建立索引 揭示为何建立索引,如何建立索引 第4章,...

    SQL语言的艺术

    第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 第2章,发动战争:高效访问数据库 解释如何进行程序设计才能高效访问数据库 第3章,战术部署:建立索引 揭示为何建立索引,如何建立索引 第4章,机动灵活:...

    SQL语言艺术(pdf格式)

    第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 第2章,发动战争:高效访问数据库 解释如何进行程序设计才能高效访问数据库 第3章,战术部署:建立索引 揭示为何建立索引,如何建立索引 第4章,机动灵活:...

    SQL 语言艺术 SQL 语言艺术

    SQL语言艺术 SQL语言艺术 SQL语言艺术 SQL语言艺术

    SQL语言艺术+The Art of SQL(双语)

    中文:第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 英文:Chapter 1. Laying Plans Designing Databases for Performance

    SQL语言艺术pdf电子书

    SQL语言艺术pdf电子书,学习sql语言的好助手

    SQLServer性能优化与管理的艺术

    资源名称:SQL Server性能优化与管理的艺术内容简介:本书共15章,分为三部分,第一部分(第1-2章)为概述部分,阐述SQLServer方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者...

    《SQL语言艺术》

    《SQL语言艺术》电子书

    SQL语言艺术

    SQL语言艺术,提高DBA写SQL代码的能力,提高性能

    (新)SQL语言艺术

    (新)SQL语言艺术

    SQL语言艺术--经典之作

    SQL语言艺术,涉及到SQL数据库开发必备的资料

    SQL语言艺术,PDF格式,共12章,便于实践.rar

    SQL语言艺术高清版 pdf格式,本书由SQL资深专家倾力打造,巧妙借鉴《孙子兵法》的智慧结晶,一共分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL...

    SQL语言艺术,详细讲解sql的性能问题

    SQL语言艺术,详细讲解sql的性能问题

    [SQL] SQL语言艺术 (英文版)

    [奥莱理] SQL语言艺术 (英文版) [奥莱理] The Art of SQL (E-Book) ☆ 图书概要:☆ For all the buzz about trendy IT techniques, data processing is still at the core of our systems, especially now that ...

    SQL语言艺术.txt

    \SQL语言艺术.txt.txt\SQL语言艺术.txt.txt

    语言程序设计资料:SQL语言程序设计 课件.ppt

    语言程序设计资料:SQL语言程序设计 课件.ppt

Global site tag (gtag.js) - Google Analytics