喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
 14  1/2  1  2  > 
     
标题: [原创]关系型数据库设计 -- 带例子详解  
 
kev (kev)
高级会员
Rank: 4
老会员



UID 27455
精华 1
积分 524
帖子 504
金钱 514 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2004-4-1
状态 离线
[原创]关系型数据库设计 -- 带例子详解

作者:Kevin
基于对数据库有一点认识,拿出来和大家分享一下。
因为只是凭记忆写出来,错误在所难免,请大家指正和请勿转贴

例子:一张零售表单,基本内容如下
日期,客户名,客户地址,客户电话,总金额,货物名,数量,单价,此货物总价

设计步骤:
步骤一
1NF - First Normal Form
在这一步中,主要是从上表中把重复的东西分离,另立为一张表。
很明显,“货物名,数量,单价,此货物总价“ 这四个会重复出现的。
如在零售总表中肯定会见到如下的情况
货物名1,数量1,单价1,此货物总价1
货物名2,数量2,单价2,此货物总价2
货物名3,数量3,单价3,此货物总价3
......

对所有的表都要做这样的分离后,再对每个表加上(指定)一个主键(primary key, 简称 pk)后,我们就完成了这一步了。
现在这个例子我们有两张表, 用括号的是外加的, 带星号(*)的是pk。
总表:字段如下
(order_id*), 日期,客户名,客户地址,客户电话,总金额
分离出的表 - 货物表:字段如下
(product_id*), 货物名,数量,单价,此货物总价

步骤二
2NF - Second Normal Form
在这一步中,对每一个表中的字段作分析,主要是两种情况 - 把计算的字段和与pk 无关的字段分离
如在总表中,“客户名,客户地址,客户电话“ 明显就不属于pk - order_id 的,所以要把他们分开。
另外,“总金额“ 和 “此货物总价“ 是通过计算出来的,所以应把他们也从表中删除,但为了方便日后的设计,可以在设计阶段把他们保留。但要在后面加上(计算)以作识别。
****要提醒一点的就是对分离出来的新表要从第一步重新分析,以保证他们符合1NF 的规定***
现在的表如下,共 3 个
总表:字段如下
(order_id*), 日期,总金额(计算)
货物表:字段如下
(product_id*), 货物名,数量,单价,此货物总价(计算)
分离出的表 - 客户表:字段如下
(customer_id*),客户名,客户地址,客户电话

这一步后,我们就可以看到了一个比较清晰的总体了。下一步是 3NF。

过了这个周末看看大家反应如何再说
待续.....
2004-7-24 10:26 PM#1
查看资料  发短消息  顶部
 
Tung (Tung)
中级会员
Rank: 3Rank: 3
老会员



UID 23509
精华 0
积分 329
帖子 328
金钱 329 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2003-9-27
状态 离线
[推荐阅读] mysql问题!
支持一下原创
2004-7-24 10:29 PM#2
查看资料  访问主页  发短消息  顶部
 
xningu (xningu)
注册会员
Rank: 2
中级会员



UID 9218
精华 0
积分 153
帖子 155
金钱 153 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2001-8-17
状态 离线
[推荐阅读] 文本问题,在线等候
我还想看4NF了,顶一下
2004-7-24 10:35 PM#3
查看资料  发短消息  QQ . .   ICQ 状态  顶部
 
kev (kev)
高级会员
Rank: 4
老会员



UID 27455
精华 1
积分 524
帖子 504
金钱 514 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2004-4-1
状态 离线
[推荐阅读] <大田之窗>30兆国内全能asp空间
其实一般去到3NF 的数据库已经比较好的了。4NF 和 5NF 有时也会用到,但对我的例子来说就没有4NF 和 5NF。如果大家有兴趣的话也可以讲讲4NF 和 5NF。
2004-7-24 10:43 PM#4
查看资料  发短消息  顶部
 
水若寒 (水若寒)
金牌会员
Rank: 6Rank: 6
高级会员



UID 23660
精华 3
积分 1146
帖子 1088
金钱 1116 喜悦币
威望 30
人脉 0
阅读权限 70
注册 2003-10-4
来自 广东云浮
状态 离线
[推荐阅读] Bartender条形码打印软件
支持原创!
2004-7-25 02:59 AM#5
查看资料  发短消息  QQ . .   顶部
 
yhlong (yhlong)
金牌会员
Rank: 6Rank: 6
高级会员



UID 10030
精华 3
积分 1400
帖子 1338
金钱 1370 喜悦币
威望 30
人脉 0
阅读权限 70
注册 2001-11-2
来自 山东烟台
状态 离线
[推荐阅读] 怎样得到服务器端的ip 地址??
支持原创,讲得不错!
2004-7-25 09:30 AM#6
查看资料  发短消息  顶部
 
shelly0577 (shelly0577)
金牌会员
Rank: 6Rank: 6
高级会员


UID 18493
精华 0
积分 1733
帖子 1736
金钱 1709 喜悦币
威望 0
人脉 24
阅读权限 70
注册 2003-2-21
状态 离线
[推荐阅读] 如何在PHP中使用opendir打开网上邻居电脑目录
嗯, 有关复杂些的数据库设计,请多谈谈经验。~~~~~~~~
2004-7-25 09:38 AM#7
查看资料  访问主页  Blog  发短消息  顶部
 
netorg (netorg)
金牌会员
Rank: 6Rank: 6
资深会员



UID 25606
精华 0
积分 1243
帖子 1287
金钱 1243 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-1-4
状态 离线
[推荐阅读] 关于mysql的问题
泛式设计.



巴壁虎:http://www.babihu.com
2004-7-25 09:46 AM#8
查看资料  访问主页  发短消息  顶部
 
backbone (backbone)
金牌会员
Rank: 6Rank: 6
老会员



UID 24209
精华 0
积分 1232
帖子 1232
金钱 1232 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2003-10-29
状态 离线
[推荐阅读] 表格的边框为什么对不齐?
毕业的时候专来书全丢了:crying:
正想学4nf跟5nf呢
及时雨啊:p
谢谢,握个手先 ;)
2004-7-25 10:05 AM#9
查看资料  发短消息  顶部
 
kev (kev)
高级会员
Rank: 4
老会员



UID 27455
精华 1
积分 524
帖子 504
金钱 514 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2004-4-1
状态 离线
[推荐阅读] 大家来讨论mysql数据库的优化问题


QUOTE:
最初由 shelly0577 发布
[B]嗯, 有关复杂些的数据库设计,请多谈谈经验。~~~~~~~~ [/B]
其实我个人认为要是数据库达到4NF的话已经很完整的了,可以适用于小、中型的企业的应用。
至于复杂的数据库(如银行系统),那就要凭经验和具体情况了,如增加一些冗余字段,或把一个大表分成若干个等。
对于更大的数据库,那可能就要更先进的理论,我只听说过一种叫data warehouse(数据仓库)的东西,不知哪位能出来说一说
2004-7-25 01:03 PM#10
查看资料  发短消息  顶部
 14  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.030811 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP