溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫中字段設(shè)計心得有哪些

發(fā)布時間:2021-07-30 10:49:34 來源:億速云 閱讀:147 作者:小新 欄目:數(shù)據(jù)庫

這篇文章主要為大家展示了“數(shù)據(jù)庫中字段設(shè)計心得有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“數(shù)據(jù)庫中字段設(shè)計心得有哪些”這篇文章吧。

數(shù)據(jù)庫的字段設(shè)計有很多細(xì)節(jié)性的技巧,下面將過去在開發(fā)中體會到經(jīng)驗(yàn)整理出來,做個備忘。

  1. tinyint 是-128到128 。當(dāng)屬性設(shè)置為unsigned的時候。最大值就是255了?,F(xiàn)在知道為什么需要設(shè)置為unsigned屬性了。原來是為了最大限度的使用給予的存儲空間。如果不設(shè)置。那么假如你的值都是正數(shù)的。那么-128這一百多個數(shù)字就相當(dāng)于是浪費(fèi)了。

  2. tinyint會自動設(shè)置為tinyint(3)。

  3. smallint 不設(shè)置unsigned的時候,也有3萬多的樣子。

  4. tinytext 就是255個字節(jié)。大概就是存儲127個中文的樣子 tinytext就相當(dāng)于varchar類型。把它看成這樣的該類型就容易理解了。

  5. int 類型phpmyadmin默認(rèn)會設(shè)置int(10)。

  6. 概念糾正:原來一直以為這里的10表示位數(shù)。直到有次想保存1101061021496,結(jié)果在字段中的值都變成了:4294967295。 看MySQL手冊上說:

  7. (int后面括號的數(shù)字)顯示寬度并不限制可以在列內(nèi)保存的值的范圍,也不限制超過列的指定寬度的值的顯示。

  8. int的范圍:-2147483648到2147483647。剛好是10個位,那么就是數(shù)十億級別的數(shù)字。數(shù)據(jù)庫設(shè)計經(jīng)驗(yàn):像訂單的值非常大。不確定,如果達(dá)到10位數(shù),還不如使用varchar類型。fangwei就沒有使用int,而是varchar類型。

  9. 從上面也告訴我一個經(jīng)驗(yàn):如果保存在數(shù)據(jù)庫的值都變成一樣的。也就是無論我是1101061021496 還是1101061021569,結(jié)果都變成了固定的值,比如4294967295。那么可以考慮確認(rèn)是否是數(shù)據(jù)庫該字段的范圍問題。這樣的問題出現(xiàn)過好幾次了。就是沒有掌握思路。導(dǎo)致浪費(fèi)了不少時間。

  10. 將字段設(shè)置為not null 還出于另外一種考慮:mysql表的列中包含null的話,那么該列不會包含在所有中。也就是使用索引是無效的。所有,考慮今后會使用索引的字段,就要設(shè)置字段屬性是not null。

  11. 如果你要保存NULL,手動去設(shè)置它,而不是把它設(shè)為默認(rèn)值。

  12. 考慮到這個字段今后會作為查詢關(guān)鍵字使用like的形式進(jìn)行搜索。那么要將該字段定義成索引。這樣使用like查詢就會更快。

  13. 現(xiàn)在終于體會到到國外作者書籍上提到:設(shè)計數(shù)據(jù)庫之前要問自己,之后會查詢哪些數(shù)據(jù)。 考慮了這些,以后有什么查詢需要。結(jié)構(gòu)都能適應(yīng)了。

關(guān)于設(shè)計大流量網(wǎng)站數(shù)據(jù)庫,會員分表或者分庫的設(shè)計考慮:

主鍵不要設(shè)為自增型。設(shè)置為自增型的后果就是:今后無法分離在不同的mysql數(shù)據(jù)庫服務(wù)器上。比如id編號由于是自增的,所以兩個數(shù)據(jù)庫中可能會出現(xiàn)用戶編號都是10005的情況。

但是,mysql主鍵會自動設(shè)置為自增型??梢杂昧硗庖粋€字段來作為標(biāo)識符。而不是自增型id號。方法:新增一個字段作為行的標(biāo)識符。具體設(shè)計:一個表做兩個字段,一個是id作為主鍵,自增型,另外一個是uid,作為用戶的標(biāo)識。

程序判斷上,是以uid作為判斷用戶的依據(jù)。而不是id主鍵作為判斷依據(jù)(程序上的失誤,改動比起數(shù)據(jù)庫設(shè)計失誤改動容易得多。因?yàn)槟銛?shù)據(jù)已經(jīng)入庫了。在修改起來就比較難了)。

數(shù)據(jù)庫的一點(diǎn)設(shè)計心得

1.按照[流程]順序走一遍     (相關(guān)用戶進(jìn)行一次完成的操作流程)

2.先列出所有的屬性      (實(shí)體(型)、  屬性、 聯(lián)系)

3.判斷每一個屬性 是屬于那一個實(shí)體      

4.實(shí)體與實(shí)體之間的聯(lián)系   [1:1、  1:n、  n:1、   n:n]

5.相關(guān)數(shù)據(jù)表的設(shè)計,允許有數(shù)據(jù)冗余(犧牲空間換取效率),但是一定不能有數(shù)據(jù)項(xiàng)之間的矛盾       [工程與理論之間的考慮]   

6.當(dāng)有多種方式進(jìn)行數(shù)據(jù)處理的時候,應(yīng)該綜合多個方面,進(jìn)行考慮,選取最適合當(dāng)前項(xiàng)目的解決方案     [不一定是理論最好的,但卻是適合、實(shí)用的]

7.備注: 聯(lián)系的 1:n中, [概念模型]生成[物理模型]的時候, 會把1中的 主鍵作為,外鍵放入到n中  

以上是“數(shù)據(jù)庫中字段設(shè)計心得有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI