数据库设计新手容易掉进的陷阱(不断更新中)
因為要幫同學做個電子商務的網(wǎng)站,不得不把從畢業(yè)起就扔掉的數(shù)據(jù)庫設計實現(xiàn)重新?lián)炝似饋怼?/p>
話說從畢業(yè)到現(xiàn)在十幾年的時間,自己在編程方面沒多少長進,天天寫的也都是些業(yè)務邏輯代碼,想想也真是為自己嘆一口氣。
不管怎么說,以現(xiàn)在這個為契機重新開始吧。
廢話少說直接進入正題,下面列出的都是我走的彎路,在這里匯總整理一下。
(其實都是些很基礎(chǔ)的東西,因為我等于是從0開始直接上手,以賽代練,所以走彎路ms也是不可避免的了。。。)
1.在設計的時候要注意unique屬性的設定。
我犯的錯誤是,沒有意識到空也是會影響到unique屬性的。對于那些有可能為空的字段來說,最好不要設置unique屬性。因為NULL也是一個值,而如果兩條記錄的同一個字段都為NULL的話,就會違反unique的限制導致無法追加數(shù)據(jù)。
2.外鍵的約束名是不可以重復的。
不然會導致Error Code: 1005 Can't create table (errno: 121)錯誤。
關(guān)于這個錯誤,參照這里
3.對于1:N關(guān)系來說,外鍵就可以應付。但對于N:N關(guān)系來說,就要有一個描述對照關(guān)系的表來維護。
? ?具體使用那種,要看數(shù)據(jù)的擴展性需求來定。
4.金額要用DECIMAL類型。
5.對于圖片table來說,有?Alt?字段比較好,用于圖片無法加載時候的文字說明。
6.如果類型指定為INT,那么就是作為4字節(jié)的int來存儲,范圍為-20億~+20億或者0~+40億。
? ?如果指定為INT(4)或者INT4,那么意思是,首先范圍不變,其次當數(shù)字小于9999時,需要在前面補0。
? ?比如1表示為0001,888表示為0888之類。
7.mysql5中varchar(n)中的n表示n個字符,?
? ?一個漢字作為一個字符處理,因此varchar(10)最多能存儲10個漢字。
? ?mysql4中varchar(n)中的n表示n個字節(jié),因此在mysql4中varchar(10)就存不了10個漢字。
總結(jié)
以上是生活随笔為你收集整理的数据库设计新手容易掉进的陷阱(不断更新中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火狐浏览器 Firefox 是否跟进 C
- 下一篇: mysqldump使用方法