數據庫對象命名規范
數據庫對象
數據庫對象是數據庫的組成部分,常見的有以下幾種: 表(Table )、索引(Index)、視圖(View)、圖表(Diagram)、缺省值(Default)、規則(Rule)、觸發器(Trigger)、存儲過程(Stored Procedure)、 用戶(User)等。 命名規范是指數據庫對象如數據庫(SCHEMA)、表(TABLE)、索引(INDEX)、約束(CONSTRAINTS)等的命名約定。
數據庫對象全局命名規范
1、命名使用具有意義的英文詞匯,詞匯中間以下划線分隔
2、命名只能使用英文字母、數字、下划線,以英文字母開頭
3、避免用MySQL的保留字如:backup、call、group等,參考MySQL 5.7+的關鍵字和保留字。
4、所有數據庫對象使用小寫字母,實際上MySQL中是可以設置大小寫是否敏感的,為了保證統一性,我們這邊規范全部小寫表示。
數據庫命名規范
1、數據庫命名盡量不超過30個字符。
2、數據庫命名一般為項目名稱+代表庫含義的簡寫,比如IM項目的工作流數據庫,可以是 im_flow。
3、數據庫創建時必須添加默認字符集和校對規則子句。默認字符集為UTF8(已遷移dumbo的使用utf8mb4)
4、命名應使用小寫。
表命名規范
1、常規表表名以t_開頭,t代表table的意思,命名規則即 t + 模塊(包含模塊含義的簡寫)+ 表(包含表含義的簡寫),比如用戶模塊的教育信息表:t_user_eduinfo。
2、臨時表(RD、QA或DBA同學用於數據臨時處理的表),命名規則:temp前綴+模塊+表+日期后綴:temp_user_eduinfo_20210719
3、備份表(用於保存和歸檔歷史數據或者作為災備恢復的數據)命名規則,bak前綴+模塊+表+日期后綴:bak_user_eduinfo_20210719
4、同一個模塊的表盡可能使用相同的前綴,表名稱盡可能表達含義
5、多個單詞以下划線 _ 分隔
6、常規表表名盡量不超過30個字符,temp表和bak表視情況而定,也盡量簡短為宜,命名應使用小寫
字段命名規范
1、字段命名需要表示其實際含義的英文單詞或簡寫,單詞之間用下划線 _ 進行連接,如 service_ip、service_port。
2、各表之間相同意義的字段必須同名,比如a表和b表都有創建時間,應該統一為create_time,不一致會很混亂。
3、多個單詞以下划線 _ 分隔
4、字段名盡量不超過30個字符,命名應該使用小寫
索引命名規范
1、唯一索引使用uni + 字段名 來命名: create unique index uni_uid on t_user_basic(uid) 。
2、非唯一索引使用idx + 字段名 來命名: create index idx_uname_mobile on t_user_basic(uname,mobile) 。
3、多個單詞以下划線 _ 分隔。
4、索引名盡量不超過50個字符,命名應該使用小寫,組合索引的字段不宜太多,不然也不利於查詢效率的提升。
5、多單詞組成的列名,取盡可能代表意義的縮寫,如 test_contact表member_id和friend_id上的組合索引:idx_mid_fid。
6、理解組合索引最左前綴原則,避免重復建設索引,如果建立了(a,b,c),相當於建立了(a), (a,b), (a,b,c)。
視圖命名規范
1、視圖名以v開頭,表示view,完整結構是v+視圖內容含義縮寫。
2、如果視圖只來源單個表,則為v+表名。如果視圖由幾個表關聯產生就用v+下划線(_)連接幾個表名,視圖名盡量不超過30個字符。如超過30個字符則取簡寫。
3、如無特殊需要,嚴禁開發人員創建視圖。
4、命名應使用小寫。
存儲過程命名規范
1、存儲過程名以sp開頭,表示存儲過程(storage procedure)。之后多個單詞以下划線(_)進行連接。存儲過程命名中應體現其功能。存儲過程名盡量不能超過30個字符。
2、存儲過程中的輸入參數以i_開頭,輸出參數以o_開頭。
3、命名應使用小寫。
1 create procedure sp_multi_param(in i_id bigint,in i_name varchar(32),out o_memo varchar(100))
函數命名規范
1、函數名以func開始,表示function。之后多個單詞以下划線(_)進行連接,函數命名中應體現其功能。函數名盡量不超過30個字符。
2、命名應使用小寫。
1 create function func_format_date(ctime datetime)
觸發器命名規范
1、觸發器以trig開頭,表示trigger 觸發器。
2、基本部分,描述觸發器所加的表,觸發器名盡量不超過30個字符。
3、后綴(_i,_u,_d),表示觸發條件的觸發方式(insert,update或delete)。
4、命名應使用小寫。
1 DROP TRIGGER IF EXISTS trig_attach_log_d; 2 CREATE TRIGGER trig_attach_log_d AFTER DELETE ON t_dept FOR EACH ROW;
約束命名規范
1、唯一約束:uk_表名稱_字段名。uk是UNIQUE KEY的縮寫。比如給一個部門的部門名稱加上唯一約束,來保證不重名,如下:ALTER TABLE t_dept ADD CONSTRAINT un_name UNIQUE(name);
2、外鍵約束:fk_表名,后面緊跟該外鍵所在的表名和對應的主表名(不含t_)。子表名和父表名用下划線(_)分隔。如下: ALTER TABLE t_user ADD CONSTRAINT fk_user_dept FOREIGN KEY(depno) REFERENCES t_dept (id);
3、非空約束:如無特殊需要,建議所有字段默認非空(not null),不同數據類型必須給出默認值(default)。
1 `id` int(11) NOT NULL, 2 `name` varchar(30) DEFAULT '', 3 `deptId` int(11) DEFAULT 0, 4 `salary` float DEFAULT NULL,
4、出於性能考慮,如無特殊需要,建議不使用外鍵。參照完整性由代碼控制。這個也是我們普遍的做法,從程序角度進行完整性控制,但是如果不注意,也會產生臟數據。
5、命名應使用小寫。
用戶命名規范
1、 生產使用的用戶命名格式為 code_應用
2、 只讀用戶命名規則為 read_應用