我有兩個模型,彼此是一對一的。 A目前有一個B.兩個模型可以相互對應嗎?
最近我遇到很多情況下,如果A保持B的ID以便簡化邏輯和提高性能是可取的。不過,我不知道:
- 這是可能的
- 將違反和會議
- 任何想法真的
UPDATE
我錯了,左外連接會沒有受益於額外的外鍵。
我能想到的唯一的地方就是找到所有沒有B的A,每個100000+記錄都需要內連接。但是如果有一個id,那麼我可以直接知道哪個A有一個B.
我有兩個模型,彼此是一對一的。 A目前有一個B.兩個模型可以相互對應嗎?
最近我遇到很多情況下,如果A保持B的ID以便簡化邏輯和提高性能是可取的。不過,我不知道:
UPDATE
我錯了,左外連接會沒有受益於額外的外鍵。
我能想到的唯一的地方就是找到所有沒有B的A,每個100000+記錄都需要內連接。但是如果有一個id,那麼我可以直接知道哪個A有一個B.
我不相信這是可能的 - 您必須決定在哪裏保留外鍵。對於你來說,使用連接關係是否有意義,並且你現有的模型都可以通過連接使用has_one?
另一種替代方法是將A id放在B上,即非規範化。這可以讓你找出沒有B的A和A的B,這可能適用於B不經常在A之間移動的情況。
您目前使用has_one/belongs_to設置時看到了哪些性能問題? – Gareth 2012-04-16 07:39:35
目前我需要做一個LEFT OUT JOIN查詢,它需要根據B的存在以及其他許多條件,具有不同的查詢邏輯。 – lulalala 2012-04-16 07:47:19
請詳細說明您的模型以及爲什麼需要循環參考。 – Antoine 2012-04-16 07:54:39