数据库设计技巧(二)

转载 2004年09月06日 13:47:00

数据库设计技巧(二)

--------------------------------------------------------------------------------

 作者:allsky  

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 



  如上所示,我们创建了独立的表格,users表中的主键userid现在与url表中的foreign key relUserId关联。现在的情

况好象已经得到了明显的改善。不过,如果我们要为ABC公司加入一个员工记录呢?或者更多,200个?这样我们就必须重

复使用公司名和地址,这明显不够冗余。因此我们将应用第三级正规化方法:



  第三级正规化形式



  1.消除不依赖于该键的字段



  公司名及地址与User Id都是没有关系的,因此它们应用拥有自己的公司Id:



  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 relUserId url 



  1 1 abc.com 



  2 1 xyz.com 



  3 2 abc.com 



  4 2 xyz.com 



  这样我们就将companies表中的主键comId和users表中名字为relCompId的foreign key关联起来,就算为ABC公司加入

200个员工,在companies中也只有一条记录。我们的users和urls表可以不断地扩大,而无需担心插入不必要的数据。大部

分的开发者都认为经过三步的正规化就足够了,这个数据库的设计已经可以很方便地处理整个企业的负担,此看法在大多

数的情况下是正确的。



  我们可以留意一下URL的字段--你注意到数据的冗余了吗?如果给用户用户输入这些url数据的HTML页面是一个文本

框,可任意输入的话,这并没有问题,两个用户输入同样收藏夹的概率较少,不过,如果是通过一个下拉式的菜单,只让

用户选择两个url输入,或者更多一点。这种情况下,我们的数据库还可以进行下一级别的优化--第四步,对于大多数的开

发者来说,这一步都是忽略的,因为它要依赖一个很特别的关系--一个多对多的关系,这在我们的应用中是还没有遇到过的.

 

待续..............

数据库设计60个技巧

Page 1 © CNET Networks Inc. 2002www.zdnet.com.cn/developer数据库设计指南如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要...
  • zhouruijie2007
  • zhouruijie2007
  • 2006年10月06日 17:02
  • 836

科目二:倒车入库考试技巧详细图解

一、准备工作   1、上车后,先调整好座椅的前后位置,靠背也调整到舒适的角度,以保证能自由的转动方向盘和看到车头的引擎盖为最佳。   2、调整左右后视镜,使镜中车身出现在镜子约1/3位置,...
  • thy822
  • thy822
  • 2016年04月15日 13:55
  • 909

浅谈数据库设计技巧 (转)

 说到数据库,我认为不能不先谈数据结构。1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是...
  • jackpk
  • jackpk
  • 2008年07月06日 16:28
  • 480

数据库设计二《函数依赖和三范式》

函数依赖: 定义:R(U)是在属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能关系r,r中的不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y,或者Y函...
  • u010928364
  • u010928364
  • 2015年04月30日 23:13
  • 902

web数据库设计过程

1、需求分析 2、概念结构设计 a、实体联系图 3、逻辑结构设计 生成关系结构模式,依据联系,确定关系结构模式 4、物理设计...
  • sinat_28729797
  • sinat_28729797
  • 2015年10月11日 11:38
  • 579

开发宝典:数据库设计技巧,你知道几个?

数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。在数据库的设计过程中还是存在一些...
  • u013126379
  • u013126379
  • 2016年09月08日 21:43
  • 3773

科目二倒车入库学车技巧_学车必看_保过。

科目二倒车入库技巧      科目二倒车入库是场内项目的最难点,通过本人的学车过程,觉得只要你认真练习,认真总结,感觉倒车入库其实也并不难。下面把本人的练习方法和各位学友交流。 点位的掌握   ...
  • thy822
  • thy822
  • 2016年04月16日 14:54
  • 2072

原创博文腾讯分分彩后二技巧分析与合乐分分技巧实战总结-腾讯分分彩后一技巧

原创博文:腾讯分分彩与合乐分分彩技巧技巧分析与实践(精)接下来和大家交流分析分分彩和腾讯分分彩的玩家形态集锦,什么样子的人更好的需要去调整内心的自控心态,如何更好的把握心态,正所谓,心态至关重要,心态...
  • txffc8156128
  • txffc8156128
  • 2018年03月03日 16:11
  • 223

科目二经验之谈 10小时必过秘笈

我认为“学车学车,其实就是学踩离合器”。只要把离合器运用得熟练了,其他的都是小菜一碟。所以,我们要花5小时强化训练踩离合器。 踩离合器绝招:不是象教练说的,慢慢松离合器,等车动了就稳住不动,这是...
  • thy822
  • thy822
  • 2016年04月20日 21:47
  • 891

数据库设计技巧

 1. 设计数据库之前(需求分析阶段)    1) 理解客户需求,询问用户如何看待未来需求变化。让客户解释其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。    2) 了解...
  • danforn
  • danforn
  • 2007年01月17日 16:24
  • 715
收藏助手
不良信息举报
您举报文章:数据库设计技巧(二)
举报原因:
原因补充:

(最多只允许输入30个字)