您好,我已经开始将access转移到mysql中,我想知道是否有一个约束或其他东西可以使一个列不是null,并且其中仍然有空值?
这不是我自己的数据库,如果是我自己的数据库,我只需要填充空字段,然后将列更改为not null。
发布于 2011-11-08 18:39:13
是的,有多种方法可以在不使用空值的情况下对丢失信息进行建模。
您可以选择一个值来表示缺失。这很难理解,所以这里有几个例子。对于开放式期间(即已开始但正在进行但尚未完成)中的end_date属性,请使用较远的日期,如9999-12-31。对于person_middle_name属性,Joe Celko建议将元数据值放在双花括号中,例如{{NK}}表示“未知”,{{NA}}表示“不适用”等。
另一种比较直观的建模缺失信息的方法是在表中不显示一行。如果员工没有拿薪水,那么就不要在Payroll表中为他们添加行,从而使他们有别于在Payroll表中拿不到由零的salary_amount表示的薪水的有薪员工。
另一种方法是在表中显示一行。您可以拥有用于Salaried、Unsalaried和SalaryUnknown的表,并确保每个员工在其中的一个表中只有一行(可能在MySQL中使用触发器和/或过程强制执行)。
https://stackoverflow.com/questions/8041782
复制相似问题