【发布时间】:2014-09-05 14:49:28
【问题描述】:
我遇到了数据库设计问题,而且我对 MySQL 还是很陌生,所以我想我会在这里问。从多个表中获取按时间顺序提供的数据的最佳方法是什么?例如,用户做了很多事情,他们投票、评论、评分、提问。我将所有这些信息保存在他们各自的表格“tblVote”、“tblRate”等中,现在是棘手的部分。一个用户可以关注一个或多个用户,假设您关注了 3-4 个人。关注可让您在您的信息流(如 Facebook 或类似网站)中查看他们的互动、投票、评分、评论、提问等。
从所有 5 个表格中获取他们关注的每个人的所有信息,然后按时间顺序对所有信息进行排序的最佳方法是什么?我假设我目前的方法(foreach 追随者获取所有选票、cmets、评级等并进行排序会很糟糕)
我的工作理论,所以我的工作想法是创建一个交互表,其中有一列用于用户 id、其他表条目的 id 和类型引用。比如
用户 ID |交互 ID |输入
9 1232 Comment
10 80 Rating
9 572 Vote
然后你可以继续获取他们关注的每个人的所有交互,排序然后说获取前 10 名?并查询各个数据库以获取完整信息(评论时间、评论文本等)
【问题讨论】:
-
为什么不在用户关注者之间建立多对多关系。然后使用常规连接从这 5 个表中获取您需要的所有信息,按 datetime_col 排序,LIMIT 10?我只是想知道是什么阻止了你做你想做的事?
-
就像我说的我还不是 mysql 的超级隐私,我只是假设每个用户每个表抓取数百/数千行将是疯狂的资源密集型。
标签: mysql database database-design relational-database database-schema