一尘不染

如何在一个字段的2个表之间建立多对一关系

sql

我正在为项目构建数据库架构,但在这个问题上我有些困惑。我有2张桌子:

USER表:

Id  Name    Contact_ID
1   Arun    2
2   Barath  3
3   Charan  2
4   Dinesh  1

联系人表:

ID  Name    Phone   Mail
1   Mahesh  1234    Mahesh@Yahoo.com
2   Suresh  54321   Sureh@Google.com
3   Jayesh  9876    Jayesh@Bing.com
4   Ganesh  98754   Gahesh@Safari.com

USER中的每个用户都会在CONTACT中有一个联系人。如果用户只有一个联系人,则可以在USER中的Contact_ID上使用外键关系,并建立它们之间的关系。

但是,如果USER表中的用户在CONTACT表中有多个联系人怎么办?我不确定如何建立它们之间的关系。

例如:在Charan用户的USER中,有一个联系人,联系人2,但是如果还有一个联系人,联系人4,该怎么办?在那种情况下,我该如何建立多对一关系?


阅读 121

收藏
2021-05-16

共1个答案

一尘不染

看来您已经倒退了。您的CONTACT表应该具有对USER表的外键引用,而不是USER包含对CONTACT的外键引用。例如:

USER表

Id  Name 
1   Arun  
2   Barath 
3   Charan 
4   Dinesh

联系表

ID  Name    Phone   Mail                USER_ID
1   Mahesh  1234    Mahesh@Yahoo.com    1
2   Suresh  54321   Sureh@Google.com    2
3   Jayesh  9876    Jayesh@Bing.com     1
4   Ganesh  98754   Gahesh@Safari.com   3

当然,我只是在新的USER_ID列中使用了虚假数据。如您所见,具有ID 1(Arun)的USER在CONTACT表中具有多个联系人(ID 1和3)。

2021-05-16