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