2010-08-27 50 views
0

在您的數據庫和/或代碼中。關於如何處理空值的最佳做法

您是否避免了空值或者您是否明確地編程以在邏輯中處理它們?

如何處理空值的最佳做法是什麼?

+1

這取決於你訂閱哪個哲學。有些人不允許在數據庫中存在空值。我更喜歡在任何地方使用它們。 – 2010-08-27 09:48:07

+1

這取決於。我傾向於使用NULL作爲「這部分數據未知或未指定」。 (你能標記社區Wiki的問題嗎?沒有「最好」的答案可能) – Piskvor 2010-08-27 09:50:16

+0

問一個更具體的問題可能會更好。這太籠統了,它取決於你需要做什麼以及你編寫什麼樣的軟件。 – 2010-08-27 10:06:57

回答

1

零值的一個基本問題是,它們的解釋沒有單一的普遍接受的含義,因此使用空值的結果經常不一致並且與預期意義不同。

通常,空值必須隱藏或從最終用戶中抽象出來。因此,如果開發人員決定將空值放入數據庫中,他通常還必須確定如何在稍後再次刪除它。

由於這些原因,完全避免使用空值或最大限度地減少它們的使用是有意義的。

如果您確實允許使用空值,那麼您應該仔細定義這些空值的含義並對其進行正確處理,並確保您的代碼正確處理它們。如果你不使用空值,那麼你通常不需要這樣做 - 儘管你可能想要設計你的代碼,以至於即使數據庫中不存在空值也不會生成空值。

1

空是「不可避免的與任何現有的SQL引擎」和「數據管理的瘟疫和霍亂一體化」。

使用SQL時,關鍵是要記住,您的SQL表確實處於「物理設計」級別,您希望只保留同一對象的不同屬性p1,p2,p3的單個記錄,由一些標識符I識別爲單行(I,p1,p2,p3)。即使其中一些屬性碰巧「未知」。 (我沒有提到「N/A」,這個特殊含義暴露了設計缺陷)

但是,SQL級別與您的應用程序(/用戶)可能想要的「邏輯級別」來處理,因爲那個「邏輯層次」包含三個單獨的種事實斷言:「我有屬性p1」,「我有屬性p2」和「我有屬性p3」。在的水平,你不想被這三個中的任何一個都未知的事實所困擾。

相關問題