我无法弄清楚如何设计项目中几个表之间的关系。我通常在项目的应用程序部分工作,但我的任务是DB(PostgreSQL)工作。我正在尽力了解如何正确构建数据库。
该项目的结构非常类似于社交网络(例如 - Facebook)。个人以user
的身份注册该网站。然后,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?
最好是创建某种超级表,例如上面答案中显示的那个?我不太确定那会是什么样子。我只是想找个人指出我正确的方向。
感谢。
答案 0 :(得分:0)
帖子有作者(用户)和目标(用户,商家,学校)。您只需要将target_id存储在posts表中。帖子不关心目标的类型,只关心它的id。