我無法弄清楚如何設計我的項目中幾個表格之間的關係。我通常在項目的應用程序部分工作,但我一直負責DB(PostgreSQL)的工作。我正在盡我所能瞭解如何正確構建數據庫。在社交網絡中處理來自各種頁面類型的帖子
該項目的結構非常像社交網絡(例如Facebook)。個人註冊該網站爲user
。 A user
然後能夠創建和管理頁面,例如business
或school
。所有用戶和頁面都有允許發佈帖子的Feed。我已將每個頁面類型和用戶放入單獨的表格中,因爲它們沒有太多共同的信息。目前只有兩種不同的頁面類型,但將來會添加更多頁面類型。但是,我很難弄清楚如何設計posts
表。
用戶和頁面都可以發佈到任何其他用戶或頁面的牆上。由於海報和postee都可以是user
或兩種頁面類型之一,所以我無法弄清楚如何正確存儲引用。
起初,我曾考慮添加一列,如from_id
,from_type
,to_id
和to_type
,但我的理解是這不是最佳實踐。由於所有用戶和頁面都可以過帳,因此我不能爲每個單獨的帖子部分創建一個表格(例如 - business_posts
)。
我讀過下面的帖子,但我不知道我完全理解答案,或者如果它甚至適用於什麼,我試圖做的:
Why can you not have a foreign key in a polymorphic association?
這將是最好創建某種超級表,如上面答案中所示的那種?我不太確定那是什麼樣子。我只是在尋找人來指引我走向正確的方向。
謝謝。
它如何能夠簡單地區分'id'?作者和目標都可以是用戶,學校或企業。如果沒有這種類型,我不知道該用哪個表來指向'id'。 – David
你應該讓你的id獨一無二,而不是跨表重複。然後你可以在'users'和'business'表中找到id - 只有一個會包含它。 – zyamys