某些變量在多個地方使用,並且通常是固定的,可是隨着系統升級和後期變化,可能須要改變,若是這些變量寫死在代碼裏面將會變得難以維護,因此要將其從代碼中抽離出來。數據庫
通常的業務系統客戶端與用戶交互的時候都會使用下拉框
組件,對於某些比較固定的值的下拉組件的數據來源通常都是比較固定的一類數值。緩存
有的作法是使用枚舉或者Constants常量類來實現,這種狀況下在量少的前提是沒問題的,並且一旦須要修改就及其避免修改源碼;隨着系統的開發拓展,後期將沒法維護,甚至命名困難等問題。編碼
因此一般把字典放在數據庫,這樣後期的維護變動就比較簡單,也能夠在不用修改代碼的狀況下修改配置。還有,對於某些固定的數據字典(例如,星期,月份等)不容許修改。設計
可是,放在數據庫又有着頻繁訪問數據庫的問題,這不是咱們但願的,這時候一般作法就是加緩存,下降訪問數據庫的頻率。code
一般分紅兩張表來實現,一個是字典類型
,一個是字典
開發
SYS_DICT_TYPE
字段名 | 類型 | 做用 | 備註 |
---|---|---|---|
code | varchar | 編碼 | 主鍵 |
name | varchar | 類型 | 展現用 |
SYS_DICT
字段名 | 類型 | 做用 | 備註 |
---|---|---|---|
code | varchar | 編碼 | 主鍵 |
type_code | varchar | 類型code | 外鍵 |
name | varchar | 字典名 | 展現用 |
value | varchar | 字典值 | 使用值 |
fixed | int | 是不是固定的 | default 0 不固定,固定的話用1 |
以上是字典表的關鍵列和結構的設計,根據不一樣系統不一樣業務自定其餘列源碼
fixed
字段,針對固定的字典不提供編輯功能對於緩存,可能每一個人的意見不一樣,有人認爲緩存增長維護成本,一旦使用緩存,對於編輯的數據得立馬刷新緩存,否則將會與預期不符,而且對於訪問不頻繁量少的數據還達不到使用緩存的級別;有人認爲緩存提升效率,減小數據訪問。table
我的認爲,不一樣項目不一樣應用場景使用緩存的條件不一樣,對於高頻的數據或者對響應時間要求嚴格的系統能夠增長緩存,可是帶來的就是數據改動的同時須要及時更新緩存信息;對於對響應時間、業務要求較高的系統能夠不用緩存,保證業務的正確性。因此,具體狀況具體分析,沒有哪種是正確的,選擇適合的就能夠。class