SQL架构新闻源

时间:2017-12-08 18:12:34

标签: php sql news-feed

我正在创建一个新闻源风格的应用程序,它将为公司创建一个社交网络。

创建状态时,您可以选择状态可见的受众,在这种情况下,该公司内的业务将是不同的。

例如,来自'Business 1'的'John'想要发布关于他们季度业绩的状态,但只希望他的业务人员能够看到它。

然而,来自'Business 2'的'Jane'正在生孩子,希望她的帖子被整个公司(所有商家)看到。

最初,我计划创建一个'NewsFeed'表,其中包含一个受众群列,其中包含了该帖子可见的每个商家的数组。例如:[“业务1”,“业务5”,“业务7”],应用程序将检查用户所在的业务是否包含在数组中,如果为true则会显示该帖子。

我不确定这是执行此操作的最有效方法,并且似乎没有特别的可扩展性。

我还考虑为每个部门创建一个“NewsFeed”表,并根据状态更新中选择的受众选项将其插入到这些表中。但是,如果我们最终有很多业务,我认为这也可能效率低下?

为了最有效地实现此功能,在数据库中构建表的最佳方法是什么?

感谢

2 个答案:

答案 0 :(得分:1)

创建2/3表比使用单个表更好的选择 - 表1>使用列 NewsFeedId NewsFeedText 的NewsFeed 表2>包含 NewsFeedId BusinessId

列的NewsFeedPublish

对于节省空间的设计,使用 BuisnessId BusinessName 进行表业务更好,但如果您不想创建此表,则可以直接在表2中使用 BusinessName 代替 BuisnessId

答案 1 :(得分:1)

您定义的关系是1:M关系。 0或更多业务可以看到每个状态。

我会创建一个NewsFeed表和一个Business表,然后是一个位于这两个表之间的表 - 比如说NewsFeedBusiness。

在NewsFeedBusiness表中,您将NewsFeedID作为引用NewsFeed的外键,并将BusinessID作为Business表的外键。我还会在NewsFeedID + BusinessID上添加一个唯一键,以防止NewsFeed记录在同一个业务中两次。