呼如林
2019-06-29 17:24:15
可以對(duì)兩個(gè)可能的表之一執(zhí)行MySQL外鍵嗎?這是我的問(wèn)題-我有三張桌子:地區(qū),國(guó)家,州。國(guó)家可以在區(qū)域之內(nèi),國(guó)家可以在區(qū)域內(nèi)。區(qū)域是食物鏈的頂端?,F(xiàn)在,我添加了一個(gè)具有兩列的Popular_Regies表:Region_id和Popular_Place_id。是否有可能使Popular_Place_id成為任何一個(gè)國(guó)家的外鍵?或各州。我可能需要添加一個(gè)流行的_place_type列,以確定id是以任何方式描述國(guó)家還是州。
3 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
這不是世界上最優(yōu)雅的解決方案,但您可以使用混凝土表繼承才能讓這件事行得通。
從概念上講,你提出了一類(lèi)“可以成為流行領(lǐng)域的東西”的概念,你的三種類(lèi)型的地方都繼承了這些東西。您可以將它表示為一個(gè)表,例如,places
中的一行具有一對(duì)一的關(guān)系。regions
,?countries
,或states
..(可以將區(qū)域、國(guó)家或州(如果有的話)共享的屬性推入此Place表中。)你的popular_place_id
然后是對(duì)Place表中的行的外鍵引用,該行將引導(dǎo)您到達(dá)某個(gè)區(qū)域、國(guó)家或州。
您提出的第二列描述關(guān)聯(lián)類(lèi)型的解決方案恰好是Rails處理多態(tài)關(guān)聯(lián)的方式,但我一般不喜歡這樣做
添加回答
舉報(bào)
0/150
提交
取消