2
將外鍵存儲在jsonb列中有什麼問題?在postgresql jsonb中存儲外鍵是一個壞主意?
上下文:
我有一個項目表:
Item
--------------------------
| id | name | property |
| PK | text | jsonb |
的屬性列是下列結構的一個級別jsonb:
[
{"value": "white", "item_attribute_id": "1"},
{"value": "71", "item_attribute_id": "3"},
{"value": "29", "item_attribute_id": "4"},
{"value": "48-70", "item_attribute_id": "5"},
{"value": "190", "item_attribute_id": "6"}
]
的item_attribute_id是一個外鍵指向屬性表,該表包含與給定屬性(名稱,類型,描述)相關的所有內容。
我找不到任何有關爲什麼這可能是一個好/壞做法的文獻。是否有任何明顯的直接相關的問題,我忽略了?
你會如何選擇名稱,類型和描述爲一個項目的所有屬性? – Kenney
我試圖找到某種方式,但在我看來,我需要利用我的ORM來做到這一點(我使用ActiveRecord,它支持jsonb列)。你有沒有想到什麼? – jiroch
事實上 - 你需要ORM,查詢會比說'SELECT * FROM item_attributes LEFT JOIN attributes USING(attribute_id)where item_id =?'更復雜。通常,我不會使用JSON或任何其他基於文本/二進制的複雜內容來存儲引用數據庫本身的信息,但會使用正確的FK,這樣數據庫將強制執行它們。我有足夠的麻煩,使用一個MysqlDB,它有一個存儲外鍵爲'\ 0'分隔值的列......但是如果它對你有用,它支持得很快,而且查詢不會變得不必要的複雜,爲什麼不。 – Kenney