关于让用户与其他用户共享帖子的功能的最佳数据库设计

时间:2012-03-25 09:06:07

标签: postgresql database-design left-join

我想实现允许用户与其他用户分享帖子的功能,类似于Facebook和Google+分享按钮和Twitter转发的内容。

有两种选择:

1)我创建帖子的副本,并有一个跟踪原始帖子ID的列,并明确这是一个共享帖子。

2)我有一个单独的表共享帖子,我保存post id,这是一个在post表中发布id的外键。

在编程方面谈论基本上我在一个单独的表中保持指向原始帖子的指针,当需要用户发布帖子和共享的帖子时我在帖子和共享帖子表上做了左连接

    Post(post_id(PK), post_content, posted_by)

    SharedPost(post_id(FK to Post.post_id), sharing_user, sharedfrom(in case someone shares from non owners profile))

我赞成第二选择,但想知道专家的意见吗?

我的webapp上的更多帖子将更多地基于facebook尺寸而非推文大小。

1 个答案:

答案 0 :(得分:1)

我建议您的系统执行以下两种操作之一: 将代码内联到引用原始帖子的帖子(类似于超链接)。我不知道你是不是想拉进图像或其他媒体。当您遇到此内联代码时,您的系统可以创建超链接以查看原始内容,也可以将原始数据提取到共享内容的帖子中。

或者,您的posts表可以包含shared_post的列,该列可以是post_id,也可以是要分享的外部项的超链接。然后,您的系统可以识别出,如果值为null-1,则该值不是共享帖子,可以正常处理。

我不建议创建一个用于存储共享帖子重复项的新表。维护和更新变得更加困难。

此外,如果您计划在此系统中使用共享组,则很可能需要另一个将post_idsharing_group_id相关联的表格。