創建要求開發人員爲所有空列指定默認值的策略是否有任何優點?所有空列的默認值
Q
所有空列的默認值
2
A
回答
0
是,一致性
保持每個人都在同一頁上是重要的,這將確保您的開發者不會在生產得到意想不到的價值。
我認爲這是一個好主意。
3
如果您需要所有NULL列的DEFAULT值,則可以將它們全部設置爲NOT NULL!
1
歸因於它們涉及的三個值邏輯,空值通常是混淆的來源。例如,查詢...
select * from employee where job != 'MANAGER'
...可能會返回所有不是經理的員工。然而,當然,如果JOB可以爲空,那麼這個查詢將不會返回JOB爲空的僱員。
這可能是這是默認值策略背後的基本原理。
1
指定默認值只會改變問題,因爲基本上這些默認值與空值具有相同的「含義」,因此您將面臨要求在代碼中包含特殊外殼來處理「特殊含義」那些「特殊價值」。
0
@TonyAndrews:
......可以預料到返回誰不是經理的所有員工。然而,當然,如果JOB可以爲空,那麼這個查詢將不會返回JOB爲空的僱員。這可能是這是默認值策略背後的基本原理....
NULL是爲了處理缺失值而發明的, 您正在要求DBMS返回哪些作業不是'經理'的行;這確實意味着不會將我的工作回報給我。如果你想要失業,那就是另外一個問題。
想象一下,可能有些經理在那裏他們的工作領域是NULL(缺少,沒有輸入),所以如果數據庫返回它們,查詢的結果將是絕對錯誤的!
回到主要問題,我認爲如果一個字段是NULL允許它應該在NULL的情況下,如果缺少值,否則如果該字段永遠不會缺少值(或始終需要默認值)只是使它不爲NULL默認值。這是基於特定條件下的業務邏輯。
相關問題
- 1. 添加默認值不爲空的列。
- 2. 選擇具有空值或「默認」值的特定列的行
- 3. 空和默認值
- 4. 默認列值
- 5. 默認列值
- 6. 值爲空或默認值
- 7. PowerShell:所有對象的默認列寬
- 8. MySQL的空默認空值和默認空值之間的區別?
- 9. 使用默認值填充非空列之間的空列
- 10. jQuery:將默認值放在所有空文本框中
- 11. 將findbugs設置爲默認值,作爲包下的所有類的默認值
- 12. 帶有空白默認值的JSP下拉列表
- 13. 在DataGridView中設置所有列運行時間的默認值
- 14. jqgrid - 將setcolumns後的所有列重置爲默認值
- 15. MySql將列中的所有字段更新爲默認值
- 16. 將空列表分配給具有默認值的StringListProperty會導致實體具有默認值?
- 17. TSQL默認列值
- 18. 使用默認值FIREBIRD將空值插入到非空列中
- 19. 默認情況下,在sql datetime列中插入空值/空值
- 20. 具有默認值的列 - usql
- 21. SQLite添加具有默認值的列
- 22. 添加具有默認值的列?
- 23. Schema.Types.ObjectId默認值非空
- 24. UIPickerView默認值爲空
- 25. UIDatePicker默認返回空值?
- 26. 春@Value空列表默認
- 27. Spark默認空列DataSet
- 28. Android:空默認HttpClient隊列
- 29. DataBind上的默認值爲空值
- 30. 更改列的默認值
對於某些商業案例來說,儘管列有默認值,但空值仍然是合法值嗎? – 2010-04-09 04:01:17
可以將NULL置於具有缺省值的可空列中。我會想象,在大多數情況下,這將被視爲一個錯誤(忘記使列不爲空)。開發人員會說「哎呀,我以爲我在列上有一個默認值,爲什麼我有那麼多的空值?」只有在不指定插入中的列時,或者如果指定它並傳入DEFAULT關鍵字,纔會使用默認值。然而,生意是一件有趣的事情,所以我猜想任何瘋狂的要求都是可能的。用戶說我希望該字段默認爲零,但也有時可能是未知的。 – 2010-04-09 11:13:57