All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net2.0中水晶报表的应用实例
PHP上传文件的代码_[PHP教程]
Delphi执行sql server模糊查询
[delphi语法6]delphi中Repeat语句的使用实例
在Win2003,R2上安装SQL,Server,2005(二)_mssql学习_编程技术
用PHP发电子邮件_[PHP教程]
用sp_lock诊断SQL Sever的性能问题_[SQL Server教程]
C#,3.0新特性初步研究,Part6:使用查询表达式_[Asp.Net教程]
用PHP5的DirectoryIterators递归扫描目录_php资料_编程技术
ASP.NET2.0,GridView绑定XmlDocument_[Asp.Net教程]
Reading number is top 10 pictures
Beautiful vacuum girl1
50个至今影响世界的德国发明
奇趣的世界记录3
From China fortress sora aoi3
A man's favorite things3--ZhouWeiTong
Nikon microscopic photography of the first three
黑社会大哥相亲
Group of female porn in 《westwards》, uninhibited woman threatened to not the bottom line
Desktop Wallpapers1
Most cow mistress ZhaoGongXia face exposure
Download software ranking
Tram sex maniac 2 (H) rar bag6
虚拟机汉化软件
Eclipse-CALMSANNY (second edition)
Boxer Classic video2
Ashlynn Video4
Jinling thirteen stock
WebService在.NET中的实战应用教学视频 → 第2集
Sora aoi - one of more PK
matrix2
The hero
归海一刀 published in(发表于) 2014/2/3 6:46:08 Edit(编辑)
数据库设计正规化的五大范式_[SQL Server教程]

数据库设计正规化的五大范式_[SQL Server教程]

数据库设计正规化的五大范式_[SQL Server教程]

  简单说来,正规化就是在表格设计时,消除冗余性和不协调的从属关系。在本文中,我将通过五个渐进的过程来告诉你在设计中应该了解的正规化技巧。从而建立一个可行而且效率高的数据库。本文也会详细分析一下可以利用的关系类型。

  这里假定我们要建立一个用户信息的表格,其中要存储用户的名字、公司、公司地址和一些个人的收藏夹或url。在开始时,你可能定义一个如下的表格结构:

零状态形式

users
name company company_address url1 url2
Joe ABC 1 Work Lane abc.com xyz.com
Jill XYZ 1 Job Street abc.com xyz.com


  由于没有进行任何的正规化处理,我们将这种形式的表称为零状态形式的表。留意其中的url1和url2字段---如果我们在应用中需要第三个url呢?这样你就要在表格中多加一列,很明显,这不是一个好办法。如果你要创建一个富有扩展性的系统,你就要考虑使用第一个正规化的形式,并且应用到该表格中。

第一级正规化形式

1.消除每个表格中重复的组
2.为每套相关的数据建立一个独立的表格
3.使用一个主键来标识每套相关的数据

  以上的表格明显违反了上面第一条的规定,那么第三条的主键又是什么意思呢?很简单,它只是在每个记录中加入一个唯一的、自动增加的整型值。通过这个值,就可以将两个姓名一样的记录区分开来。通过应用第一级正规化形式,我们得到了以下的表格:

users
userId name company company_address url
1 Joe ABC 1 Work Lane abc.com
1 Joe ABC 1 Work Lane xyz.com
2 Jill XYZ 1 Job Street abc.com
2 Jill XYZ 1 Job Street xyz.com

  现在我们的表格可以说已经处在第一级正规化的形式了,它已经解决了url字段的限制问题,不过这样的处理后又带来了一个新的问题。每次在user表中插入一条记录的时候,我们都必须重复所有的公司和用户数据。这样不仅令数据库比以前大了,而且很容易出错。因此还要经过第二级正规化处理。
第二级正规化形式

1.为应用在多条记录的字段建立独立的表格
2.通过一个foreign key来关联这些表格的值

  我们将url的值放在一个独立的表格中,这样我们就可以在以后加入更多的数据,而无需担心产生重复的值。我们还通过主键值来关联这些字段:

users
userId name company company_address
1 Joe ABC 1 Work Lane
2 Jill XYZ 1 Job Street

urls
urlId relUserId url
1 1 abc.com
2 1 xyz.com
3 2 abc.com
4 2 xyz.com



添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.