參考博客:https://www.cnblogs.com/jpfss/p/10418873.html
參考博客:https://www.cnblogs.com/isoftware/p/3912101.html
為什么要用字典表
問題背景:
某些變量在多個地方使用庸队,而且一般是固定的,但是隨著系統(tǒng)升級和后期變化忍宋,可能需要改變,如果這些變量寫死在代碼里面將會變得難以維護纠俭,所以要將其從代碼中抽離出來。
一般的業(yè)務(wù)系統(tǒng)客戶端與用戶交互的時候都會使用
下拉框
組件妻熊,對于某些比較固定的值的下拉組件的數(shù)據(jù)來源一般都是比較固定的一類數(shù)值。
例子:省份--省份編碼 對應(yīng)關(guān)系仑最;設(shè)備名稱--設(shè)備編碼 對應(yīng)關(guān)系扔役。
實現(xiàn)方法對比:
- 枚舉類、Constant常量類——在數(shù)據(jù)少的情況下適用警医,缺點是字段變化時需要修改源碼亿胸,不方便維護。
- 配置數(shù)據(jù)庫字典表——可以在不用修改代碼的情況下修改配置预皇。缺點是存在頻繁訪問數(shù)據(jù)庫的問題侈玄,為了避免這種情況,通常會加緩存吟温,降低訪問數(shù)據(jù)庫的頻率序仙。
- 配置在 xml/properties 文件中,服務(wù)啟動時加載入內(nèi)存鲁豪。
字典表的實現(xiàn)
應(yīng)用舉例潘悼。
假定做一個學(xué)生信息管理系統(tǒng)
字典類型表設(shè)計如下(Dic_Type):
ID | Name |
---|---|
1 | Sex |
2 | ... |
字典內(nèi)容表設(shè)計如下(Dic_Data):
ATID | TypeID | ID | Name |
---|---|---|---|
1 | 1 | 1 | 男 |
2 | 1 | 2 | 女 |
3 | 2 | 1 | ... |
4 | 2 | 2 | ... |
... | ... | ... | ... |
性別類型字典的視圖(VW_Sex):
select ID,Name from Dic_Data where TypeID=1
假設(shè)學(xué)生信息表如下T_Student:
ID | Name | Sex |
---|---|---|
1 | 采采 | 1 |
2 | 花花 | 2 |
3 | 剛剛 | 1 |
取學(xué)生列表信息可通過如下方法實現(xiàn):
select T_Student.ID as StudentID,T_Student.Name as StudentName,VW_Sex.Name as SexName
from T_Student left join VW_Sex on T_Student.Sex=VW_Sex.ID
結(jié)果如下:
StudentID | StudentName | SexName |
---|---|---|
1 | 采采 | 男 |
2 | 花花 | 女 |
3 | 剛剛 | 男 |