大數據|艾思軟件數據庫規范2.0

大數據|艾思軟件數據庫規范2.0


  1. 數據庫設計得怎么樣 是一款程序穩定性 可擴展性 易用性等等一切優秀的基石. 沒有數據庫的規范也就沒有了所有的規范
  2. 理解約定的含義 很多規范往往不是最好的 但就是這么約定的
  3. 除專有名詞可以用拼音(全拼)外 數據庫名 表名 字段名 變量名等 全部以英文命名 對于不確定的英文單詞 先查單詞表 單詞表內沒有合適的再查詞典 最后把新單詞加入單詞表
  4. 拼音的字與字之間使用下劃線隔開 英文單詞與單詞之間也用下劃線隔開 全部小寫 不允許使用駝峰等其它方式
  5. 庫名 表名 字段名見名知意 建議使用名詞而不是動詞
  6. 禁止在數據庫中存儲圖片、文件 。
  7. 除ID字段外 每個字段都要有COMMENT注釋 表也要有COMMENT 并要表達清楚 準確
  8. 每個字段定義除特殊要求外 要有default值 數值類型默認值一般為’0/1’. 如: 用戶可用默認狀態為可用 值為1(排序字段sort默認值為50) 字符串類型一般為’’ 字段默認值除必須為NULL時不能為NULL
  9. Bool類型用tinyint(1)類型代替 0為false 1為true
  10. 【大數據|艾思軟件數據庫規范2.0】所有日期時間類型用時間格式(datatime) 名稱以_time后綴結尾 如:create_time創建時間 update_time更新時間
  11. 數據表ENGINE使用InnoDB格式CHARSET使用utf8mb4格式
  12. url類型一般為varchar(255) 如: http地址 頭像圖片地址等
  13. 主鍵名統一使用: id int 自增
  14. 類型字段不得使用字符串保存. 如:
  • 禁用/正常(可用)狀態的字段 字段名統一使用: usable tinyint(1) not null default 0/1 comment “是否禁用: 0為禁用 1為正?!?
  • 性別使用: sex tinyint(1) not null default 0 comment “性別: 0為未知 1為男 2為女”
  • 是/否狀態的字段 字段名統一使用is_開頭 如是否是菜單 是否是會員: is_*** tinyint(1) not null default 0/1 comment “是否可用: 0為否 1為是”;
      1. 在不可控的情況下 比方說要對接第三方接口 這種情況是屬于盡量避免數據類型轉化為原則
      2. 表名前綴分為兩級 一級前綴為ln_ 二級前綴為模塊名稱: 如core_核心模塊 im_為聊天模塊 cms_客戶管理
      3. 常用固定字段示例:
  • input_user_id: `input_user_id` int(10) NOT NULL DEFAULT 0 COMMENT ‘新聞錄入用戶’
  • create_time update_time(前端不建議傳遞這兩個參數 如果需要自定義創建時間 需要另外建立字段 如新聞發布日期)
  • id: `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID'
  • quantity: `quantity` int(10) NOT NULL DEFAULT 0 COMMENT ‘購買數量 無單位’
  • user_id: `user_id` int(10) NOT NULL DEFAULT 0 COMMENT ‘客戶所屬用戶’
  • product_id: `product_id` int(10) NOT NULL DEFAULT 0 COMMENT ‘定單購買產品ID’
  1. 關于軟刪除問題: 有回收站機制的 使用假刪 沒有回收站的使用直刪 但刪除之前要判斷關聯表的數據已經沒有關聯數據 如果有關聯數據 要求用戶先刪除關聯數據再來刪除數據. 比仿說 要刪除一條新聞分類 要判斷這個分類下是否有新聞 如果新聞就提示用戶先刪除新聞; 刪除新聞時再判斷新聞是否是收藏記錄和評論記錄 如果有 要先刪收藏記錄和評論記錄再刪除新聞 以此類推.
  2. 禁止在線上做數據庫壓力測試 如有特殊需要 需提前報備. 禁止客戶端直接操作測試生產數據庫.

    相關經驗推薦