您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL數(shù)據(jù)庫(kù)表的設(shè)計(jì)規(guī)范”,在日常操作中,相信很多人在MySQL數(shù)據(jù)庫(kù)表的設(shè)計(jì)規(guī)范問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MySQL數(shù)據(jù)庫(kù)表的設(shè)計(jì)規(guī)范”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
1、一般都使用 INNODB 存儲(chǔ)引擎,除非讀寫(xiě)比率<1%,才考慮使用 MYISAM 存儲(chǔ)引擎;其 他存儲(chǔ)引擎請(qǐng)?jiān)?DBA 的建議下使用。
2、Stored procedure (包括存儲(chǔ)過(guò)程,函數(shù),觸發(fā)器)對(duì)于 MYSQL 來(lái)說(shuō)還不是很成熟, 沒(méi)有完善的出錯(cuò)記錄處理,不建議使用。
3、UUID(),USER()這樣的MySQL INSIDE 函數(shù)對(duì)于復(fù)制來(lái)說(shuō)是很危險(xiǎn)的,會(huì)導(dǎo)致主備數(shù)據(jù)不一致,所以請(qǐng)不要使用。如果一定要使用UUID作為主鍵,讓?xiě)?yīng)用程序來(lái)產(chǎn)生。
4、請(qǐng)不要使用外鍵約束,如果數(shù)據(jù)存在外鍵關(guān)系,請(qǐng)?jiān)诔绦驅(qū)用鎸?shí)現(xiàn)。
5、必須采用 UTF8 編碼。
a)在設(shè)計(jì)時(shí)盡量包含兩個(gè)日期字段:crt_time(創(chuàng)建日期),upd_time(修改日期)且 非空, 對(duì)表的記錄進(jìn)行更新的時(shí)候,必須包含對(duì) upd_time字段的更新。
b)必須要有主鍵,主鍵盡量用自增字段類(lèi)型,推薦類(lèi)型為INT或者BIGINT類(lèi)型。
c)需要多表join的字段,數(shù)據(jù)類(lèi)型保持絕對(duì)一致。
d)Mysql 的表盡量設(shè)置成 KV(Key-Value)結(jié)構(gòu),這樣便于擴(kuò)展和維護(hù)。
e)當(dāng)表的字段數(shù)非常多時(shí),可以將表分成兩張表,一張作為條件查詢表,一張作為詳細(xì)內(nèi)容表(主要是為了性能考慮)。
f)當(dāng)字段的類(lèi)型為枚舉型或布爾型時(shí),建議使用 char(1)類(lèi)型。
g)同一表中,所有varchar字段的長(zhǎng)度加起來(lái),不能大于65535.如果有這樣的需求,請(qǐng)使用 TEXT/LONGTEXT 類(lèi)型。
h)由于MYSQL表DDL維護(hù)成本很高,所以在適當(dāng)?shù)臅r(shí)候,可以有一定的字段容余。 比如:Value1,Value2,Value3 這樣的字段。
命名
a)同一個(gè)模塊的表盡可能使用相同的前綴,表名盡可能表達(dá)含義,例如: CRM_SAL_FUND_ITEM。
b)字段命名應(yīng)盡可能使用表達(dá)實(shí)際含義的英文單詞或縮寫(xiě), 如,公司 ID,不要使用:corporation_id, 而用:corp_id 即可。
c)布爾值類(lèi)型的字段命名為is+描述。如member表上表示是否為enabled的會(huì)員的字 段命名為 IsEnabled。
命名
a) _ind,各部分以下劃線()分割。
b) 多單詞組成的columnname,取前幾個(gè)單詞首字母,加末單詞組成column_name。如: sample 表 member_id 上的索引:sample_mid_ind。
設(shè)計(jì)
a) 主鍵最好是無(wú)意義的,由Sequence產(chǎn)生的ID字段,類(lèi)型為number,不建議使用組合主鍵。
b) 若要達(dá)到唯一性限制的效果,不要?jiǎng)?chuàng)建uniqueindex,必須顯式創(chuàng)建普通索引和約束 (pk 或 uk),即先創(chuàng)建一個(gè)以約束名命名的普通索引,然后創(chuàng)建一個(gè)約束,用 using index …指定索引。
c) 當(dāng)刪除約束的時(shí)候,為了確保不影響到 index,最好加上 keep index 參數(shù)。
d) 主鍵的內(nèi)容不能被修改。
e) 外鍵約束一般不在數(shù)據(jù)庫(kù)上創(chuàng)建,只表達(dá)一個(gè)邏輯的概念,由程序控制。
f) 當(dāng)萬(wàn)不得已必須使用外健的話,必須在外健列創(chuàng)建 INDEX。
命名
a) 主鍵約束: pk 結(jié)尾,_pk;
b) unique 約束:_uk 結(jié)尾,uk;
c) check 約束: _ck 結(jié)尾,ck;
d) 外鍵約束: _fk 結(jié)尾,以 pri 連接本表與主表,_pri_fk;
到此,關(guān)于“MySQL數(shù)據(jù)庫(kù)表的設(shè)計(jì)規(guī)范”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。