青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

數據庫設計中的五個范式

第一范式:

對于表中的每一行,必須且僅僅有唯一的行值.在一行中的每一列僅有唯一的值并且具有原子性.

(第一范式是通過把重復的組放到每個獨立的表中,把這些表通過一對多關聯聯系起來這種方式來消除重復組的。)

第二范式:

第二范式要求非主鍵列是主鍵的子集,非主鍵列活動必須完全依賴整個主鍵。主鍵必須有唯一性的元素,一個主鍵可以由一個或更多的組成唯一值的列組成。一旦創建,主鍵無法改變,外鍵關聯一個表的主鍵。主外鍵關聯意味著一對多的關系.

(第二范式處理冗余數據的刪除問題。當某張表中的信息依賴于該表中其它的不是主鍵部分的列的時候,通常會違反第二范式。)

第三范式:

第三范式要求非主鍵列互不依賴.

(第三范式規則查找以消除沒有直接依賴于第一范式和第二范式形成的表的主鍵的屬性。我們為沒有與表的主鍵關聯的所有信息建立了一張新表。每張新表保存了來自源表的信息和它們所依賴的主鍵。)

第四范式:

第四范式禁止主鍵列和非主鍵列一對多關系不受約束

()

第五范式:

第五范式將表分割成盡可能小的塊,為了排除在表中所有的冗余.
()

在數據庫設計時,大家應該時刻的注意到這幾個范式。 其中第五范式是最難實現的。但是,還是需要盡量的去實現這些功能。

posted @ 2005-04-30 14:07 空中的風月 閱讀(12126) 評論(29)  編輯 收藏 網摘

clip_image001

 

發表評論

  回復  引用  查看    

#1 2005-04-30 16:29 | mikespook     

理想和現實總是有差距的,有時為了節約成本或加快速度,我們不得不違反這些理想的東西~~~

  回復  引用  查看    

#2 [樓主]2005-04-30 16:57 | Jackie     

這個是當然的,成本與最好效果本來就是相互矛盾的。

  回復  引用  查看    

#3 2005-05-02 17:22 | 聽棠.NET     

我的數據庫設計一般都會考慮到第三范式的,但有一個很現實的違反第三范式的例子,這可能是其他的朋友要注意的。
在進銷存系統中,訂單信息中關聯到好多其他的基本信息,比如:客戶,付款方式,貨運方式等,這些信息是有專門表進行維護的,在下訂單時也是用下拉框選擇的,但在保存訂單信息時,不能只記錄所謂的外鍵ID,而是應該同時記錄名稱等其他的信息。
這是因為訂單不能因為沒有了客戶ID或是付款方式ID而不知道客戶與付款方式了。對于訂單這種客觀存在的事物,是具有一定的歷史性質的,因此在設計時應該與其他的關聯信息可以斷開,這也就是保證了訂單的獨立性。
但比如訂單類型就可以直接關聯ID,因為它是與訂單這個事物時時關聯的,里面的奧妙,大家要在日常的設計中去體會。

  回復  引用  查看    

#4 2005-05-03 16:55 | tongtkk     

對于,聽棠.NET先生說的問題,一般能通過制度來完善,而不是由電腦本身進行完善.

對于很多的管理軟件,制度是很重要的. 不然就沒有"實施"概念了. 大家以為呢?

同時,歡迎你來看我的作品. 謝謝

  回復  引用  查看    

#5 2005-05-08 13:00 | 聽棠.NET     

@tongtkk :
制度??聽你說到這個所謂的制度,那我就明白你是反對我的意見的,你可能還是在設想著用所謂的制度來控制這種問題,但比如貨運地址吧,你是不是認為在刪除時要進行一下判斷,也就是在訂單中使用過的就不能刪除??
那么這批訂單由于時間問題,要移出數據庫進行備份了,結果在這時可以刪除貨運地址,然后有一天客戶想看以前移出的備份數據了,導回來后發現貨運地址沒有了。。。一片驚嘆。。。
我的思想很簡單,要是在實際的業務中,是以實物型式存在的,那么這類東西應該具有一定的獨立性,這個獨立性就跟現實中的單據一樣,不會因為其他基本數據的丟失而無效,真是由于這種實物存在,也就是具有了一定的歷史性,因此違反所謂的第三范式也是理所應當的。

  回復  引用  查看    

#6 2005-05-08 13:37 | tongtkk     

對于你說的備份問題,我表示不能理解,因為數據庫備份不可能只是備份某一個表的數據,而是需要備份很多表的。當然,如果你只是想把這些備份數據存儲在別的地方時,你也可能把備份表里的數據去掉第三范式。(這里特殊情況,因為這樣設計的目的是為了程序服務,而對于程序沒有太大關系的數據,你可以保留自己的想法)。

  回復  引用  查看    

#7 2005-05-08 16:28 | 聽棠.NET     

哎,怎么說你呢:別把無知當個性,沒有貶義,你挺愛思考的,這一點我很欣賞你。
數據庫設計之“有時不得不違背的第三范式”

 

  回復  引用  查看    

#8 [樓主]2005-05-08 17:18 | Jackie     

對于貴作的《數據庫設計之有時不得不違背的第三范式
中寫的很多東西,這本身不存在著違反第三范式的問題,但是你在這里一定要把它拉進來。

比如客戶,付款條款,貨運方式等中,其中客戶是比較重要的角色,當然需要進行分表表達。而付款條款等,只有有一定的條件的情況下,才有可能出現分表的問題。而貨運方式就沒有必要。因為數據與分表基本起不了太多的作用。

第三范式要理解為:訂單與付款方式有一定的關系嗎? 訂單與貨運方式有一定的關系嗎? 如果沒有,就不會違反第三范式。

對于你在上文中不禮貌的寫法,表示強烈反對。如果下次再出現,將刪除你在我這里發表的資料。請注意用詞!


  回復  引用  查看    

#9 2005-06-01 17:02 | 漁家傲     

實際上聽棠.NET先生把數據錄入和數據存儲搞混淆了。
當下訂單出現不存在的客戶,付款方式,貨運方式時,程序應自動提供統一的界面供新增客戶,付款方式,貨運方式等內容,注意這只是界面的統一(訂單數據和客戶,付款方式,貨運方式在一個界面上),但是寄存儲時應將客戶,付款方式,貨運方式等內容存到各自的表中(客戶表,付款方式表,貨運方式表)。訂單標僅保存新增的客戶id,付款方式id,貨運方式id。所以并不違反第三范式。

  回復  引用  查看    

#10 2005-06-09 20:28 | chen     

表是否可從1 NF范式直接導出3 NF范式

  回復  引用  查看    

#11 2005-06-10 18:34 | 簡單生活     

大家可能誤解聽棠描述的應用情況了。

實際上聽棠說的違反第三范式的情況是必須存在的。

以訂單中引用客戶的送貨地址為例,一年前客戶的訂單上的送貨地址就應該是客戶一年前的送貨地址,不能因為客戶現在搬家了,送貨地址改變。然后連一年前的訂單上的送貨地址都變成最新地址,這顯然是不合理的。

所以說,類似于象送貨地址這樣的應用很多,是不是違反三范我不清楚,反正應用上就得這么做。

  回復  引用  查看    

#12 2005-06-19 00:17 | peter     

If you put delivery address to order table, and you never update it with customer's new address, on the surface, you achieve what you want in your sample, but this will cause another problem sometimes. Give you another example: the customer ordered last week and the delivery is ready to go, but the customer told us yesterday his address is changed. Do you still need the addess? I am sure you will. If you do, then this means you have another rule to decide when to update customer's address, if update, how many addresses in orders table you need to update?

In real applications, there are many ways to deal this. One way is to store "the address" in order table, this address means "the address at the time order placing". Over the time, a customer may have many addresses, but in your system, you can decide how you store these addresses. The solution you provide above is to store "address history" in your order table. It all depends on the system, sometimes, it's cost effective doing this way, but sometimes other systems cannot do this way.

Third Normal Form is a guideline to help developers to reduce redundancy. If you say your system is against third normal form, then I am sure this redundancy comes with a cost.

Peter







  回復  引用  查看    

#13 2005-06-21 09:23 | tongtkk     

范式主要的目的是為了使數據庫更加合理化,而不是給數據庫或者業務的一個桎郜。即它是要我們注意方面的事情,而不是因為這個而把業務實現變更了。因此,希望大家注意。 一個東西決對的合適與不合適,只要合業務流程,讓軟件做的更加合理,這就是最好的。

  回復  引用  查看    

#14 2005-06-24 08:49 | JOAN     

R(A,B,C,D,E)中,FD=A—>B,A->C,(C,D)->E)。
問此關系符合第幾范式,請分解。

  回復  引用    

#15 2005-07-15 16:01 | [未注冊用戶]

廣東話來講,那個鬼佬說的很有道理,真不知道他看得懂中文,為什么就寫E文呢。聽棠的說法反映的是一種情況,但是他對于3NF的理解本身就變形了,頂!

  回復  引用    

#16 2005-08-24 14:23 | 尹青山 [未注冊用戶]

在討論這個問題時,首先要弄清應用范式的目標,再考慮為了這些目標應該怎樣使用范式。

范式目標之一:邏輯正確。例如,經理管理部門信息,人事管理員工。如果采用范式分成部門”“員工主子2表,人事管理員工時,只能為員工指定現在存在的合法部門ID。如果不采用范式,部門和員工的信息在一個表中,管理員工時,就可能因為人事疏忽、或程序不完善為員工指定了一個錯誤、不存在的部門名稱。或者同一個部門,在不同的記錄中,簡稱一樣,名稱卻不一樣等等。這樣,公司的部門就被搞亂套了。范式化的數據模型具有健壯性,能夠抵御一定程度的人為和程序的疏忽,保證數據的完整性。

在實際業務邏輯中,會遇到前面幾位提到的例子,是否需要保存冗余的歷史信息,也就是范式中最關鍵的詞匯依賴是否在發生變動時永遠都能夠成立。否則,就不是依賴,不用范式。就這個送貨地址變更例子而言,怎樣看待這個依賴成立,可以站在不同的角度上,短時間段內,還是系統的全壽命內,得出的結論自然不同,每個人的不同觀點在自己的角度上看都是對的,但是最終還是要看業務規則是否要這個依賴

范式目標之二:成本、代價、"cost"。當初制定范式時的代價和現在的代價含義已經大不相同。那時存儲是稀缺資源,需要各種手段節約存儲(Y2K問題就是一個佐證)。但是現在,存儲是極廉價的(無論大機還是微機,擴內存和硬盤的代價遠低于升級CPU或升主頻),而時間和程序員是稀缺資源。采用范式最大的好處是節約存儲,但壞處是做某些復雜查詢時,需要高級的程序員寫出極復雜的多級關聯查詢語句。我曾經為一個范式系統寫過一條select查詢語句,僅一句(含多次關聯、集合等操作)就有近2000字長,如果在DOS下整個一屏幕都顯示不下,天哪!這種典型的范式系統浪費了最稀缺的資源:技術員、開發時間、運行時的等候時間,而且這樣的程序的維護性幾乎是0

另外一個考慮因素是后來引出來的。原來的系統多是OLTP,面向交易處理,插入、刪除、修改操作占多。有實踐工作經驗的人都知道,在這樣的范式系統中,要做靈活復雜的報表有多么痛苦,就算是有各種智能輔助報表工具也是令人遺憾。而現在的系統,決策、分析占了很重要的角色,如果要問數據庫倉庫的分析工具為什么能夠快速做出各種復雜的分析?關鍵就是非范式化。但是我們設計的每個系統都能夠使用OLTP加一個數據庫倉庫這種配置嗎?顯然不現實,在系統中實現一定的非范式化,可以簡化查詢、報表的工作,豐富其功能。

非范式系統的最大的問題是數據的一致性,DBMSKEY & FKEY幫不上忙了,就需要額外的機制來保證。怎樣權衡,還需要實踐,就不是一次能夠講清楚的了。

  回復  引用    

#17 2005-11-20 20:12 | zxprzxpr [未注冊用戶]

初學范式,看了各位大俠的討論,我想請教一個小小的問題
,不知對否?


有一道題目:
班號 學號 姓名 性別 課號 課名 學時 成績 考試時間
2 93 zhang
01 英語 23 98 1223
2 94 liu
04 物理 34 70 1230

逐步滿足各個范式:

我是這樣寫的,不知道有問題嗎?好像第二范式也同時滿足了第三范式???

第一范式:(滿足原子性)
學號(key) 班號 姓名 性別 課號 課名 學時 成績 考試時間

第二范式(非主屬性完全依賴候選關鍵字)
學員信息表:學號(key) 班號 姓名 性別
課程信息表:課號(key) 課名 學時
成績表: 課號(key) 成績 考試時間

  回復  引用    

#18 2005-11-25 00:13 | tongtkk [未注冊用戶]

上面的關系來看,第三范式已經能實現了。因為三個表的各自沒有相互關系。第四范式也實現了。因為主鍵與非主鍵一對多關系受到約束。基本沒有問題。而第五范式可以實現,已經分解到最低層了。

  回復  引用    

#19 2005-12-21 11:08 | cai8845218 [未注冊用戶]

違反范式是否可以簡化查詢?如:訂單系統:為統計某城市某客戶定貨的某產品總量,設有以下表:
〔客戶〕--客戶名稱,客戶id,所在城市
〔訂單〕--客戶id,訂單號碼
〔訂單明細〕--訂單號碼,產品id,定貨數量
請問是否在〔訂單明細〕中加入(所在城市)字段,統計全部定貨數量是否更方便?

  回復  引用  查看    

#20 2006-05-07 17:44 | 月色瘋狂     

@聽棠.NET
你說的那種情況并不是必須違反3nf。關鍵在于,你沒有抽象出歷史版本的概念。只要在訂單中引用客戶資料的歷史版本,就不存在什么必須違反3nf的問題。
我認為這個問題在于設計時對業務概念理解不清。
你需要引用的是客戶資料的歷史信息,而不是客戶現在的信息。

  回復  引用  查看    

#21 2006-05-07 17:45 | 月色瘋狂     

@zxprzxpr
還是不夠好,主鍵應該用無意義的字段。比如用sql server的自動生成的主鍵。

  回復  引用  查看    

#22 2007-04-09 13:57 | yunhuasheng     

@月色瘋狂
說得對。

  回復  引用    

#23 2007-10-08 16:06 | 聽棠.NET@SB [未注冊用戶]

聽棠.NET 簡直就是個白吃,居然還裝高人,SB

  回復  引用    

#24 2007-10-19 09:24 | abcd [未注冊用戶]

哎,怎么說你呢:別把無知當個性,沒有貶義,你挺愛思考的,這一點我很欣賞你。對于聽棠.NET的這句回復我真是莫名其妙,世上沒有絕對正確的東西,殺豬還各有殺法呢!寫了幾篇文章就覺得了不起了呀,要在公司里我早就讓這種人走人了!

  回復  引用  查看    

#25 2008-07-15 20:26 | OK_008     

追求的就是第五范式

  回復  引用    

#26 2008-08-05 14:17 | YYX [未注冊用戶]

我完全明白聽棠是指什么。
其實只要把貨運之類的信息獨立成單獨的表,由人員和訂單分別引用就完全不會出現聽棠所說的問題

  回復  引用    

#27 2008-08-24 13:55 | MarsGe [未注冊用戶]

哈哈,討論的結果,大家終于明白了,3nf是否可以完全遵守。
其實沒遵守3nf的原因是設計者不想或自認為沒辦法遵守或系統其它要求(非業務的,如性能),才放棄3nf

對于第5范式去應用那些存儲這10億、100億行數據的表應該比較合適,不只大家是否認同

  回復  引用  查看    

#28 2008-10-06 17:35 | RandomLife     

我也認為有時候設計的稍微冗余一些能夠極大的提高性能。
但冗余的代價往往是需要程序去保證數據的一致性,需要空間去保存冗余的數據。
這個需要平衡一下。
討論歸討論,不必大動肝火,傷了和氣……

  回復  引用    

#29 2008-10-30 09:44 | 海浪0924 [未注冊用戶]

我比較同意16樓的觀點,其實做表的連接是非常消耗系統資源的,所以有時必要的數據冗余是需要存在的。

 

posted on 2009-06-18 14:19 肥仔 閱讀(772) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久一本精品99久久精品66| 欧美国产精品一区| 久久亚洲风情| 美国十次了思思久久精品导航| 久久久九九九九| 麻豆精品视频在线| 亚洲成色www久久网站| 欧美二区在线| 亚洲片区在线| 日韩一级不卡| 亚洲欧美日韩综合一区| 久久成人精品无人区| 午夜国产一区| 老司机午夜精品视频| 最新成人av网站| 亚洲视频axxx| 久久国产加勒比精品无码| 久久久噜噜噜久噜久久| 欧美精品一区二区三区蜜臀| 国产精品成人播放| 欧美日韩精品免费观看视频| 久久精品国产亚洲一区二区| 六月丁香综合| 欧美日韩在线亚洲一区蜜芽| 国产欧美亚洲一区| 亚洲日本一区二区| 久久国产一区| 91久久精品一区二区别| 欧美一区三区三区高中清蜜桃| 老**午夜毛片一区二区三区| 欧美视频一区二区三区…| 在线免费观看日韩欧美| 亚洲视频二区| 亚洲国产欧美一区二区三区同亚洲| 在线视频欧美日韩| 欧美二区视频| 激情另类综合| 欧美一区二区三区播放老司机 | 精品99视频| 亚洲婷婷在线| 亚洲国产aⅴ天堂久久| 先锋影音一区二区三区| 欧美日韩视频在线第一区| 在线观看一区| 久久久久国产精品午夜一区| 99在线热播精品免费| 欧美高清视频免费观看| 伊人久久婷婷| 久久亚洲不卡| 欧美一区二区视频在线| 国产精品xvideos88| 日韩视频三区| 亚洲二区视频在线| 看片网站欧美日韩| 在线播放亚洲| 欧美h视频在线| 久久9热精品视频| 国产欧美日韩在线视频| 午夜精品在线看| 一区二区三区四区国产| 欧美久久成人| 亚洲美女精品一区| 亚洲国产免费看| 久久午夜精品| 亚洲国产精品一区二区www在线| 久久激情五月婷婷| 欧美中日韩免费视频| 国产精品影片在线观看| 亚洲欧美在线播放| 亚洲尤物在线| 一区视频在线看| 欧美激情在线播放| 欧美精品首页| 亚洲一区久久久| 亚洲视频1区| 国产精品视频内| 久久久精品国产免大香伊| 久久久综合精品| 欧美中文字幕视频在线观看| 国产综合色精品一区二区三区| 久久精品国产综合精品| 久久精彩免费视频| 亚洲精品在线观| 日韩一区二区精品在线观看| 国产精品爱久久久久久久| 亚洲欧洲av一区二区| 亚洲欧美日韩一区二区三区在线观看 | 国产免费成人av| 开元免费观看欧美电视剧网站| 久久在线免费| 亚洲午夜免费视频| 欧美影院久久久| 99视频有精品| 性欧美长视频| 99成人免费视频| 欧美主播一区二区三区| 一区二区三区精品视频在线观看| 亚洲少妇自拍| 亚洲福利精品| 中文有码久久| 亚洲高清一二三区| 亚洲一二三区视频在线观看| 国产综合视频| 日韩一区二区精品| 韩国精品一区二区三区| 99riav国产精品| 1000部国产精品成人观看| 亚洲小视频在线| 99热精品在线观看| 久久久久久黄| 欧美亚洲一区| 欧美日韩岛国| 欧美激情第8页| 国产一区二区黄色| 日韩午夜一区| 亚洲国产日韩欧美综合久久 | 久久综合中文色婷婷| 国产精品视频第一区| 亚洲精品乱码久久久久久蜜桃91| 韩国精品久久久999| 亚洲一区二区精品| 这里只有精品电影| 欧美成人一区在线| 男女av一区三区二区色多| 国产精品普通话对白| 亚洲国产一区二区三区青草影视| 国产一区二区高清视频| 亚洲综合丁香| 亚洲欧美日韩人成在线播放| 欧美精品www在线观看| 欧美成人精品影院| 亚洲高清视频一区| 久久综合电影| 欧美激情偷拍| 日韩天堂av| 欧美日韩一区三区| 亚洲特色特黄| 欧美日韩国产综合久久| 亚洲国产精品专区久久 | 在线视频欧美一区| 欧美日韩一区二区视频在线| 亚洲精品午夜| 亚洲午夜久久久久久久久电影网| 欧美母乳在线| 在线亚洲一区| 欧美亚洲视频一区二区| 国产欧美一区二区在线观看| 欧美伊人久久大香线蕉综合69| 久久精品国产欧美激情| 黄色一区二区在线| 美女国产一区| 99热免费精品| 久久电影一区| 在线播放中文一区| 欧美韩日一区二区| 国产精品99久久久久久久久久久久 | 亚洲免费播放| 亚洲欧美日韩国产综合在线 | 欧美日韩免费一区| 一本色道久久加勒比88综合| 羞羞漫画18久久大片| 红桃视频一区| 欧美日韩精品一区| 欧美在线观看一二区| 亚洲缚视频在线观看| 亚洲免费影视| 亚洲第一在线综合网站| 欧美三级乱人伦电影| 久久精品国产999大香线蕉| 亚洲精品1区2区| 久久精品欧美| 一本色道久久综合亚洲精品按摩 | 久久久亚洲影院你懂的| 亚洲国产视频直播| 欧美在线91| 日韩亚洲成人av在线| 国产网站欧美日韩免费精品在线观看 | 亚洲国产va精品久久久不卡综合| 亚洲一区日本| 亚洲精品欧美极品| 国产日韩欧美成人| 欧美女同在线视频| 久久久久久日产精品| 一区二区三区国产精品| 欧美阿v一级看视频| 欧美一区二区三区四区视频| 日韩午夜激情| 亚洲国产精品久久久久婷婷老年| 国产精品久久久久一区二区| 欧美成人自拍| 久久亚洲免费| 欧美专区第一页| 亚洲一区二区三区影院| 欧美中文字幕不卡| …久久精品99久久香蕉国产 | 亚洲国产婷婷香蕉久久久久久99| 国产精品一二一区| 午夜精品久久久久| 久久夜色精品国产噜噜av| 国产视频一区免费看|