讓我們拿一張表來存儲客戶向我們發送的消息。因此,假設客戶要求我們向他們發送對他們發送給我們的信件的回覆,我們還希望存儲在該表中。如果他們已經要求回覆,那麼我們通過記錄他們的電子郵件地址和預期日期來存儲該信息。如果他們不想回復,我們不需要他們的電子郵件地址。SQL架構設計 - 使用可空字段替換布爾列
Correspondences
Primary_key
Content
Date
Response_expected
Return address
Return date
或者,我們可以擺脫response_expected列的完全並同意返回null地址/歸期表示「沒有響應預期」,和一個非空的一個手段,一個響應的預期。應用程序將負責使用此邏輯,而不是檢查明確的「我們是否需要響應?」領域。
(假設爲了這個問題,約束已到位,以便返回地址和日期必須爲空,除非預期的響應是肯定的......我的觀點是這一列不會被誤用或用於其他目的)
我的問題是:這種設計,應用程序必須同意解釋數據的特定方式,是否可以接受?另一方面,我們存儲的數據超出了我們的需求,因爲如果他們不期待回覆,我們絕對不會有回覆地址和日期。
謝謝。這看起來確實是常見的POV:額外的列並不重要,顯式(但非重複)數據更重要。 – Jeremy