MySQL數(shù)據(jù)庫(kù)表的設(shè)計(jì)規(guī)范

這篇文章主要介紹“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í)吧!

創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、洪江管理區(qū)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為洪江管理區(qū)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

一、數(shù)據(jù)庫(kù)設(shè)計(jì)

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 編碼。

二、數(shù)據(jù)庫(kù)對(duì)象設(shè)計(jì)規(guī)范

1、表

設(shè)計(jì)

a)在設(shè)計(jì)時(shí)盡量包含兩個(gè)日期字段:crt_time(創(chuàng)建日期),upd_time(修改日期)且 非空, 對(duì)表的記錄進(jìn)行更新的時(shí)候,必須包含對(duì) upd_time字段的更新。
b)必須要有主鍵,主鍵盡量用自增字段類型,推薦類型為INT或者BIGINT類型。
c)需要多表join的字段,數(shù)據(jù)類型保持絕對(duì)一致。
d)Mysql 的表盡量設(shè)置成 KV(Key-Value)結(jié)構(gòu),這樣便于擴(kuò)展和維護(hù)。
e)當(dāng)表的字段數(shù)非常多時(shí),可以將表分成兩張表,一張作為條件查詢表,一張作為詳細(xì)內(nèi)容表(主要是為了性能考慮)。
f)當(dāng)字段的類型為枚舉型或布爾型時(shí),建議使用 char(1)類型。
g)同一表中,所有varchar字段的長(zhǎng)度加起來(lái),不能大于65535.如果有這樣的需求,請(qǐng)使用 TEXT/LONGTEXT 類型。
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)布爾值類型的字段命名為is+描述。如member表上表示是否為enabled的會(huì)員的字 段命名為 IsEnabled。

2、索引

命名
a) _ind,各部分以下劃線()分割。
b) 多單詞組成的columnname,取前幾個(gè)單詞首字母,加末單詞組成column_name。如: sample 表 member_id 上的索引:sample_mid_ind。

3. 約束

設(shè)計(jì)
a) 主鍵最好是無(wú)意義的,由Sequence產(chǎn)生的ID字段,類型為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)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

名稱欄目:MySQL數(shù)據(jù)庫(kù)表的設(shè)計(jì)規(guī)范
當(dāng)前網(wǎng)址:http://bm7419.com/article36/ipdepg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站靜態(tài)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司App開(kāi)發(fā)、網(wǎng)站營(yíng)銷、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)