我在数据库中有三个表:
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);
国家和城市表已经填充了详细信息,用户表为空。每个记录的所有表都有默认值“none”。
我有一个简单的界面,要求输入电子邮件和密码进行注册。
因此,当用户输入电子邮件和密码时,mysql不允许插入。它显示以下错误:
Cannot add or update a child row: a foreign key constraint fails
这是因为
user
表无法插入任何未在country
和city
表中的country_code
和city_id
值。而用户还没有给出值,缺省值为none,这不在两个父表中。那么,如何处理完整性?我应该在子表(即
user
)中将两个外键的默认值都设为NULL
吗?我已经尝试了将默认值设为NULL,它可以正常工作。我想知道这是否会对我的数据库设计完整性问题造成破坏?这是一种适当的方式吗?
null
应该是默认值。没有值。但是你需要允许那些列中存在null
值。 - juergen d