生產環境數據庫開發規範

生產環境數據開發規範以及注意事項(內容會不斷更新)

效率規範

  1. 唯一索引名爲 uk_字段名;普通索引名則爲 idx_字段名
  2. 單錶行數超過500萬或者單表容量爲2G的時候建議分庫分表(經驗值)、如果表數據量在3年內達不到500萬的時候不需要在建表的時候進行分庫分表。
  3. 業務上具有唯一屬性的字段或者組合字段也需要建立唯一索引
  4. 3張表關聯的時候保證關聯字段的數據類型一致並且關聯字段建立索引
  5. isNull(null) 返回值1 、isNull(任何值) 返回值都是0
  6. 在進行匹配的時候建議優先選擇exist、如果一定要用in的話 建議使用in匹配的內容在1000以內 。備註數據量小的時候in與exists區別。大的話建議exists
  7. 建表時認識使用innoDB這種存儲引擎
  8. 減少使用or語句,可將or語句優化爲union。where a=1 or b=2 優化爲 where a=1 union where b=2
  9. 對於一些狀態或者類型的字段 建議使用tinyint和smallint

在這裏插入圖片描述

問題考慮

  1. 普通索引與唯一索引的區別 ?
  2. 如果進行分庫分表、分庫分表的優缺點 ?
  3. 數據庫表的存儲引擎區別?

建表規範

  1. 唯一索引名爲 uk_字段名;普通索引名則爲 idx_字段名
  2. 小數類型爲 decimal,禁止使用 float 和 double
  3. 建表時必須有 comment 說明字段或者是表的業務
  4. 庫的名稱必須控制在32個字符以內,相關模塊的表名與表名之間儘量提現join的關係,如user表和user_login表
  5. 創建表時必須顯式指定字符集爲utf8或utf8mb4
  6. 建表時所有字段不能爲null,要指定爲 NOT NULL 最好給上默認值 DEFAULT
  7. 字段名一律小寫,多個詞之間用 _ (下劃線) 分隔

建表語句樣例

新增表必須包含一下字段

'''
`yn` int(1)  NOT NULL DEFAULT 1 COMMENT '是否刪除 0無效 1有效',

`created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',

`creator` varchar(32) NOT NULL DEFAULT 'system' COMMENT '創建者', 

`modifier` varchar(32) NOT NULL DEFAULT 'system' COMMENT '修改者', 

`modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',

`version` int(10) NOT NULL DEFAULT 0 COMMENT '版本',


'''


'''

一個較爲規範的建表語句樣例

CREATE TABLE user (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`user_id` bigint(11) NOT NULL DEFAULT 0 COMMENT ‘用戶id’
`username` varchar(45) NOT NULL DEFAULT '' COMMENT '真實姓名',
`email` varchar(30) NOT NULL DEFAULT '' COMMENT ‘用戶郵箱’,
`yn` int(1) NOT NULL DEFAULT 1 COMMENT '是否刪除 0無效 1有效',
`created_date` timestampNOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',

`creator` varchar(32) NOT NULL DEFAULT 'system' COMMENT '創建者', 
`modifier` varchar(32) NOT NULL DEFAULT 'system' COMMENT '修改者',
`modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
`version` int(10) NOT NULL DEFAULT 0 COMMENT '版本',
PRIMARY KEY (`id`),
UNIQUE KEY uk_user_id (`user_id`),
KEY idx_username(`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8   COLLATE=utf8_bin  COMMENT='用戶信息';
'''

Mysql 資源地址

“[https://shop137604155.taobao.com/?spm=2013.1.1000126.d21.72c43d688WSxj8]”(https://shop137604155.taobao.com/?spm=2013.1.1000126.d21.72c43d688WSxj8)

  • 這個鏈接記錄的內容以及信息會更加詳細。
  • 或者也可以添加本人的釘釘賬號 直接免費發送給你發送相關資源、添加時 請備註 城市+崗位 + 渠道。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章