数据库设计技巧(二)

转载 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输入,或者更多一点。这种情况下,我们的数据库还可以进行下一级别的优化--第四步,对于大多数的开

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

 

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

上海驾校科目二考试的几个至关重要技巧

1.  左脚跟在地上是一个支点,不要前后滑动。 2.  要根据车速的快慢,左脚随时上下轻踏离合器,千万注意不要过快抬高离合器,以防止熄火。 3.  考试车左右反光镜、前窗玻璃如不干净,记得花些时间...
  • thy822
  • thy822
  • 2016年05月13日 11:09
  • 1393

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

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

如何把握二面?五个小技巧帮助你把抓住工作机会

收到二面通知,意味着已经离梦想的职位更近了一步,同时也表明你将面对更高层的上司,接受精英之间的PK。如何把握二面?这里有5个方法给你建议。 恭喜你——你已经获得与你的梦想雇主的第二次面试机会了,你可能...
  • tanguang_honesty
  • tanguang_honesty
  • 2013年02月26日 09:36
  • 580

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

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

驾校学车,科目二坡路定点停车和起步操作技巧!

前方就是上坡路定点停车与陡坡起步考试科目地点      驾车在上坡路定点停车与陡坡起步,可以提高使用档位和离合器的能力,以适应在上坡路段固定地点靠边停稳车辆和等候放行时的操作需要。   考试内容...
  • thy822
  • thy822
  • 2016年04月25日 11:15
  • 3072

Eclipse日常中最实用的技巧,不看后悔哦!

1、给Eclipse添加更方便的提示功能: 首先,默认情况下,Eclipse默认是通过一个.来进行提示的,这样做有些不太方便,如果随便写一个字母就有对应的提示,可以做如下操作: Windows--pe...
  • weiguolong0306
  • weiguolong0306
  • 2015年10月29日 21:42
  • 4853

spring MVC的一些小技巧

spring MVC的一些小技巧1,在controller中获取指定name的bean/*** * * @param request * @param beanName...
  • hw1287789687
  • hw1287789687
  • 2015年04月03日 00:00
  • 1763

Visio技巧总结

Visio技巧总结 在画组织结构图的时候:文件—新建—商务—组织结构图即可快速的画出模板所需要的东西 1、Visio画图时,两根直线交叉时,总是默认会出现一个跨线的标志,很是不爽,去除方法:选中线...
  • qq10593994
  • qq10593994
  • 2015年07月27日 19:04
  • 3389

30个java编程小技巧

Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在。 有超过30亿的设备是运行在Java之上的。根据...
  • my_name_nb
  • my_name_nb
  • 2017年03月28日 21:33
  • 970

linux 日志常用查看技巧

场景1: 日志实时监控tail -f file.txt场景2:查询最后20行,并且查找关键字 baidu.comtail -n 20 | grep 'baidu.com'场景3:查询最后20行,并且查...
  • zw235345721
  • zw235345721
  • 2017年04月26日 11:28
  • 478
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库设计技巧(二)
举报原因:
原因补充:

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