csm簡寫會方便很多
就不要用member_id,一致性方便大家理解
system.currenttimemillis()進行儲存text查詢是會產生臨時磁碟檔案,效能差進行擷取儲存型別
占用位元組
範圍tinyint
1-128~127
smallint
2-32768~32767
mediumint
3-8388608~8388607)
int4
-2147483648~2147483647
bigint
8+-9.22*10的18次方
不浪費空間, 能用小的資料型別幹嘛占用那麼多空間
能用int,不影響業務理解,不用char
方便以後擴容,支援以後擴容需求
注意int(1), int(10),沒有儲存空間上的差別,只是在補0查詢是,佔位達到的位數,
所以占用空間的大小還是根據型別的選擇
例如:
direction表示收支方向, 就收,支,平,三個值,直到滄海桑田,海枯石爛也是三個值,
所以一定用tinyint(1),省空間,效率高
m和d的關係(儲存規則m>=d(m必須大於等於d)
整數字最大長度m-n位,小數字長度n位
占用位元組數最大為m+2個位元組數(保護-號和.的情況)
整數14位,最大可以表示十萬億級別的資料,decimal(14,2)不建議,千億級別不夠玩
我多年的經驗,一般展示會展示4位利率,這個業務層處理下就好
1. 一般擴充套件性有限的常量型別,建議用整形,效能高,佔空間少,比如狀態字段,
初始設定值的時候,建議1,3,5,7這樣,方便擴充套件
2. 一般不確定擴充套件性的型別,建議用字元型,若訂單子型別,字元型的好處,
可以新增業務規則,乙個字段可以同時表示出爺爺,兒子孫子的含義,比如
subtype=0000 0000 0000 前四個字段代表大類購買型別,中間代表子類購買,
最後代表**購買型別,這樣通過乙個字段可以做很多事情
3. 序列號,id等字段,建議varchar(32)或者bigint
4. 如果未了方便查問題,且表的資料量不大,可以用有含義的英文單詞表示常量,
比如收入in, 支出out, 資料庫查下排查問題很方
5. 不要有null值,不要有null值,不要有null值
,建表是要default 乙個預設值,
盡量建表是not null語句
`create_time` datetime not null comment '表建立時間',
`modify_time` datetime default null comment '表修改時間',
`remark` varchar(64) default null comment '備註',
operator 操作人 operate_time 操作時間 等
version 版本號 seq序列號
100******-廣東省, 200******-黑龍江
遍歷需求的對於自增id的表來說很容易實現
1.自增id, bigint
2.15位時間戳+業務標誌+rand 32 (tss可以生成全域性唯一主鍵),生成業務含義全域性唯一主鍵,可以模仿訂單服務id生成器
3.分布式全域性唯一, uuid或額外系統主鍵生成系統支援
根據業務需求設計索引
索引不要過多,影響插入更新效能
乙個欄位的值範圍很小,不要設定索引,索引不生效同事浪費插入效能
如果有冪等性需求,設定資料庫唯一索引
null值對索引是一大傷害,所以不要讓索引的列有null值存在
盡量加索引的字段的資料型別小,也就是能用整數不用varchar能用短的varchar不用長的varchar,
不要在text上設定索引
例子
如賬戶,userid設定為唯一索引,乙個人只能有乙個銅板賬戶
收支流水表的userid設定普通索,查詢效率高
create_time 預設加索引。。。。
a,b,c 組合索引,, a**,abx xxb xxc, a+b+c, 按位加索引
敏感字段,如姓名,身份證號,銀行卡號,郵箱等
根據實際業務進行選擇,可以md5,可以rsa,可以aes,具體選擇後續,老夫出個介紹演算法的
字段長度要根據業務長度加密後長度進行設定,如果過長要選擇換加密演算法等
每個欄位要有注釋
每個表名要有注釋
欄位的取值含義或者範圍,列舉值要有注釋
總之:看建表語句,看的爽,就對了
從前到後,按照欄位的重要性和使用頻率排列。
按字段的分類歸集排列:如 金額相關的在一塊,文案相關的在一塊,時間相關的在一塊等
create_time,modify_time,remark三個欄位在最後
innodb,沒的商量,就是這個,原因就一條,我們做的是金融行業,安全、安全、安全
理由:innodb支援事務,資料庫崩潰恢復穩定
全表掃瞄會造成資料庫掛掉,oom,慢查詢等可怕事情
索引的值範圍很少,索引即使設計了也不會生鏽,也會全表掃瞄
刪資料時,where後必須有條件,條件走索引,同時加limit限制,防止sql錯誤,多刪資料
daoimpl層面限制不走索引的查詢sql
daoimpl層面限制索引值少的查詢sql
3. mybatis.xml層面對刪除進行限制delete from tb_position where id=142343 limit 1;
資料庫設計規範
使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。資料表名不要使用空格。資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tblschool,或...
資料庫設計規範
1 基本需求 某學校設計學生教學管理系統。學生實體包括學號 姓名 性別 生日 民族 籍貫 簡歷 登記照,每名學生選擇乙個主修專業,專業包括專業編號和名稱,乙個專業可以屬於 乙個學院,乙個學院可以有若干個專業。學院資訊要儲存學院號 學院名 院長。教學管理還要管理課程表和學生成績。課程表包括課程號 課程...
資料庫設計規範
1.小寫字母 下劃線 2.禁止使用保留關鍵字 3.見名識義 4.臨時表 tmp date 5.備份表 bak date 6.所有儲存相同資料的列名和列型別必須相同 一般這種列為關聯列,若型別不同在查詢時會隱式轉換,效率差 7.庫表字符集統一 8.所有表和字段都要注釋 在建表時用comment從句 9...