MySQL資料庫開發規範

2021-10-20 04:33:37 字數 4490 閱讀 4637

為了最大限度保證合生通mysql資料庫設計編碼規劃化,使開發可以寫出高質量查詢語句。制定本資料庫開發設計規範。

適用的人員包括:使用mysql資料庫的研發人員

適用資料庫版本:mysql5.6及以後

適用於資料庫名、物件名如表、字段、索引、儲存過程,函式等的命名約定。

3.1表名

3.1.1規則

命名規則為:***_yyy_tablename。***表示子系統的名稱,由三個字母構成;yyy表示子系統中的子模組的名稱(可以沒有);tablename為表含義

tablename

規則如下:

使用英文單詞或片語作為表名,不得使用漢語拼音

用名詞和名詞短語作表名

不使用複數

正確的命名,例如:

sys_user

,biz_order

3.2儲存過程

3.2.1規則

命名規則為:proc_***_yyy_storedprocedurename。proc表示儲存過程字首,***表示子系統的名稱,由三個字母構成;yyy表示子系統中的子模組的名稱(可以沒有);storedprocedurename為儲存過程含義

3.2.2 storedprocedurename

規則如下:

3.2.3

儲存過程正確的命名

例如:proc_sys_insertuser

proc_sys_searchuserbyuserid

proc_sys_deleteuserbyuserid

3.3檢視

規則如下:

檢視的命名採用v_***_yyy_viewname_v。v_表示檢視字首,***表示子系統的名稱,由三個字母構成;yyy表示子系統中的子模組的名稱(可以沒有);_v字尾表示檢視,viewname部分表示檢視的含義。

viewname

規則如下:

○ 用名詞和名詞短語,

○ 不使用複數

○ 盡量謹慎地使用縮寫

○ 盡量不要和關鍵字重合

○ viewname中使用下劃線

檢視正確的命名,例如:

v_sys_userview

v_biz_userorderview

3.4索引

規則如下:

idx_table_name_n1

表示單列普通索引,多個索引序號遞增

idx_table_name_u1

表示單列或多列唯一索引,多個索引序號遞增

idx_table_name_c1

表示復合索引,多個索引序號遞增 如:

tst_sample

表member_id上的唯一索引: idx_tst_sample_u1   

sys_news

表title上的普通索引: idx_sys_news_n1

3.5主鍵

主鍵命名:pk_table_name

示例:tst_sample表的主鍵: pk_tst_sample

3.6外來鍵

外來鍵命名:fk_table_name_column_name

多單詞組成的column name,取前幾個單詞首字母,加末單詞組成column_name。 如:

tst_sample

表user_id欄位的外來鍵: fk_tst_sample_uid

tst_sample

表type_id欄位的外來鍵: fk_tst_sample_tid

適用於資料庫名、物件名如表、字段、索引、儲存過程,函式等的命名約定。

4.1整型

規則:統一使用bigint資料型別

示例:id bigint not null

4.2浮點型

規則:浮點型別資料統一使用decimal資料型別

示例:je decimal(20,2) ,表示整數為18位,小數2位,共20位。

4.3日期型

規則:日期型別統一使用datetime資料型別

示例:created datetime not null default now()

禁用timestamp原因如下:

4.4字元型

規則:統一使用varchar(n),n表示字元,大於4000字元使用text型別,大於8000字元使用longtext型別。

示例:name varchar(20),content text,html longtext。

5.1規範約定

1.盡可能遵守資料的設計規範3nf 規定,可適當存在冗餘資料

表內的每乙個值都只能被表達一次。

表內的每一行都應該被唯一的標識(有唯一鍵)。

表內不應該儲存依賴於其他鍵的非鍵資訊。

2.實體表盡可能包含以下字段

編號(id)、**(code)

建立人(created by)、建立時間(creation time)

修改人(modified by)、修改時間(modification time)

刪除標誌(delete status)

其含義如下:

編號是系統內的唯一標識,一般為自增列

**是客戶為這個實體的編碼,根據需要確定是否保留

建立人是是指資料庫記錄建立人,根據需要確定是否保留

建立時間是指資料庫記錄建立時間,預設為now()

修改人是是指資料庫記錄修改人,根據需要確定是否保留

修改時間是指資料庫記錄修改時間,預設為now()

刪除標誌是本條記錄是否已刪除的標誌(0:沒有刪除;1:已經刪除),資料中   

的資料不做真正刪除,只設定這個標誌

這五個欄位的命名規則如下

實體名+欄位名稱,如user_id、user_code、created_by、creation_time、modified_by 、modification_time 、delete_status。

這五個欄位的型別和長度規則如下:

欄位名稱

字段型別 描述

user_id

bigint 編號

user_code

varchar2

(30) **

created_by

varchar(20)

建立人creation_time

datetime

建立時間

modified_by

varchar(20)

修改人modification_time

datetime

修改時間

delete_status

varchar(1)

刪除標誌

5.2字段規範

5.1綜合

5.2查詢

錯誤:select

service_id,service_name 

from service_promotion

where to_char(gmt_modified,』yyyy-mm-dd』) 

= 『20001-09-01』;

正確:select service_id,service_name

from service_promotion

where gmt_modified >= to_date(『2001-9-01』,』yyyy-mm-dd』)

and gmt_modified < to_date(『2001-9-02』,』yyyy-mm-dd』);

實際線上慢查詢例子說明

錯誤:select category_id, category_name from category

where category_id = 『123』; #id』s type is number 

正確:select category_id, category_name from category

where category_id = 123;  #id』s type is number 

5.3刪除、修改

如果一次刪除表中資料量較大,採用迴圈方式進行刪除,通過主鍵一次刪除一行,刪除一批後再進行提交。

如果刪除資料量相對較少,確保刪除的列上有索引。

MYSQL資料庫開發規範

自己總結的mysql開發規範,夠用就行了。1 表 1.1 表必須要有主鍵,主鍵使用自動遞增,型別為int。1.2 表名使用有意義的英文單詞,可用下劃線分割。如需使用縮寫時,不可使用意義不明的縮寫。1.3 需要多表join的字段,資料型別保持絕對一致。1.4 字段命名時需要加上表名,確保所有表中的字段...

Mysql 資料庫開發規範

一 基礎規範 1 必須使用innodb儲存引擎 解讀 支援事務 行級鎖 併發效能更好 cpu及記憶體快取頁優化使得資源利用率更高 2 必須使用utf8字符集 解讀 萬國碼,無需轉碼,無亂碼風險,節省空間 3 資料表 資料字段必須加入中文注釋 解讀 n年後誰知道這個r1,r2,r3欄位是幹嘛的 4 禁...

MySQL 資料庫開發規範

一 表 單個表的字段數控制在 20個以下,最好不超過50個 單個表不超過20個char 或varchar 字段 單錶不超過50個純int欄位 拒絕大sql,大事務,批量操作 二 字段型別定義 字段型別選取原則 1 選取合適範圍的資料型別 2 只取正值的數值型別,新增 unsigned屬性 3 固定長...