sql server 2008学习7 规范化和其他基本设计问题
第一范式:
全部是关于消除重复数据组和保证原子性的规范化信息.
通俗讲 就是 创建主键,然后将任何重复的数据组移动到新的表中,为这些表创建新键.
原始表结构:
一个客户可能对应很多订单,那么表中将出现大量的重复数据.解决办法就是 将重复列 移到另一个表中
第二范式:
进一步减少重复的数据出现.(不一定是数据组)
尽量使所有列 都依赖于真个键.
第三范式:
处理的问题是 使得表中所有列 不仅仅是依赖于某个事物--而是要依赖于 正确的事物.
第三范式的规则:
1.首先实现第二范式.
2.任何列都不能依赖于非键列.
3.不可以有派生的数据.(派生 就是 有 表中其他的列 计算得到的列)
Boyce-Codd范式(实际是第三范式的变体):
试图解决 多个重叠候选键的情况,这只能在下列条件下发生:
1.所有候选键是组合键(即键由多个列组成).
2.不只一个候选键
3.每个候选键至少有一个列和另外一个候选键的列相同.
关系:
有三种主要关系:
- 一对一
- 一对多
- 多对多
一对一关系:
一对一关系是指: 如果在是一个表中有一个记录,那么另一个表也会有一个与之匹配的记录.
零或一对一关系:
这本质上和一对一相同,不同的是 关系的一方可以选择有一个记录或者没有记录.
一对一或一对多关系:
一个表中的记录,对应另一个表的多个数据.
多对多关系:
那么一个权限的例子, 每个用户都可能有多种权限, 多个用户可以公有一种权限
就此建立了一多对多 关系的三个表 ;
反规范化:
- 如果声明一个计算列或者派生列 数据有助于更有效地运行报表,那么不管怎么样也要采用.只需考虑有点和可能的风险(如果汇总数据与所派生的数据不同步该怎么办?)
- 在表中包括一个或者多个 饭规范化的列,可以消除或者显著减少检索信息所需的连接数量.
- 如果要保持原始数据(大部分不改动的,而且只用于报表的数据),那么完整性问题是相对次要的.
超出规范化的一些过则
- 保持简单.要避免在数据库中引入 的复杂性超出真正所需.最低要求的方法通常产生的结果不仅更容易编辑,而且运行更快.
- 选择数据类型. 比如 需要存储月份,1-12 那么数据类型 选择 单字节的 tinyint足够了,没必要选择int.
sql server 2008学习7 规范化和其他基本设计问题相关推荐
- sql server 2008 学习笔记
sql server 2008 删除已有的实例 想从setup.exe中区卸载,没找到. 原来还是要从控制面板中卸载,卸载Microsoft SQL Server 2008 卸载界面会提示让你选择要删 ...
- sql server 2008学习10 存储过程
输入输出参数: 给存储过程传参数,叫做输入参数,用户告诉存储过程需要 利用这个参数干些什么. 输出参数: 从存储过程得到那些数据. 创建一个可选参数的存储过程: create proc pa1 @na ...
- sql server 2008学习12 事务和锁
事务 事务的点: 1.begin tran 是事务开始的地方,也是 事务回滚的起点.也就说他会忽略这个起点之后的最终没有提交的所有语句, 2.commit tran 事务的提交 是一个事务的终点 当发 ...
- sql server 2008学习9 视图
创建简单视图: use test go create view v1(视图名) as select name from b 这样视图就创建好了. 下面说下视图的本质: 当执行 select * fr ...
- sql server 2008学习8 sql server存储和索引结构
sql server的存储机制 区段: 是用来为表和索引 分配空间的基本存储单元. 由 8个连续的页面构成,大小为64kb. 区段的注意事项: 一旦区段已满,那么下一记录 将要占据的空间不是记录的大小 ...
- sql server 2008学习4 设计索引的建议
索引设计的建议: 一.检查where子句和连接条件列 当一个查询提交到sql server时,查询优化器尝试为查询中引用的所有表查找最佳的数据访问机制, 一下是它所进行的方式. 1.优化器识别Wher ...
- sql server 2008学习5 sql基础
查看数据库的信息: INFORMATION_SCHEMA.CHECK_CONSTRAINTS INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE INFORMATION_SC ...
- sql server 2008学习3 表组织和索引组织
表组织 表包含在一个或多个分区中,每个分区在一个堆或一个聚集索引结构包含数据行.堆页或聚集索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型. 聚集表.堆和索引 SQL Se ...
- sql server 2008学习1–系统数据库
master数据库 数据库记录 SQL Server 系统的所有系统级信息.这包括实例范围的元数据(例如登录帐户).端点.链接服务器和系统配置设置.此外,master 数据库还记录了所有其他数据库的存 ...
最新文章
- Windows Phone 7 不温不火学习之《创建用户控件》
- 知乎如何运用OKR管理公司目标,达成绩效?
- 【转】SAP中的FTP操作样例
- Android系统中的进程管理:内存的回收
- python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用
- 爬虫IP被禁的简单解决方法
- 【Python-随机旋转】图像随机旋转及坐标进行旋转原理
- 北京供销大数据集团发布SinoBBD Cloud 一体化推动产业云发展
- Sub-process /usr/bin/dpkg returned an error code (1)解决办法
- vc6开发一个抓包软件_开发一个软件多少钱?3种软件开发公司报价
- ORACLE 等待事件
- 【机器学习】监督学习--(回归)一元线性回归
- 第4节 常见软件安装-Mysql和SQLyog
- 现代通信原理2.3:为什么我们这么关注傅立叶变换?
- python算法编程书籍推荐_推荐一本编程算法书籍,你推荐哪本?
- JAVA知识体系之分布式篇(四)——Kafka
- C,java,Python,这些名字背后的江湖!
- 手机1520 win8.1升级win10
- 《女医明妃传》里为美人腹黑的代宗,实际更爱江山,还原真实明史
- 鸿蒙 使用hawk存储数据