考试网 >> IT认证 >> 水平 >> 软件指导 >> 数据库设计三大范式应用实例剖析

数据库设计三大范式应用实例剖析

发布时间:2006-06-28 05:00     点击:
分页:上一页  1 2 3 [4] 5  下一页

   (1) 用户:用户名,email,主页,电话,联系地址

   (2) 帖子:发帖标题,发帖内容,回复标题,回复内容

   第一次我们将数据库设计为仅仅存在表:

用户名 email 主页 电话 联系地址 发帖标题 发帖内容 回复标题 回复内容


   这个数据库表符合第一范式,但是没有任何一组候选关键字能决定数据库表的整行,唯一的关键字段用户名也不能完全决定整个元组。我们需要增加"发帖ID"、"回复ID"字段,即将表修改为:

用户名 email 主页 电话 联系地址 发帖ID 发帖标题 发帖内容 回复ID 回复标题 回复内容


   这样数据表中的关键字(用户名,发帖ID,回复ID)能决定整行:

   (用户名,发帖ID,回复ID) → (email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容)

   但是,这样的设计不符合第二范式,因为存在如下决定关系:

   (用户名) → (email,主页,电话,联系地址)

   (发帖ID) → (发帖标题,发帖内容)

   (回复ID) → (回复标题,回复内容)

   即非关键字段部分函数依赖于候选关键字段,很明显,这个设计会导致大量的数据冗余和操作异常。

   我们将数据库表分解为(带下划线的为关键字):

   (1) 用户信息:用户名,email,主页,电话,联系地址

   (2) 帖子信息:发帖ID,标题,内容

   (3) 回复信息:回复ID,标题,内容

   (4) 发贴:用户名,发帖ID

   (5) 回复:发帖ID,回复ID

   这样的设计是满足第1、2、3范式和BCNF范式要求的,但是这样的设计是不是最好的呢?

   不一定。

   (1) 用户信息:用户名,email,主页,电话,联系地址
分页:上一页  1 2 3 [4] 5  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有