[英]Setting default value of foreign key?
我在數據庫中有三個表:
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_code
和city_id
中不在country
和city
表中的任何值。 並且用戶尚未給出值,默認值為none,這兩個父表中都沒有。
那么,如何處理誠信? 我應該將NULL
作為子表( user
)中兩個外鍵的默認值嗎? 我嘗試給出默認值NULL並且它正在工作。 我想知道,如果它不會對我的數據庫設計中的完整性問題造成任何麻煩? 這是一種正確的方式嗎?
通過這些設計,您只需為表country
和city
添加“ (無) ”記錄即可。
這樣,您就有兩個“ 魔術值 ”, country_code
和city_id
與這個' (無) '記錄相關,在用戶表的新條目中用作country_code(fk) , city_id(fk)的默認值。
您還可以為country_code
和city_id
避免“ magics ”(我的意思是特殊含義的常量值),只為country_name
和city_name
選擇硬連線' (none) '值,並通過country_name
上的where條件選擇相應的主鍵和city_name
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.