0
我來自舊學校的mysql,很驚訝postgresql可以做數組。ids vs postgresql中多行的數組
過去,假設您有User
和Fruit
表。每個用戶可以有多個水果。爲了存儲每個用戶的水果,我們需要創建第三個表來存儲用戶和水果ID。
但似乎PostgreSQL可以在User
有一列說fruits
,存儲Fruit.id
數組。
我的問題是,哪一個更好?在性能和可能的未來擴展方面。
我來自舊學校的mysql,很驚訝postgresql可以做數組。ids vs postgresql中多行的數組
過去,假設您有User
和Fruit
表。每個用戶可以有多個水果。爲了存儲每個用戶的水果,我們需要創建第三個表來存儲用戶和水果ID。
但似乎PostgreSQL可以在User
有一列說fruits
,存儲Fruit.id
數組。
我的問題是,哪一個更好?在性能和可能的未來擴展方面。
這取決於你想要對數據做什麼。但是,對於您給出的示例,在大多數情況下,交接表是更好的方法。說:
create table UserFruits (
UserFruitId serial primary key,
UserId int references users(UserId),
FruitId int references fruits(FruitId)
);
爲什麼?因爲您可以顯式聲明外鍵關係,並且數據庫在輸入數據時會對其進行驗證。另外,您可能希望在交匯表中包含其他信息,例如添加水果的日期/時間或價格。
如果您有其他類型的列表 - 說與其他表不相關,但只是列表 - 然後使用數組可以很有意義。從性能角度來看,這取決於你想要對列表做什麼。但是對於很多目的來說,如果這是一個問題,陣列會更快。
我發佈這個問題後,我實際上想過一些用例。但似乎你已經得到了他們的答案。謝謝! – user1865027