1、資料型別要合理
1、對於數字和日期型別,一般不要採用
varchar
型別,這個陷阱很容易被接受
1、容易帶來隱式型別轉換,導致索引失效,例如
where a=123; a
是varchar
列,實際儲存數字型別值
2、容易帶來資料質量的下降,例如日期型別
'2019-01-23'
、'2019-23-01'
,非常不利於將來的分析計算和比較
2、常用資料型別包括
varchar
、date
、number
,要注意資料範圍,防止資料輸入時出現溢位,對錶進行
ddl會導致海量
io和鎖表
2、表上列的選擇要適當遵守正規化
1、正規化要解決的核心問題是資料冗餘,資料冗餘會帶來資料不一致問題,因此對於不能承受資料不一致的一些列資料,不要出現在多個表中
例如使用者手機號碼
3、表上列的數量要適當,不要出現大寬表,表上列數量過多帶來的問題
1、表上列數量多,表上承載的業務型別和業務數量就多,對於系統的併發性會帶來很大的問題
訂單表:訂單資訊、支付資訊、物流資訊、評價資訊、簽收資訊
2、表上列數量多,容易出現大量的空列,對於後期進行資料分析帶來很多弊端
3、表上列數量多,乙個資料頁容納的資料行會減少,對於後期
select
操作會帶來嚴重的效能問題
4、頻繁訪問的主表,盡量不要將大寬列放在表中,例如商品資訊表中的商品、商品詳細描述
採用垂直拆分的方式對大寬列進行拆分
5、適當採用逆正規化化來提公升表的訪問效能,逆正規化化就是某些高頻訪問列出現在多個表中,注意資料一致性的保障
6、資料盡量不要為空、適當採用非空約束
not null
屬性7、字符集和合理設定,一般建議在資料庫層面設定字符集。某些特殊情況可以在表級別和列級別設定字符集
8、約束
1、主鍵約束:非空、唯一
2、唯一鍵約束:唯
一、可以存在多個空值,注意對空值進行比較的時候,要採用
is null
、is not null
的方式,不能進行
null=null
之類的比較方式
3、非空約束
4、default
約束,日期型別和布林型別經常會採用
default
約束5、外來鍵約束
外來鍵約束會帶來效能的降低
外表中插入資料需要訪問主表主鍵索引或者外來鍵索引
主表刪除或者修改主鍵值,需要對外表進行訪問或者對應修改,這個需要參考外來鍵級聯策略(級聯刪除、級聯修改、級聯
set null
、no action)
儘量減少對外鍵的使用
外來鍵列上一定要索引,缺省會建立索引
9、強烈建議表上要顯式建立主鍵
資料庫表設計
在軟體的開發中,資料庫表的設計是十分基礎和重要的工作。資料庫表是軟體具體實現的基石,如果表設計的不合規範就會出現資料冗餘,跟業務脫節等問題,等出現問題後再做大的調整相應的依賴表的編碼測試等工作也會進行大的調整這樣就會造成極大的資源消耗。因此在專案一開始設計表的時候就要注意表設計的規範性問題。資料庫 ...
資料庫表設計
什麼是設計三正規化 1.1 設計表的依據 按照這個三正規化設計的表不會出現資料冗餘 三正規化都有哪些 第一正規化 任何一張表都有乙個主鍵,並且每乙個字段原子性不可以再分 例子不滿足第一正規化 學生標號 學生姓名 001jaden zjl 123.com,13029199039 002haoyue w...
資料庫模型設計 表設計
曾經何時,發現自己設計的表,根本不滿足業務發展。1.業務id的設計,如商品表,單錶就不說了,在如今海量資料的背景下,當然要分庫發表啦。商品表,id,item id,表位置,id當然就是主鍵了,在單錶情況下,保持唯一就可以。item id商品id,就是要在全域性保持唯一,可能商品表有30張,甚至100...