当前位置--> 首 页 --> 文 章 -->SourceCode

※阅读文章※

[原创]关系型数据库设计 -- 带例子详解


作者: kev [文章出自: www.phpx.com]

作者: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。

过了这个周末看看大家反应如何再说
待续.....



happyBot自动摘抄自喜悦村精华帖,查看原帖获得完整内容

文章加入时间: 2004-11-17 15:09:16 责任编辑: w9   (3286 人次查阅)
 
Copyright © 1998-2004 中国PHP联盟 All rights reserved.