比方說,我有值(RW,FW,4W)表示車輛的驅動方式的一個預先定義的列表:從數據庫中的預定義值列表中存儲值的最佳方式是什麼?
RW - 後輪
FW - 前Wheet
4W - 四輪
現在,我想借此從上面的3個值的值從我的用戶,然後將一個輸入存儲它在一個數據庫中。
高達我的知識,我可以用下列任何一種方法的幫助下進行的:
- 硬編碼在UI中的值,使得UI僅顯示有一個下拉以上3個值。然後將該值存儲在Vehicle vehicle
對象的String vehicleType
字段中,然後將其作爲String
存儲在數據庫中。
缺點:
i)中。 ii)沒有驗證物體水平的值
ii)。沒有驗證數據庫級別的值。 iii)。雖然需要增加一個新的值到列表中是罕見的,但還是用戶不能在運行時
添加一個新值 - 優點:
我)。在DB不需要的
join
檢索vehicle
對象
OR
製作一個單獨的表
VEHICLE_TYPE
在具備全部3個值的數據塊,並通過VEHICLE
錶鏈接。外鍵。然後從VEHICLE_TYPE
表中填充UI的下拉列表。存儲在vehicle
對象的值作爲String
- 缺點:
我)。在目標層面沒有驗證
ii)。需要
join
在DB檢索vehicle
對象- 優點:
我)。數據庫級別的值驗證(通過外鍵)
ii)。用戶可以在運行時一個新值添加到列表中
OR
製作一個單獨的表
VEHICLE_TYPE
在具備全部3個值的DB但請勿鏈接它與VEHICLE
表格通過。外鍵。然後從VEHICLE_TYPE
表中填充UI的下拉列表。存儲在vehicle
對象,並在DB值作爲String
- 缺點:
我)。在目標層面沒有驗證
ii)。沒有驗證在DB級別
- 優點:
我)。在數據庫層面需要
join
ii)。用戶可以添加新的值列表
OR
製作一個單獨的表
VEHICLE_TYPE
在具備全部3個值的數據塊,並通過VEHICLE
錶鏈接。外鍵。然後從VEHICLE_TYPE
表中填充UI的下拉列表。在java中創建一個enum VehicleType
,然後在Vehicle
類中添加一個字段VehicleType vehicleType
。根據用戶的輸入,將VehicleType
enum中的值存儲在vehicleType
字段中。-Cons:
我)。將不得不在兩個地方更新列表:
VehicleType
enum和VEHICLE_TYPE
表。可能會導致不一致。 ㈡)。用戶不能將新值添加到列表(他可以在表中添加值,但不能改變枚舉)- 優點:
我)。在UI層面驗證
ii)。對象層面的驗證
iii)。在DB級驗證
問: 是否有其他途徑,使我們可以執行不具有任何上述缺點的上述任務?
你爲什麼擔心加入?除非您的應用程序使用量很大,否則不太可能成爲真正的性能問題。在特殊情況下,當您的應用程序出現加載問題時(這是一個很好的問題!),您需要擔心這種類型的問題。 – 2010-06-22 14:33:38