【发布时间】:2015-01-10 11:51:55
【问题描述】:
我在数据库中有三个表:
user (user_id(pk), username, email, password, country_code(fk), city_id(fk));
country (country_code(pk), country name);
city (city_id(pk), city_name);
国家和城市表格已经填满了详细信息。用户表为空白。所有表的每条记录都有默认值“无”。
我有一个简单的界面,要求输入电子邮件和密码进行注册。
所以,当用户输入电子邮件和密码时,mysql 不允许插入。它显示以下错误:
Cannot add or update a child row: a foreign key constraint fails
这是因为user 表无法为country_code 和city_id 插入不在country 和city 表中的任何值。并且用户还没有给出值,默认值是none,不在两个父表中。
那么,如何处理诚信?我应该将NULL 作为子表中两个外键的默认值(即user)吗?我尝试给默认值 NULL 并且它正在工作。我想知道它是否不会对我的数据库设计中的完整性问题造成任何麻烦?这是一个正确的方法吗?
【问题讨论】:
-
是的,
null应该是默认值。没有价值。但是您需要允许这些列的空值 -
@juergend 谢谢..我应该只在那些有外键的列中允许空值吗?
-
在所有可以没有值的列中。如果不需要,为什么要存储一些东西?
标签: mysql database database-design foreign-keys relational-database