Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 两个相同的外键从同一个表进入另一个表?_Mysql_Ruby On Rails 3_Database Design_Foreign Keys - Fatal编程技术网

Mysql 两个相同的外键从同一个表进入另一个表?

Mysql 两个相同的外键从同一个表进入另一个表?,mysql,ruby-on-rails-3,database-design,foreign-keys,Mysql,Ruby On Rails 3,Database Design,Foreign Keys,一个表中有两列可以是同一表中的外键,可以吗 例如: 我有一个包含列的“地址”表: id、街道、城市id、州、国家(或id、街道、城市id、州id、州id) 我有一个“州”表,其中包含州和国家: id、名称、级别 所以我可以把states\u id放在地址表的state和country中吗(如上面的括号中)?是的,这完全可以 Ed Gibbs是对的,如果国家暗示国家,不要这样做 在您的示例中,为了清晰起见,可能最好将表拆分为两个不同的表,例如State和Country,但从总体上看,这种做法没有问

一个表中有两列可以是同一表中的外键,可以吗

例如:

我有一个包含列的“地址”表:
id、街道、城市id、州、国家(或id、街道、城市id、州id、州id)

我有一个“州”表,其中包含州和国家: id、名称、级别


所以我可以把states\u id放在地址表的state和country中吗(如上面的括号中)?

是的,这完全可以

Ed Gibbs是对的,如果国家暗示国家,不要这样做

在您的示例中,为了清晰起见,可能最好将表拆分为两个不同的表,例如
State
Country
,但从总体上看,这种做法没有问题


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

您能否显示
状态
表中的一些示例行?如果州意味着国家,那么您不需要(也不希望)在
地址
表上有
国家
标识符。我还没有创建该表。我正在考虑这个设计。但是是的,它也会有国家和一些细分(但不是全部,我会让用户在他们来的时候输入细分)。每个条目将有一个国家的ISO3166-1,如果需要,还有一个州的ISO3166-a2(也可能出现在ISO3166-1列表中)…例如,美国,波多黎各是一个分支,英国有威尔士,中国有台湾(两者都出现)。因此,我会通过不同的方式阅读states表,过滤掉state和country可能的输入。这正是我所看到的情况,我也将面对你的例子。