2017-08-12 48 views
0

我來自舊學校的mysql,很驚訝postgresql可以做數組。ids vs postgresql中多行的數組

過去,假設您有UserFruit表。每個用戶可以有多個水果。爲了存儲每個用戶的水果,我們需要創建第三個表來存儲用戶和水果ID。

但似乎PostgreSQL可以在User有一列說fruits,存儲Fruit.id數組。

我的問題是,哪一個更好?在性能和可能的未來擴展方面。

回答

1

這取決於你想要對數據做什麼。但是,對於您給出的示例,在大多數情況下,交接表是更好的方法。說:

create table UserFruits (
    UserFruitId serial primary key, 
    UserId int references users(UserId), 
    FruitId int references fruits(FruitId) 
); 

爲什麼?因爲您可以顯式聲明外鍵關係,並且數據庫在輸入數據時會對其進行驗證。另外,您可能希望在交匯表中包含其他信息,例如添加水果的日期/時間或價格。

如果您有其他類型的列表 - 說與其他表不相關,但只是列表 - 然後使用數組可以很有意義。從性能角度來看,這取決於你想要對列表做什麼。但是對於很多目的來說,如果這是一個問題,陣列會更快。

+0

我發佈這個問題後,我實際上想過一些用例。但似乎你已經得到了他們的答案。謝謝! – user1865027