处理社交网络中各种页面类型的帖子

时间:2016-05-12 05:41:49

标签: database postgresql

我无法弄清楚如何设计项目中几个表之间的关系。我通常在项目的应用程序部分工作,但我的任务是DB(PostgreSQL)工作。我正在尽力了解如何正确构建数据库。

该项目的结构非常类似于社交网络(例如 - Facebook)。个人以user的身份注册该网站。然后,user可以创建和管理页面,例如businessschool。所有用户和网页都有允许发帖的Feed。我将每个页面类型和用户放在单独的表中,因为它们没有很多共同的信息。目前只有两种不同的页面类型,但将来会添加更多。但是,我无法弄清楚如何设计posts表。

用户和页面都可以发布到任何其他用户或页面的墙上。由于海报和postee都可以是user或两种页面类型之一,我无法弄清楚如何正确存储引用。

首先,我考虑添加from_idfrom_typeto_idto_type等列,但我的理解是这不是最佳做法。由于所有用户和网页都可以交叉发布,因此我不能仅为每个帖子区域创建一个表格(例如 - business_posts)。

我已阅读以下帖子,但我不确定我是否完全理解答案,或者它是否适用于我正在尝试做的事情:

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

最好是创建某种超级表,例如上面答案中显示的那个?我不太确定那会是什么样子。我只是想找个人指出我正确的方向。

感谢。

1 个答案:

答案 0 :(得分:0)

帖子有作者(用户)和目标(用户,商家,学校)。您只需要将target_id存储在posts表中。帖子不关心目标的类型,只关心它的id。