2016-05-12 20 views
0

我無法弄清楚如何設計我的項目中幾個表格之間的關係。我通常在項目的應用程序部分工作,但我一直負責DB(PostgreSQL)的工作。我正在盡我所能瞭解如何正確構建數據庫。在社交網絡中處理來自各種頁面類型的帖子

該項目的結構非常像社交網絡(例如Facebook)。個人註冊該網站爲user。 A user然後能夠創建和管理頁面,例如businessschool。所有用戶和頁面都有允許發佈帖子的Feed。我已將每個頁面類型和用戶放入單獨的表格中,因爲它們沒有太多共同的信息。目前只有兩種不同的頁面類型,但將來會添加更多頁面類型。但是,我很難弄清楚如何設計posts表。

用戶和頁面都可以發佈到任何其他用戶或頁面的牆上。由於海報和postee都可以是user或兩種頁面類型之一,所以我無法弄清楚如何正確存儲引用。

起初,我曾考慮添加一列,如from_id,from_type,to_idto_type,但我的理解是這不是最佳實踐。由於所有用戶和頁面都可以過帳,因此我不能爲每個單獨的帖子部分創建一個表格(例如 - business_posts)。

我讀過下面的帖子,但我不知道我完全理解答案,或者如果它甚至適用於什麼,我試圖做的:

Why can you not have a foreign key in a polymorphic association?

這將是最好創建某種超級表,如上面答案中所示的那種?我不太確定那是什麼樣子。我只是在尋找人來指引我走向正確的方向。

謝謝。

回答

0

一個帖子有一個作者(用戶)和一個目標(用戶,商業,學校)。您只需將target_id存儲在posts表中。這個帖子不關心目標的類型,只是它的ID。

+0

它如何能夠簡單地區分'id'?作者和目標都可以是用戶,學校或企業。如果沒有這種類型,我不知道該用哪個表來指向'id'。 – David

+0

你應該讓你的id獨一無二,而不是跨表重複。然後你可以在'users'和'business'表中找到id - 只有一個會包含它。 – zyamys