1. 程式人生 > >關於資料庫設計欄位型別和長度的討論

關於資料庫設計欄位型別和長度的討論

使用者需求經常是不完整, 不精確, 快速變化的, 我們在資料庫建模時需要儘量避免這些問題對專案帶來的影響:

  • 對於"是或否"等型別的欄位建議number(1) 而不是varchar2(1),避免使用者錯誤儲存Y/N,而不是1/0,這樣可能會引入大小寫問題
  • 對於資料字典編碼欄位,不要小氣的確定為3位,最好統一為40位
    統一為40位的好處是,可以考慮利用GUID(36位)來生成資料字典編碼,這樣在資料合併時非常有優勢,36取整為40.
  • 對於一般性錄入欄位,不要因為需求文件裡的"確定尺寸"而設定確定的長度,最好統一成較優的長度,如40位!
    如:車號最早是6位,沒多久就改成了7位! 軸號開始為8位,但實際上有15位的軸號!軸承編號由10改為了20位
    但是超過40位的錄入專案還沒有見過, 比較罕見.
  • 對於類似名稱的欄位: 如單位名稱, 資料字典專案的名稱等,最好再大一些,設成60至80位!
  • 對於備註型別的欄位,一般內容在30個漢字左右,可以設定為100 - 500 之間
  • 對於長文字的欄位,一般內容在200個漢字左右,可以設定為1000
  • 對儲存SQL語句的欄位(特殊情況,如配置傳輸條件等),至少要設定為2000,最大是4000
  • 對於數值型欄位, 直接用number ,不指定精度和小數位是個較好的選擇
    number預設精度為15位(整數位數+小數位數=15位,小數點位置任意),其它大數值也可以儲存,但是採用的是科學計數法,有精度損失
    用number,不指定精度的最大的好處是不限制數值的精度和範圍
    如果指定number(2,1),則存入的數值範圍在-9.9 至 9.9之間,如果使用者提出精度調整為2位,則需要修改資料庫和程式!
    為了效能和計算精度, 對確定精度的型別應該明確指定精度!
          比如"是或否"型別的欄位, 應該為 number(1)
          用於排序的欄位, 應該為 number(10)
          用於樂觀鎖定的欄位, 也應該為 number(10)
  • 對於日期型的沒有什麼好說的.