我有一个用户表和一个问题表。问题表将包含代表问题或答案的“问题”,“答案”和“评论”的记录。我想为每个用户创建一个仪表板,可以在其中查看与问题和答案相关的活动。例如,如果用户A创建了一个问题而用户B以答案回应而用户C以对用户B的答案的评论作出回应,那么用户A和B就能够在他们的仪表板中看到所有这些活动。
这类似于Facebook主页的工作方式,如果我放置视频,我可以看到人们对我的视频的评论。
有人能建议一种简单的方法在数据库中对此进行建模吗?
答案 0 :(得分:2)
我相信Facebook等。人。通过拥有一个通用“更新”记录的单独数据库来处理这个问题,这些记录简要描述了所采取的行动。每当有人在网站上执行应该显示在墙上的操作时,也会在更新数据库中插入记录。
答案 1 :(得分:0)
好的,这是你可以尝试的...你不能在同一张桌子上弄乱问题,答案和他们的评论。一个问题可以有很多答案,不同的答案可以有不同的评论。将所有这些保存在同一个表中将非常混乱,不推荐(违反RDBMS规则)。制作三个单独的表,一个用于问题,一个用于答案,一个用于评论。根据主键和外键定义它们之间的关系。因此,在问题表中的任何时间点,您都可以获得所有用户提出的所有问题。答案表将公布与该特定问题相对应的所有答案,评论表将对相应答案进行评论。在所有表格中维护适当的支持列,您可以轻松管理所需的内容。在任何时候,您都可以通过加入问答表来查看与特定问题相关的所有答案,您也可以通过加入答案和评论表来查看对特定答案所做的所有评论。
希望这会给你一个IDEA ..
答案 2 :(得分:0)
如果你打算使用一张桌子,你可能想尝试这样的事情。
TABLE { ID, PARENTID, 用户身份, 类型, 文本, PostDtm }
这为您提供了一个表中的基本树结构。
权衡的是,您可能会有更复杂的查询,并且可能需要更多查询来实现您想要的目标。
确保至少在id列上有索引。
我仍然不确定您需要多少性能。像facebook这样的网站必须考虑的不仅仅是表级优化。对于大多数站点,可以比该模型更有效地查询教科书关系模型。您的绩效目标是什么?
答案 3 :(得分:0)
enter code here
@ Am,我的假设是咬紧牙关如果使用MySQL然后使用关系或移动到不同类型的数据库,如果你想完全摆脱关系表。您希望实现RDB模型的非典型“干净”实现。对于RDB,我建议您使用四个表:users,user_map,questions,response。响应是分类的(例如,问题或答案),因此跟踪哪种类型,任何表中唯一的外键是question.id和user.id。
Users: id, name
User_map (can be used with Questions and/or Responses to join the data): u_id, q_id
Questions: id, text_value
Responses: id, q_id, text_value, category
您是否真的确定关系是您需要优化或仅仅过度分析的东西?如果您需要远离基于关系的数据库,那么我建议您研究为其构建的技术。