第一范式:
对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性.
(第一范式是通过把重复的组放到每个独立的表中,把这些表通过一对多关联联系起来这种方式来消除重复组的。)
第二范式:
第二范式要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键。主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。一旦创建,主键无法改变,外键关联一个表的主键。主外键关联意味着一对多的关系.
(第二范式处理冗余数据的删除问题。当某张表中的信息依赖于该表中其它的不是主键部分的列的时候,通常会违反第二范式。)
第三范式:
第三范式要求非主键列互不依赖.
(第三范式规则查找以消除没有直接依赖于第一范式和第二范式形成的表的主键的属性。我们为没有与表的主键关联的所有信息建立了一张新表。每张新表保存了来自源表的信息和它们所依赖的主键。)
第四范式:
第四范式禁止主键列和非主键列一对多关系不受约束
()
第五范式:
第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余.
()
在数据库设计时,大家应该时刻的注意到这几个范式。 其中第五范式是最难实现的。但是,还是需要尽量的去实现这些功能。
posted @ 2005-04-30 14:07 空中的风月 阅读(12126) 评论(29) 编辑 收藏 网摘
发表评论
回复 引用 查看
#1楼 2005-04-30 16:29 |
回复 引用 查看
#2楼 [楼主]2005-04-30 16:57 |
回复 引用 查看
#3楼 2005-05-02 17:22 |
回复 引用 查看
#4楼 2005-05-03 16:55 |
回复 引用 查看
#5楼 2005-05-08 13:00 |
制度??听你说到这个所谓的“制度”,那我就明白你是反对我的意见的,你可能还是在设想着用所谓的“制度”来控制这种问题,但比如货运地址吧,你是不是认为在删除时要进行一下判断,也就是在订单中使用过的就不能删除??
那么这批订单由于时间问题,要移出数据库进行备份了,结果在这时可以删除货运地址,然后有一天客户想看以前移出的备份数据了,导回来后发现货运地址没有了。。。一片惊叹。。。
我的思想很简单,要是在实际的业务中,是以实物型式存在的,那么这类东西应该具有一定的“独立性”,这个“独立性”就跟现实中的单据一样,不会因为其他基本数据的丢失而无效,真是由于这种实物存在,也就是具有了一定的“历史性”,因此违反所谓的“第三范式”也是理所应当的。
回复 引用 查看
#6楼 2005-05-08 13:37 |
回复 引用 查看
#7楼 2005-05-08 16:28 |
回复 引用 查看
#8楼 [楼主]2005-05-08 17:18 |
回复 引用 查看
#9楼 2005-06-01 17:02 | 渔家傲
回复 引用 查看
#10楼 2005-06-09 20:28 | chen
回复 引用 查看
#11楼 2005-06-10 18:34 |
回复 引用 查看
#12楼 2005-06-19 00:17 |
回复 引用 查看
#13楼 2005-06-21 09:23 | tongtkk
回复 引用 查看
#14楼 2005-06-24 08:49 | JOAN
中,FD=(A—>B,A->C,(C,D)->E)。
问此关系符合第几范式,请分解。
回复 引用
#15楼 2005-07-15 16:01 | 评 [未注册用户]
回复 引用
#16楼 2005-08-24 14:23 | 尹青山 [未注册用户]
回复 引用
#17楼 2005-11-20 20:12 | zxprzxpr [未注册用户]
回复 引用
#18楼 2005-11-25 00:13 | tongtkk [未注册用户]
回复 引用
#19楼 2005-12-21 11:08 | cai8845218 [未注册用户]
回复 引用 查看
#20楼 2006-05-07 17:44 |
听棠.NET
你说的那种情况并不是必须违反3nf。关键在于,你没有抽象出历史版本的概念。只要在订单中引用客户资料的历史版本,就不存在什么必须违反3nf的问题。
我认为这个问题在于设计时对业务概念理解不清。
你需要引用的是客户资料的历史信息,而不是客户现在的信息。
回复 引用 查看
#21楼 2006-05-07 17:45 |
还是不够好,主键应该用无意义的字段。比如用sql server的自动生成的主键。
回复 引用 查看
#22楼 2007-04-09 13:57 |
月色疯狂
说得对。
回复 引用
#23楼 2007-10-08 16:06 | 听棠.NET@SB [未注册用户]
回复 引用
#24楼 2007-10-19 09:24 | abcd [未注册用户]
回复 引用 查看
#25楼 2008-07-15 20:26 |
回复 引用
#26楼 2008-08-05 14:17 | YYX [未注册用户]
回复 引用
#27楼 2008-08-24 13:55 | MarsGe [未注册用户]
回复 引用 查看
#28楼 2008-10-06 17:35 |
回复 引用
#29楼 2008-10-30 09:44 | 海浪0924 [未注册用户]