在一个表中有两列可以是来自同一表的外键,这样可以吗?
例如:
我有一个“address”表,表中有列:
id,street,city_id,state,country(或id,street,city_id,state_id,state_id)
我有一个'states'表,保存状态和国家:id、name、level
那么我可以把states_id放在地址表的state和country中吗(如上面的括号中所示)?
是的,完全可以。
Ed Gibbs的观点是对的,如果国家意味着国家,就不要那么做。
在您的示例中,为了清晰起见,最好将表拆分为两个不同的表,例如state
和country
,但从一般的观点来看,这种做法没有问题。
这种情况(一个表中的2个FK都引用了另一个表)经常发生,例如,在消息
表中,有一个发送者
和一个接收者
,这两个都引用了同一个用户
表。