sql server 2008学习7 规范化和其他基本设计问题
2012-05-08 15:25
246 查看
第一范式:
全部是关于消除重复数据组和保证原子性的规范化信息.
通俗讲 就是 创建主键,然后将任何重复的数据组移动到新的表中,为这些表创建新键.
原始表结构:
一个客户可能对应很多订单,那么表中将出现大量的重复数据.解决办法就是 将重复列 移到另一个表中
第二范式:
进一步减少重复的数据出现.(不一定是数据组)
尽量使所有列 都依赖于真个键.
第三范式:
处理的问题是 使得表中所有列 不仅仅是依赖于某个事物--而是要依赖于 正确的事物.
第三范式的规则:
1.首先实现第二范式.
2.任何列都不能依赖于非键列.
3.不可以有派生的数据.(派生 就是 有 表中其他的列 计算得到的列)
Boyce-Codd范式(实际是第三范式的变体):
试图解决 多个重叠候选键的情况,这只能在下列条件下发生:
1.所有候选键是组合键(即键由多个列组成).
2.不只一个候选键
3.每个候选键至少有一个列和另外一个候选键的列相同.
关系:
有三种主要关系:
一对一
一对多
多对多
一对一关系:
一对一关系是指: 如果在是一个表中有一个记录,那么另一个表也会有一个与之匹配的记录.
零或一对一关系:
这本质上和一对一相同,不同的是 关系的一方可以选择有一个记录或者没有记录.
一对一或一对多关系:
一个表中的记录,对应另一个表的多个数据.
多对多关系:
那么一个权限的例子, 每个用户都可能有多种权限, 多个用户可以公有一种权限
就此建立了一多对多 关系的三个表 ;
反规范化:
如果声明一个计算列或者派生列 数据有助于更有效地运行报表,那么不管怎么样也要采用.只需考虑有点和可能的风险(如果汇总数据与所派生的数据不同步该怎么办?)
在表中包括一个或者多个 饭规范化的列,可以消除或者显著减少检索信息所需的连接数量.
如果要保持原始数据(大部分不改动的,而且只用于报表的数据),那么完整性问题是相对次要的.
超出规范化的一些过则
保持简单.要避免在数据库中引入 的复杂性超出真正所需.最低要求的方法通常产生的结果不仅更容易编辑,而且运行更快.
选择数据类型. 比如 需要存储月份,1-12 那么数据类型 选择 单字节的 tinyint足够了,没必要选择int.
全部是关于消除重复数据组和保证原子性的规范化信息.
通俗讲 就是 创建主键,然后将任何重复的数据组移动到新的表中,为这些表创建新键.
原始表结构:
一个客户可能对应很多订单,那么表中将出现大量的重复数据.解决办法就是 将重复列 移到另一个表中
第二范式:
进一步减少重复的数据出现.(不一定是数据组)
尽量使所有列 都依赖于真个键.
第三范式:
处理的问题是 使得表中所有列 不仅仅是依赖于某个事物--而是要依赖于 正确的事物.
第三范式的规则:
1.首先实现第二范式.
2.任何列都不能依赖于非键列.
3.不可以有派生的数据.(派生 就是 有 表中其他的列 计算得到的列)
Boyce-Codd范式(实际是第三范式的变体):
试图解决 多个重叠候选键的情况,这只能在下列条件下发生:
1.所有候选键是组合键(即键由多个列组成).
2.不只一个候选键
3.每个候选键至少有一个列和另外一个候选键的列相同.
关系:
有三种主要关系:
一对一
一对多
多对多
一对一关系:
一对一关系是指: 如果在是一个表中有一个记录,那么另一个表也会有一个与之匹配的记录.
零或一对一关系:
这本质上和一对一相同,不同的是 关系的一方可以选择有一个记录或者没有记录.
一对一或一对多关系:
一个表中的记录,对应另一个表的多个数据.
多对多关系:
那么一个权限的例子, 每个用户都可能有多种权限, 多个用户可以公有一种权限
就此建立了一多对多 关系的三个表 ;
反规范化:
如果声明一个计算列或者派生列 数据有助于更有效地运行报表,那么不管怎么样也要采用.只需考虑有点和可能的风险(如果汇总数据与所派生的数据不同步该怎么办?)
在表中包括一个或者多个 饭规范化的列,可以消除或者显著减少检索信息所需的连接数量.
如果要保持原始数据(大部分不改动的,而且只用于报表的数据),那么完整性问题是相对次要的.
超出规范化的一些过则
保持简单.要避免在数据库中引入 的复杂性超出真正所需.最低要求的方法通常产生的结果不仅更容易编辑,而且运行更快.
选择数据类型. 比如 需要存储月份,1-12 那么数据类型 选择 单字节的 tinyint足够了,没必要选择int.
相关文章推荐
- sql server 2008学习7 规范化和其他基本设计问题
- 规范化和其他基本设计问题
- sql server 2008学习4 设计索引的建议
- Sql server 2008 R2 大型数据仓库设计学习笔记
- sql server 2008学习4 设计索引的建议
- Sql Server系列:规范化及基本设计
- 处理【关于sql server 2008 表设计无法保存】的问题
- SQL Server 2008 表设计无法保存的问题
- SQL Server 2008 设计器不能修改表结构问题
- SQL Server 2008 学习笔记【一】 一次性插入多行数据的问题
- SQL Server 2008 学习笔记(一) 数据库系统的基本结构
- sql server 2008学习(二)基本查询
- 关于Java图形化连接微软SQL server(含2005,2008,2012等)数据库的问题
- SQL SERVER 2008查询其他数据库
- sql server 2008学习10 存储过程
- Java第一课 Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。
- 设计模式学习笔记(三):模板方法模式【Template Method】(二) 问题解决
- (一)委托模式简介 委托模式是基本的设计模式之一。委托,即是让另一个对象帮你做事情。 许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。 委托模式使得我们可以用聚合
- sql server 2008学习12 事务和锁
- OpenCV 2 学习笔记(10): 算法的基本设计模式<1>:策略模式(strategy pattern)