2011-11-07 79 views
1

嗨我已經開始移動訪問到MySQL,我想知道是否有一個約束或我可以用來使一個列不是null並仍然有空值的東西嗎?null and not null mysql

這不是我自己的數據庫,如果是我只填寫空白字段,然後將列更改爲不是null

+8

將字段從空值切換到非空值應該會自動用MySQL中的缺省值填充它。儘管如此,反過來也是不正確的。切換不可爲空將不會將默認值字段更改爲空。 –

回答

1

是的,有多種方法可以在不使用空值的情況下爲缺失信息建模。

您可以選擇一個值來表示丟失。實現性別是非常困難的,所以這裏舉幾個例子。對於end_date屬性在開放式期間(即已開始但正在進行且尚未完成),請使用遠期日期,如9999-12-31。對於person_middle_name attributte,Joe Celko建議將元數據值放置在雙曲花括號中,例如{{NK}} for'not known',{{NA}} for'not applicable',等等。

另一種用於建模缺少信息的直觀方法是在表中缺少一行。如果僱員沒有工作,那麼不要在Payroll表中爲他們添加行,從而使他們與Payroll表中當前沒有收到工資表salary_amount爲零的工資員工不同。

另一種方法是通過在表中存在一行。您可以使用Salaried,UnsalariedSalaryUnknown的表格,並確保每個員工在這些表格中的一箇中都有一行(可能在MySQL中使用觸發器和/或過程強制執行)。