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

Reading number is top 10 articles
Sql,server,2005加强的十大安全举措_[SQL,Server教程]
PHP编程技巧:看实例学正则表达式_php资料_编程技术
在ASP.NET中防止注入攻击_[Asp.Net教程]
.net发送邮件的一些技巧_.net资料_编程技术
c#中GDI+图形图像:GDI+中的基数样条使用方法
在ASP.NET中实现Model,View,Controller模式(2)_[Asp.Net教程]
将一个图片按比例缩放显示在一个Frame中_[Asp.Net教程]
图片保存到数据库和从数据库读取图片并显示_[Asp.Net教程]
ASP.NET中url传递中文的解决方案_[Asp.Net教程]
在ASP.NET,2.0中使用样式、主题和皮肤_[Asp.Net教程]
Reading number is top 10 pictures
9.3阅兵全景图3-外国方阵梯队和坦克方阵梯队
传几朵花
西方气质的东方美女2
A man's favorite things5
NeedWallpaper2
白嫩丰满美女照片
深圳的风光
NeedWallpaper8
The real super beauty3
乳娘帕梅拉安德森4
Download software ranking
Tram sex maniac 2 (H) rar bag9
徐若瑄成名作“魔鬼天使”
C++编程教程第三版
ASP.NET.2.0.XML.高级编程(第3版)
SQL2000 For 4IN1
Unix video tutorial20
I for your crazy
Eclipse 4.2.1 For Win32
Professional killers2 data package
Unix video tutorial6
delv published in(发表于) 2013/12/30 4:44:27 Edit(编辑)
数据库正规化和设计技巧(3)_mssql学习_编程技术

数据库正规化和设计技巧(3)_mssql学习_编程技术

数据库正规化和设计技巧(3)_mssql学习_编程技术-你的首页-uuhomepage.com
数据关系
  在定义第四个正规化的形式前,我想首先提一下三种基本的数据关系:一对一,一对多和多对多。我们回头看一下经过第一个正规化的users表。要是我们将url的字段放在一个独立的表中,每次在users表中插入一个记录,我们就会在urls表中插入一行。我们将得到一个一对一的关系:用户表中的每一行,都将在urls表中找到相应的一行。对于我们的应用来 说,这既不实用也不标准。
  然后看看第二个正规化的例子。对于每个用户记录,我们的表格允许有多个urls的记录与之关联。这是一个一对多的关系,这是一个很常见的关系。
  对于多对多的关系来说,就有点复杂了。在我们的第三个正规化形式的例子中,我们的一个用户与很多的url有关,而我们想将该结构变为允许多个用户与多个的urls有关,这样我们就可以得到一个多对多的结构。在讨论前,我们先看看表格结构会有些什么变化
  users
  userId name relCompId
  1 Joe 1
  2 Jill 2
  companies
  compId company company_address
  1 ABC 1 Work Lane
  2 XYZ 1 Job Street
  urls
  urlId url
  1 abc.com
  2 xyz.com
  url_relations
  relationId relatedUrlId relatedUserId
  1 1 1
  2 1 2
  3 2 1
  4 2 2
  为了进一步减低数据的冗余,我们运用第四级正规化形式。我们创建了一个颇奇怪的url_relations表,里面的字段均为主键或者foreign key。通过这个表,我们就可以消除urls表中的重复项目。以下是第四个正规化形式的具体要求:
  第四个正规化形式
  1.在一个多对多的关系中,独立的实体不能存放在同一个表格中
  由于它仅应用于多对多的关系,因此大多数的开发者可以忽略这条规定。不过在某些情况下,它是非常实用的,这个例子就是这样,我们通过将相同的实体分离出来,并且将关系移到它们自己的表格中,从而改进了urls表格。
  为了令你更容易明白,我们举个具体的例子,以下将用一个SQL语句选择出所有属于joe的urls:
  SELECT name, url FROM users, urls, url_relationsswheresurl_relations.relatedUserId = 1 AND
users.userId = 1 AND urls.urlId = url_relations.relatedUrlId
  如果我们想要遍历每个人的个人信息和url信息,我们可以这样做:
  SELECT name, url FROM users, urls, url_relationsswheresusers.userId = url_relations.relatedUserId AND
urls.urlId = url_relations.relatedUrlId
  第五级正规化形式
  还有一级正规化的形式,它并不常见,有点深奥,并且在大部分的情况下都是不必要的。它的原则是:
  1.原来的表格必须可以通过由它分离出去的表格重新构建
  使用这个规定的好处是,你可以确保不会在分离的表格中引入多余的列,所有你创建的表格结构都与它们的实际需要一样大。应用这条规定是一个好习惯,不过除非你要处理一个非常大型的数据,否则你将不需要用到它。
  希望这篇文章对你有用,并且可以帮助你在所有的项目中应用这些正规化的规定。你可能想知道这些方法是从哪来的,我可以告诉你,前面三个正规化的规定是1972年,Dr. E.F. Codd在他的论文“进一步正规化数据库的关系模型中”提出的,其余的规定是经过后来的集合理论和关系数学家理论化的。评论:正所谓物级必反,将表格分得过细有时并不好,因为这样需要将各表进行各种的关联,这会令查询时变得复杂,而且效率也可能降低,这些正规化的规定可以参考,在实际应用时,要根据项目的大小,必要时可以进行一些测试,以设计出更合理的表格结构。




添加到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.