第一范式:
對(duì)于表中的每一行,必須且僅僅有唯一的行值.在一行中的每一列僅有唯一的值并且具有原子性.
(第一范式是通過(guò)把重復(fù)的組放到每個(gè)獨(dú)立的表中,把這些表通過(guò)一對(duì)多關(guān)聯(lián)聯(lián)系起來(lái)這種方式來(lái)消除重復(fù)組的。)
第二范式:
第二范式要求非主鍵列是主鍵的子集,非主鍵列活動(dòng)必須完全依賴整個(gè)主鍵。主鍵必須有唯一性的元素,一個(gè)主鍵可以由一個(gè)或更多的組成唯一值的列組成。一旦創(chuàng)建,主鍵無(wú)法改變,外鍵關(guān)聯(lián)一個(gè)表的主鍵。主外鍵關(guān)聯(lián)意味著一對(duì)多的關(guān)系.
(第二范式處理冗余數(shù)據(jù)的刪除問(wèn)題。當(dāng)某張表中的信息依賴于該表中其它的不是主鍵部分的列的時(shí)候,通常會(huì)違反第二范式。)
第三范式:
第三范式要求非主鍵列互不依賴.
(第三范式規(guī)則查找以消除沒(méi)有直接依賴于第一范式和第二范式形成的表的主鍵的屬性。我們?yōu)闆](méi)有與表的主鍵關(guān)聯(lián)的所有信息建立了一張新表。每張新表保存了來(lái)自源表的信息和它們所依賴的主鍵。)
第四范式:
第四范式禁止主鍵列和非主鍵列一對(duì)多關(guān)系不受約束
()
第五范式:
第五范式將表分割成盡可能小的塊,為了排除在表中所有的冗余.
()
在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),大家應(yīng)該時(shí)刻的注意到這幾個(gè)范式。 其中第五范式是最難實(shí)現(xiàn)的。但是,還是需要盡量的去實(shí)現(xiàn)這些功能。
posted @ 2005-04-30 14:07 空中的風(fēng)月 閱讀(12126) 評(píng)論(29) 編輯 收藏 網(wǎng)摘

發(fā)表評(píng)論
回復(fù) 引用 查看
#1樓 2005-04-30 16:29 |
回復(fù) 引用 查看
#2樓 [樓主]2005-04-30 16:57 |
回復(fù) 引用 查看
#3樓 2005-05-02 17:22 |
回復(fù) 引用 查看
#4樓 2005-05-03 16:55 |
回復(fù) 引用 查看
#5樓 2005-05-08 13:00 |
制度??聽(tīng)你說(shuō)到這個(gè)所謂的“制度”,那我就明白你是反對(duì)我的意見(jiàn)的,你可能還是在設(shè)想著用所謂的“制度”來(lái)控制這種問(wèn)題,但比如貨運(yùn)地址吧,你是不是認(rèn)為在刪除時(shí)要進(jìn)行一下判斷,也就是在訂單中使用過(guò)的就不能刪除??
那么這批訂單由于時(shí)間問(wèn)題,要移出數(shù)據(jù)庫(kù)進(jìn)行備份了,結(jié)果在這時(shí)可以刪除貨運(yùn)地址,然后有一天客戶想看以前移出的備份數(shù)據(jù)了,導(dǎo)回來(lái)后發(fā)現(xiàn)貨運(yùn)地址沒(méi)有了。。。一片驚嘆。。。
我的思想很簡(jiǎn)單,要是在實(shí)際的業(yè)務(wù)中,是以實(shí)物型式存在的,那么這類東西應(yīng)該具有一定的“獨(dú)立性”,這個(gè)“獨(dú)立性”就跟現(xiàn)實(shí)中的單據(jù)一樣,不會(huì)因?yàn)槠渌緮?shù)據(jù)的丟失而無(wú)效,真是由于這種實(shí)物存在,也就是具有了一定的“歷史性”,因此違反所謂的“第三范式”也是理所應(yīng)當(dāng)?shù)摹?/span>
回復(fù) 引用 查看
#6樓 2005-05-08 13:37 |
回復(fù) 引用 查看
#7樓 2005-05-08 16:28 |
回復(fù) 引用 查看
#8樓 [樓主]2005-05-08 17:18 |
回復(fù) 引用 查看
#9樓 2005-06-01 17:02 | 漁家傲
回復(fù) 引用 查看
#10樓 2005-06-09 20:28 | chen
回復(fù) 引用 查看
#11樓 2005-06-10 18:34 |
回復(fù) 引用 查看
#12樓 2005-06-19 00:17 |
回復(fù) 引用 查看
#13樓 2005-06-21 09:23 | tongtkk
回復(fù) 引用 查看
#14樓 2005-06-24 08:49 | JOAN
中,FD=(A—>B,A->C,(C,D)->E)。
問(wèn)此關(guān)系符合第幾范式,請(qǐng)分解。
回復(fù) 引用
#15樓 2005-07-15 16:01 | 評(píng) [未注冊(cè)用戶]
回復(fù) 引用
#16樓 2005-08-24 14:23 | 尹青山 [未注冊(cè)用戶]
回復(fù) 引用
#17樓 2005-11-20 20:12 | zxprzxpr [未注冊(cè)用戶]
回復(fù) 引用
#18樓 2005-11-25 00:13 | tongtkk [未注冊(cè)用戶]
回復(fù) 引用
#19樓 2005-12-21 11:08 | cai8845218 [未注冊(cè)用戶]
回復(fù) 引用 查看
#20樓 2006-05-07 17:44 |
聽(tīng)棠.NET
你說(shuō)的那種情況并不是必須違反3nf。關(guān)鍵在于,你沒(méi)有抽象出歷史版本的概念。只要在訂單中引用客戶資料的歷史版本,就不存在什么必須違反3nf的問(wèn)題。
我認(rèn)為這個(gè)問(wèn)題在于設(shè)計(jì)時(shí)對(duì)業(yè)務(wù)概念理解不清。
你需要引用的是客戶資料的歷史信息,而不是客戶現(xiàn)在的信息。
回復(fù) 引用 查看
#21樓 2006-05-07 17:45 |
還是不夠好,主鍵應(yīng)該用無(wú)意義的字段。比如用sql server的自動(dòng)生成的主鍵。
回復(fù) 引用 查看
#22樓 2007-04-09 13:57 |
月色瘋狂
說(shuō)得對(duì)。
回復(fù) 引用
#23樓 2007-10-08 16:06 | 聽(tīng)棠.NET@SB [未注冊(cè)用戶]
回復(fù) 引用
#24樓 2007-10-19 09:24 | abcd [未注冊(cè)用戶]
回復(fù) 引用 查看
#25樓 2008-07-15 20:26 |
回復(fù) 引用
#26樓 2008-08-05 14:17 | YYX [未注冊(cè)用戶]
回復(fù) 引用
#27樓 2008-08-24 13:55 | MarsGe [未注冊(cè)用戶]
回復(fù) 引用 查看
#28樓 2008-10-06 17:35 |
回復(fù) 引用
#29樓 2008-10-30 09:44 | 海浪0924 [未注冊(cè)用戶]