第一章强调良好的模型和合理的数据库设计的重要性
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优化器提供了数据的重要信息
历史数据
处理不断变化并需要保存变化历史的数据,必须根据数据改变的快慢程度小心地设计策略
设计仅做到功能正确是不够的,设计时必须考虑性能,性能拙劣的罪魁祸首是错误的设计。后续的调优,可做为解决性能问题的补充手段。有时打着改善性能的旗号进行非规范化的处理,经常使性能问题变得更加糟糕,成功的数据库建模应该严格遵守基本的设计原则
分享到:
相关推荐
第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 第2章,发动战争:高效访问数据库 解释如何进行程序设计才能高效访问数据库 第3章,战术部署:建立索引 揭示为何建立索引,如何建立索引 第4章,...
第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 第2章,发动战争:高效访问数据库 解释如何进行程序设计才能高效访问数据库 第3章,战术部署:建立索引 揭示为何建立索引,如何建立索引 第4章,机动灵活:...
第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 第2章,发动战争:高效访问数据库 解释如何进行程序设计才能高效访问数据库 第3章,战术部署:建立索引 揭示为何建立索引,如何建立索引 第4章,机动灵活:...
SQL语言艺术 SQL语言艺术 SQL语言艺术 SQL语言艺术
中文:第1章,制定计划:为性能而设计 讨论如何设计高性能数据库 英文:Chapter 1. Laying Plans Designing Databases for Performance
SQL语言艺术pdf电子书,学习sql语言的好助手
资源名称:SQL Server性能优化与管理的艺术内容简介:本书共15章,分为三部分,第一部分(第1-2章)为概述部分,阐述SQLServer方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者...
《SQL语言艺术》电子书
SQL语言艺术,提高DBA写SQL代码的能力,提高性能
(新)SQL语言艺术
SQL语言艺术,涉及到SQL数据库开发必备的资料
SQL语言艺术高清版 pdf格式,本书由SQL资深专家倾力打造,巧妙借鉴《孙子兵法》的智慧结晶,一共分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种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.txt\SQL语言艺术.txt.txt
语言程序设计资料:SQL语言程序设计 课件.ppt