第一范式:

全部是关于消除重复数据组和保证原子性的规范化信息.

通俗讲 就是 创建主键,然后将任何重复的数据组移动到新的表中,为这些表创建新键.

原始表结构:

一个客户可能对应很多订单,那么表中将出现大量的重复数据.解决办法就是 将重复列 移到另一个表中

第二范式:

进一步减少重复的数据出现.(不一定是数据组)

尽量使所有列 都依赖于真个键.

第三范式:

处理的问题是 使得表中所有列 不仅仅是依赖于某个事物--而是要依赖于 正确的事物.

第三范式的规则:

1.首先实现第二范式.

2.任何列都不能依赖于非键列.

3.不可以有派生的数据.(派生 就是 有 表中其他的列 计算得到的列)

Boyce-Codd范式(实际是第三范式的变体):

试图解决 多个重叠候选键的情况,这只能在下列条件下发生:

1.所有候选键是组合键(即键由多个列组成).

2.不只一个候选键

3.每个候选键至少有一个列和另外一个候选键的列相同.

关系:

有三种主要关系:

  • 一对一
  • 一对多
  • 多对多

一对一关系:

一对一关系是指: 如果在是一个表中有一个记录,那么另一个表也会有一个与之匹配的记录.

零或一对一关系:

这本质上和一对一相同,不同的是 关系的一方可以选择有一个记录或者没有记录.

一对一或一对多关系:

一个表中的记录,对应另一个表的多个数据.

多对多关系:

那么一个权限的例子, 每个用户都可能有多种权限,  多个用户可以公有一种权限

就此建立了一多对多 关系的三个表  ;

反规范化:

  • 如果声明一个计算列或者派生列 数据有助于更有效地运行报表,那么不管怎么样也要采用.只需考虑有点和可能的风险(如果汇总数据与所派生的数据不同步该怎么办?)
  • 在表中包括一个或者多个 饭规范化的列,可以消除或者显著减少检索信息所需的连接数量.
  • 如果要保持原始数据(大部分不改动的,而且只用于报表的数据),那么完整性问题是相对次要的.

超出规范化的一些过则

  1. 保持简单.要避免在数据库中引入 的复杂性超出真正所需.最低要求的方法通常产生的结果不仅更容易编辑,而且运行更快.
  2. 选择数据类型. 比如 需要存储月份,1-12 那么数据类型 选择 单字节的 tinyint足够了,没必要选择int.
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2012/09/11/2679996.html,如需转载请自行联系原作者

sql server 2008学习7 规范化和其他基本设计问题相关推荐

  1. sql server 2008 学习笔记

    sql server 2008 删除已有的实例 想从setup.exe中区卸载,没找到. 原来还是要从控制面板中卸载,卸载Microsoft SQL Server 2008 卸载界面会提示让你选择要删 ...

  2. sql server 2008学习10 存储过程

    输入输出参数: 给存储过程传参数,叫做输入参数,用户告诉存储过程需要 利用这个参数干些什么. 输出参数: 从存储过程得到那些数据. 创建一个可选参数的存储过程: create proc pa1 @na ...

  3. sql server 2008学习12 事务和锁

    事务 事务的点: 1.begin tran 是事务开始的地方,也是 事务回滚的起点.也就说他会忽略这个起点之后的最终没有提交的所有语句, 2.commit tran 事务的提交 是一个事务的终点 当发 ...

  4. sql server 2008学习9 视图

    创建简单视图: use test go create view v1(视图名) as select name from b 这样视图就创建好了. 下面说下视图的本质: 当执行  select * fr ...

  5. sql server 2008学习8 sql server存储和索引结构

    sql server的存储机制 区段: 是用来为表和索引 分配空间的基本存储单元. 由 8个连续的页面构成,大小为64kb. 区段的注意事项: 一旦区段已满,那么下一记录 将要占据的空间不是记录的大小 ...

  6. sql server 2008学习4 设计索引的建议

    索引设计的建议: 一.检查where子句和连接条件列 当一个查询提交到sql server时,查询优化器尝试为查询中引用的所有表查找最佳的数据访问机制, 一下是它所进行的方式. 1.优化器识别Wher ...

  7. sql server 2008学习5 sql基础

    查看数据库的信息: INFORMATION_SCHEMA.CHECK_CONSTRAINTS INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE INFORMATION_SC ...

  8. sql server 2008学习3 表组织和索引组织

    表组织 表包含在一个或多个分区中,每个分区在一个堆或一个聚集索引结构包含数据行.堆页或聚集索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型. 聚集表.堆和索引 SQL Se ...

  9. sql server 2008学习1–系统数据库

    master数据库 数据库记录 SQL Server 系统的所有系统级信息.这包括实例范围的元数据(例如登录帐户).端点.链接服务器和系统配置设置.此外,master 数据库还记录了所有其他数据库的存 ...

最新文章

  1. Windows Phone 7 不温不火学习之《创建用户控件》
  2. 知乎如何运用OKR管理公司目标,达成绩效?
  3. 【转】SAP中的FTP操作样例
  4. Android系统中的进程管理:内存的回收
  5. python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用
  6. 爬虫IP被禁的简单解决方法
  7. 【Python-随机旋转】图像随机旋转及坐标进行旋转原理
  8. 北京供销大数据集团发布SinoBBD Cloud 一体化推动产业云发展
  9. Sub-process /usr/bin/dpkg returned an error code (1)解决办法
  10. vc6开发一个抓包软件_开发一个软件多少钱?3种软件开发公司报价
  11. ORACLE 等待事件
  12. 【机器学习】监督学习--(回归)一元线性回归
  13. 第4节 常见软件安装-Mysql和SQLyog
  14. 现代通信原理2.3:为什么我们这么关注傅立叶变换?
  15. python算法编程书籍推荐_推荐一本编程算法书籍,你推荐哪本?
  16. JAVA知识体系之分布式篇(四)——Kafka
  17. C,java,Python,这些名字背后的江湖!
  18. 手机1520 win8.1升级win10
  19. 《女医明妃传》里为美人腹黑的代宗,实际更爱江山,还原真实明史
  20. 鸿蒙 使用hawk存储数据

热门文章

  1. 谈谈我对Manacher算法的理解
  2. MIT黑科技:“不开卷也有益”,计算机不翻书就能读完一本书
  3. 标准差、方差、协方差的简单说明
  4. 三星为何要在安卓之外开发 Tizen 系统?
  5. 大数据-07-Spark之流数据
  6. 灵玖软件大数据采集技术提高出版行业效率
  7. ubuntu16.04 安装网易云音乐
  8. 深入javascript——构造函数和原型对象
  9. Cocoa的MVC架构分析
  10. 配置yum源并与公网同步更新