我一直在想,諸如「已批准,已拒絕,待處理」或「單身,已婚,已離婚」的常量是否應該組合在一個表中在數據庫中或在每個相關模塊的單獨表格中。哪一個更實用?其中常量應該存儲在數據庫中
回答
爲了讓數據庫執行僅適用於引用表的外鍵約束,分開表。
這些常數如何「常量」?我目前在代碼中存儲常量,因爲根據定義,它們可以不改變。如果它不是用戶配置的,請不要將它放在數據庫中。
在數據庫中存在這種類型的zillion外鍵約束是毫無用處的,如果這是任何問題,都會使您的性能遭受嚴重的影響。
但我知道我對此的看法很少被分享。
他們應該在單獨的表中,所以你可以使用外鍵。例如,假設你是在談論一個用戶表在這裏,如此設計的:
UserId int
Status int
MaritalStatus int
你可以定義一個UserStatuses表
StatusId int
Name nvarchar
與行的批准,未獲批准,並等待,然後對UserMaritalStatuses執行相同的方法。這也很好地映射到在引用這些表時在代碼中使用相同的常量。
我同意mnemosyn - 只要有可能,我會執行這些不能被具有約束而不是外鍵的用戶修改的東西。
但是,如果您需要在用於報告,BI或臨時用戶的查詢中包含用戶友好名稱,那麼就會出現一個錯誤。然後一個外鍵表將會非常方便。
我不一定同意 - 事情**將需要被修改,並且更容易向查找表中添加新行,強制執行FK約束,而不必刪除並重新創建約束... – 2010-03-07 16:35:21
更容易,但多久會發生?如果您正在存儲狀態代碼(如「已批准,已拒登,待處理」問題),並且您的業務流程使此極不可能發生變化,那麼我認爲查找表的便利性遠遠超過了簡單性和性能約束。 – Ray 2010-03-07 16:44:12
這是關於您期望經常期望「維度」發展以及您期望它有多大的期望。如果這個維度的範圍很小(不到七個左右)和高度靜態的,比如婚姻狀況(單身,已婚,離婚,分居,喪偶,未知),那麼就不要將它映射到表格上。 – 2010-03-07 22:55:18
- 1. 存儲在數據庫中的地址應該正常化嗎?
- 2. 我應該在數據庫中存儲Type還是應該將其存儲在枚舉中?
- 3. 在數據庫中存儲應用常量
- 4. 應該加密數據base64編碼以將其存儲在數據庫中嗎?
- 5. 如何在數據庫中存儲常量數據
- 6. 我們應該在數據庫中存儲數據嗎?
- 7. 應該將少量數據存儲在Android的數據庫中嗎?
- 8. 獲取數據庫的常量並將其存儲在緩存中
- 9. 常量數據應存儲在哪裏?
- 10. 在數據庫類中存儲變量
- 11. 存儲枚舉常量數據庫
- 12. 如何將PHP常量存儲在MySQL數據庫中
- 13. 在數據庫中存儲類常量(用作位掩碼)?
- 14. 在數據庫中存儲常量的列表
- 15. 我應該如何將Windows userid存儲在數據庫中?
- 16. 我應該在ViewState中存儲數據庫ID字段嗎?
- 17. 我應該在SQLite數據庫中存儲圖像嗎?
- 18. nsdecimalnumber應該如何存儲在數據庫中?
- 19. 我應該將位圖存儲在SQLITE數據庫中嗎
- 20. 我應該如何在MySQL數據庫中存儲換行符?
- 21. 我應該在我的數據庫中存儲html標籤嗎^
- 22. 什麼Eclipse元數據文件應該在存儲庫中?
- 23. 我們應該何時將圖像存儲在數據庫中?
- 24. 什麼數據應該存儲在會話變量中Laravel 5
- 25. 庫和媒體文件應該存儲在存儲庫中嗎?
- 26. 靜態數據應該存儲在數據庫還是應用程序中
- 27. 我應該將計算值與變量一起存儲在數據庫中嗎?
- 28. 您應該在.NET中存儲常量字符串的位置
- 29. 將變量存儲到數據庫中
- 30. PHP變量存儲在數據庫中不呼應HTML內部
...仍然是基於db的方法,我絕對同意你的看法,菲利普。 +1 – mnemosyn 2010-03-07 14:56:42
在單個表格上分開表格會有什麼處罰? – Jonn 2010-03-08 00:35:00