当前位置:资讯中心主页 >PHP编程 >文章内容
- 数据库设计技巧(三)
- 来源:作者: 发布时间:2007-12-19 18:03:55
-
作者:allsky
- 域名惊喜价格 cn域名1元注册
- com域名39.9元
域名注册
- 主机按月支付,低至19元/月
- 超大流量,可开子站点
虚拟主机
- 特惠VPS168元/月,4-8M独享带宽保证
- 独立操作系统,无限开站点
VPS主机
在定义第四个正规化的形式前,我想首先提一下三种基本的数据关系:一对一,一对多和多对多。我们回头看一下经
过第一个正规化的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服务商之一。 - (阅读次数:16)
- 上一篇: SQL语言快速入门(一) 下一篇: 数据库设计技巧(二)
- [
收藏] [
推荐] [
评论] [打印本页] [返回上一页][关闭窗口]


