Loading...

当前位置:资讯中心主页 >PHP编程 >文章内容

  • 数据库设计技巧(三)
  • 来源:作者: 发布时间:2007-12-19 18:03:55
    • 域名注册

    • 域名惊喜价格 cn域名1元注册
    • com域名39.9

      虚拟主机

    • 主机按月支付,低至19元/月
    • 超大流量,可开子站点

      VPS主机

    • 特惠VPS168元/月,4-8M独享带宽保证
    • 独立操作系统,无限开站点
    作者:allsky

      在定义第四个正规化的形式前,我想首先提一下三种基本的数据关系:一对一,一对多和多对多。我们回头看一下经
    过第一个正规化的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在他的论文“进一步正规化数据库的关系模型中”提
    出的,其余的规定是经过后来的集合理论和关系数学家理论化的。评论:正所谓物级必反,将表格分得过细有时并不好,
    因为这样需要将各表进行各种的关联,这会令查询时变得复杂,而且效率也可能降低,这些正规化的规定能参考,在实
    际应用时,要根据项目的大小,必要时能进行一些测试,以设计出更合理的表格结构。



  • 以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。

      “华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为25大IDC服务商之一。

    华夏名网网址导航: 虚拟主机 双线主机 主机 域名注册 cn域名 域名 服务器租用 酷睿服务器 vps vps主机

  • (阅读次数:16)
  • 上一篇: SQL语言快速入门(一)    下一篇: 数据库设计技巧(二)
  • [收藏] [推荐] [评论] [打印本页] [返回上一页][关闭窗口]
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。