數(shù)據(jù)庫應當適當冗余
"遵守標準的數(shù)據(jù)庫具有以下特點:有一組表專門存放通過鍵連接起來的關聯(lián)數(shù)據(jù)。比方說,某個存放客戶及其有關定單的 3NF 數(shù)據(jù)庫就可能有兩個表:Customer 和 Order。Order 表不包含定單關聯(lián)客戶的任何信息,但表內(nèi)會存放一個鍵值,該鍵指向 Customer 表里包含該客戶信息的那一行。更高層次的標準化也有,但更標準是否就一定更好呢?答案是不一定。事實上,對某些項目來說,甚至就連 3NF 都可能給數(shù)據(jù)庫引入太高的復雜性。
為了效率的緣故,對表不進行標準化有時也是必要的,這樣的例子很多。曾經(jīng)有個開發(fā)餐飲分析軟件的活就是用非標準化表把查詢時間從平均 40 秒降低到了兩秒左右。雖然我不得不這么做,但我絕不把數(shù)據(jù)表的非標準化當作當然的設計理念。而具體的操作不過是一種派生。所以如果表出了問題重新產(chǎn)生非標準化的表是完全可能的。"
設計數(shù)據(jù)庫的時候要注意各個字段實際的意義, 比如說你做的定單, 如果該業(yè)務員換了單位, 你還會去修改他做的所有定單嗎? 這種事情是沒有的也是不應該的, 定單就是要反映做好時的狀況, 所以, 姓名在做定單的時候一定要填進去, 一旦定單簽好了, 無論ID有什么變化都不應該再做改動, 從這個意義上說, 定單表里一定要有業(yè)務員姓名的項目, 以便如實地反映出定單做好時的狀態(tài).
比較好的書籍:
<數(shù)據(jù)庫系統(tǒng)概念>
posted on 2009-06-18 14:14 肥仔 閱讀(228) 評論(0) 編輯 收藏 引用 所屬分類: 數(shù)據(jù)庫

