提问者:小点点

两个相同的外键从同一个表到另一个表?


在一个表中有两列可以是来自同一表的外键,这样可以吗?

例如:

我有一个“address”表,表中有列:
id,street,city_id,state,country(或id,street,city_id,state_id,state_id)

我有一个'states'表,保存状态和国家:id、name、level

那么我可以把states_id放在地址表的state和country中吗(如上面的括号中所示)?


共1个答案

匿名用户

是的,完全可以。

Ed Gibbs的观点是对的,如果国家意味着国家,就不要那么做。

在您的示例中,为了清晰起见,最好将表拆分为两个不同的表,例如statecountry,但从一般的观点来看,这种做法没有问题。

这种情况(一个表中的2个FK都引用了另一个表)经常发生,例如,在消息表中,有一个发送者和一个接收者,这两个都引用了同一个用户表。