登录发现更多内容
首页
分类
目录
索引
标签
酷站
用户名
Email
自动登录
找回密码
密码
登录
成为会员
只需一步, 快速开始
登录
立即登录
立即注册
其他登录
QQ
微信
新首页
Portal
观海听潮
小百科
创业沙龙
关于我们
酷站
科技资讯
搜索
搜索
本版
帖子
用户
活动
好友
帖子
收藏
道具
勋章
任务
动态
记录
门户
导读
排行榜
设置
我的收藏
退出
首页
›
快活林
›
猿氏悟语
›
数据库设计技巧(二)
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋
返回列表
数据库设计技巧(二)
[ 复制链接 ]
frank
2009-9-13 12:11:46
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输入,或者更多一点。这种情况下,我们的数据库还可以进行下一级别的优化--第四步,对于大多数的开
发者来说,这一步都是忽略的,因为它要依赖一个很特别的关系--一个多对多的关系,这在我们的应用中是还没有遇到过的.
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
跟贴 Reply
本版积分规则
回帖后跳转到最后一页
综合
最新
热度
发表评论
浏览过的版块
创业茶馆-极客世界
公关传播
电商小报
frank
关注
主题数10
数据库设计技巧(三)
阅读 74935
PHP后门的隐藏技巧测试报告
阅读 73192
数据库设计技巧(一)
阅读 72938
发布新话题
小帖士
如果你不是特别对他的每一句话感兴趣,不要随意用"关注"人的功能,因为关注以后,他的所有发帖回帖都会以通知的方式提醒你的!
统计信息
会员数: 4661 个
话题数: 8709 篇
巅峰数: 8 人
首页
分类
目录
索引
我的
返回顶部