- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库设计与开发规范(SQL Server篇)
数据库设计与开发规范
(SQL Server篇)
高彩会 (Tony.Gao)
1
Agenda
1 表设计规范
2 物理设计规范
3 索引设计规范
4 命名规范
5 SQL编写规范
2
表设计规范-1NF
第一范式(Paradigm) 1NF是最基本的范式,用以确保保持每列原子性,如数据库表中的
所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
下图不满足第一范式:
下图的用户信息表将“地址”这个属性拆分成“省份”、“城市”、“详细地址”,这样
就满足了第一范式,同时基于对“城市”的查询性能也相应提升。
3
表设计规范-2NF
第二范式2NF需要确保表中的每一列都和主键相关,而不能只与主键的某一部分相关。
也即在一个表中只能保存一种数据,不可以把多种数据保存在一张表中。
下图的订单信息表中即存在商品信息,又有订单信息,因此存在数据冗余,不符合2NF
下图是拆分成符合2NF后的表结构:
4
表设计规范-3NF
第三范式3NF需要确保表中的每一列数据都和主键直接相关,而不能间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系,
而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。
下图这两个表所示的设计就是一个满足第三范式的数据库表,这样在查询订单信息的时候,就
可以使用客户编号来引用客户信息表中的记录,从而不必在订单信息表中多次输入客户信息的内
容,减少了数据冗余。
5
反规范化表设计
1. 为何要反规范化设计
数据库规范化设计目前占数据库设计主导地位,规范化设计达到了数据存储空间最佳利用和控
制数据冗余,但是也带来了查询性能的降低,因此在适当的条件下,对数据库进行反规范化设
计也是很有必要的。
2. 反规范化设计的目的
反规范化设计通过增加数据冗余,数据分片等策略来改进原有规范设计,以达到改善数据库性
能的目的,也即以空间换性能。
需要注意的是:数据库设计没有一层不变的规范,也没有百分百完美的模式,因此要结合实际
的应用需要统一考量设计,未来的发展方向将会是多种设计规范的混搭模式,即数据库中即有
规范化设计又有反规范化设计。
6
反规范化表设计-遵循原则
全面了解系统
确信对系统的逻辑设计有全面的了解,当改变 全面了解系统
数据库时,会对其它模块带来哪些影响。
采取索引、数据存储等技术提升性能 提升性能
分析系统的数据量,对于数据量不大,响应时间
不高的尽量通过数据库本身技术来提升性能。
数据完整性维护
数据完整
使用反规范化带来的最大问题是数据完整性问 性维护
题,在程序设计中要充分考虑到数据库事务的
处理,增删改查保证数据库操作一致性;完整
性约束还可以通过批处理及触发器实现(尽量少
用触发器)。
7
反规范化表设计方法
文档评论(0)