您好,我已经开始将访问权限转移到 mysql 中,我想知道是否存在约束或我可以使用的东西来使列不是 null
并且其中仍然有空值?
这不是我自己的数据库,如果是的话,我会填写空白字段,然后将列更改为非null
。
最佳答案
是的,有多种方法可以在不使用空值的情况下对缺失信息进行建模。
您可以选择一个值来表示缺失。很难归类,所以这里有几个例子。对于开放式期间(即已经开始但正在进行且尚未结束)的 end_date
属性,使用一个遥远的 future 日期,例如 9999-12-31
。对于 person_middle_name
属性,Joe Celko 建议将元数据值放在双花括号中,例如{{NK}}
表示“未知”,{{NA}}
表示“不适用”,等等。
另一种对缺失信息进行建模的直观方法是通过表格中缺失的行。如果员工没有领薪水,则不要在 Payroll
表中为他们添加一行,从而使他们与目前没有领到薪水的领薪员工区分开来,用 salary_amount
表示Payroll
表中的零。
另一种方法是通过表中存在的行。您可以为 Salary
、Unsalaried
和 SalaryUnknown
设置表,并确保每个员工在其中一个表中只有一行(可能在 MySQL 中使用触发器和/或程序)。
关于mysql - null 和 not null mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041782/