【问题标题】:how to design a database model to record client's history activity?如何设计一个数据库模型来记录客户的历史活动?
【发布时间】:2025-12-12 09:35:01
【问题描述】:

在我的应用程序中,一个问答应用程序。我选择MySql作为它的数据库。一旦用户A在时间X回答用户B的问题Q,我应该向B推送一条A已经回答Q的消息。合理地,我也应该记录这两件事,一个是给A的,你在X的时间回答了B的问题Q,另一个是给B的,你的问题Q被A在X的时间回答了。相应地,这些记录应该可以被用户在未来查看. 我应该如何设计一个数据库系统来保存这些用户历史? 我有三张桌子:

  1. 一个用于问题项

它包含一个字段 question_item_xmltree_path 保存 answer_item_id 通过 json 回答这个问题,就像 ["120","121","122"],我知道这是一个非常糟糕的方式。 一个

  1. 一个用于关键项目

包括一些描述键的字段,例如 raiser_name raise_time

【问题讨论】:

  • 你应该把你已经拥有的东西发布到现在。

标签: android mysql database database-design content-management-system


【解决方案1】:

你做错了。
想想你在文本中描述实体的方式——有用户、问题和答案。这些是系统的主要实体,应该是数据库中的主要表。由于用户可以发布许多问题,而每个问题可能由单个用户发布,因此这些表之间存在 1:m 关系。问题和答案以及用户和答案也是如此。

长话短说 - 从这个基本设计开始:

TblUsers (user details)
TblQuestions (question details, and an fk to tblusers, for the user that asked the question)
TblAnswers (answer details, an fk to tblusers for the user that posted the answer, and an fk to tblquestions for the question that it belongs to).

从这个结构中,您可以获得基本问答应用程序所需的所有信息。

【讨论】: