我有一個關於數據庫建模的問題。SQL強制執行1:1關係
假設我有一個表的用戶:
users
-------
id:int
name:text
而且一個USER_EMAILS:
user_emails
-----------
id:int
user_id:int
email:text
我添加了一個外鍵約束上user_emails.user_id
這樣,它必須在users.id
有效的條目匹配。
但是,這並不能保證每個用戶都有電子郵件。我知道在應用程序級別,我可以很容易地強制執行此操作(即:通過驗證表單中'email'字段是否填充等),但我想知道,在數據庫(sql)級別有一個強制數據完整性的方式? (也就是說,在這種情況下,每個用戶都有一封電子郵件?)
謝謝! :)
只是添加不爲空,但你的標題說是不同於你的文章說的,你想執行,1:1關係或不空值?如果您想要第一個選項,那麼只需忘記user_emails表,然後將該列添加到主表用戶中,如果您想要第二個表,則只需放置非空列或更好地使用兩者。 –
爲什麼不使用觸發器? –
正如@JuanRuizdeCastilla所示,只需在您的電子郵件:文本字段中添加NOT NULL約束即可。 – narendra