《高性能的数据库》第一讲:范式设计
首先,俺说,数据库重在设计,然后才是开发。按照第三范式开发,会让你提升到一个新的境界!
名词解释:第三范式
第一范式:一个不包含重复列的表归于第一范式。
第二范式:如果一个表归于第一范式且只包含依赖于主键的列,则归于第二范式。
第三范式:如果一个表归于第二范式且只包含那些非传递性地依赖于主键的列,则归于第三范式。
第一范式:不设计重复字段的表
比如:
则fd1,fd2违反第一范式
第二范式:不设计没有主键,或没有唯一索引的表
比如:如果一个表存在相同的数据,那必然是违反第二范式无疑。
第三范式:能细分则细分每个字段。
比如:一个表,原来设计为:
那么Color违反了第三范式,于是,第三范式应该这样设计
Color作为主表,Clothes作为子表,两者用ColorID互联.
名词解释:第三范式
第一范式:一个不包含重复列的表归于第一范式。
第二范式:如果一个表归于第一范式且只包含依赖于主键的列,则归于第二范式。
第三范式:如果一个表归于第二范式且只包含那些非传递性地依赖于主键的列,则归于第三范式。
第一范式:不设计重复字段的表
比如:
Create Table tb1 (
fd1 varchar(20), --用来存放电话
fd2 varchar(20), --用来存放电话
fd3 int --其他
)
fd1 varchar(20), --用来存放电话
fd2 varchar(20), --用来存放电话
fd3 int --其他
)
则fd1,fd2违反第一范式
第二范式:不设计没有主键,或没有唯一索引的表
比如:如果一个表存在相同的数据,那必然是违反第二范式无疑。
第三范式:能细分则细分每个字段。
比如:一个表,原来设计为:
Create TAble Clothes(
ClothesID int primary key,--ID
Color varchar(10), --颜色
Description varchar(20) --描述
)
ClothesID int primary key,--ID
Color varchar(10), --颜色
Description varchar(20) --描述
)
那么Color违反了第三范式,于是,第三范式应该这样设计
Create TAble Clothes(
ClothesID int primary key,--ID
ColorID Int, --颜色ID
Description varchar(20) --描述
)
ClothesID int primary key,--ID
ColorID Int, --颜色ID
Description varchar(20) --描述
)
Create Table Color(
ColorID int primary key,
Color varchar(20)
)
ColorID int primary key,
Color varchar(20)
)
Color作为主表,Clothes作为子表,两者用ColorID互联.
上一篇:OutputCache造成页面响应内容类型为text/vnd.wap.wml的问题
下一篇:Coolite自定义验证,VType
全部评论:
xiaoyaoalu | 2010-7-29 16:31:00 |
| 投票无限制... | |
恩,得抽个时间处理下了。 | |
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“
《高性能的数据库》第一讲:范式设计
”的原作者,若侵犯您的版权,请与我联系!在此请您原谅我的幼稚和无知!联系方法:email:ahuinan@21cn.com QQ:106494262
感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
文章档案
- 作者:佚名
- 来源:转载
- 日期:2010-2-7 20:51:00
- 点击:477
网友投票(您觉得这篇文章怎样?)
请稍侯......
请稍侯......
文章阅读排行
随便看看
最新评论
- 不錯的東東,
打包demoupload.asp,js部分尾多了一個逗號
有空多交流:QQ 37787553 - 不錯的東東,
打包demoupload.asp,js部分尾多了一個逗號
有空多交流:QQ 37787553 - 站长 好!
- 网站不错<br>不知道URl是用什么生成的?
- update A
set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - update A
set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 例子举得不好,为什么不直接用update解决呢?
update set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 例子举得不好,为什么不直接用update解决呢?
update set A.OriginSalary=A.OriginSalary+B.AddSalary
from dbo.OriginSalary as A left join dbo.AddSalary as B on A.O_ID=B.O_ID - 恭喜站长改进 支持
- 改版了? 牛叉
- 网站不错^-^ 多多向站长学习
- 212
- 啊 是
xiaoyaoalu
恩,得抽个时间处理下了。