我要让用户输入的主要数据是一个称为“活动”的对象,该对象由几个文本字段,一些字符串等组成。其中一个文本字段称为“说明”,可能相当较长(例如较长的博客文章)。对于每个用户,我想将其所有活动对象存储在mysql数据库中。

这是我想到的一些解决方案:


对于每个用户的活动都有一个单独的mysql表,即activity_userX,X
使用json将这些对象编码为字符串并将它们存储为主表中的列
对于所有这些活动对象都有一个单独的表,并对其进行索引;那么对于主表中的每个用户,都有一个与他们的活动相对应的索引列表。


这些方法的优点/缺点是什么?更重要的是,我还能做什么?

谢谢。

最佳答案

对于每个用户的活动都有一个单独的mysql表,即activity_userX,X


每个用户都有一张桌子吗?那只是意味着疯狂的表数量。


  使用json将这些对象编码为字符串并将它们存储为主表中的列


JSON是一种很好的传输语言。您有一个用于存储数据的数据库,请使用其功能。


  对于所有这些活动对象都有一个单独的表,并对其进行索引;那么对于主表中的每个用户,都有一个与他们的活动相对应的索引列表。


越来越近。

这种关系通常被称为“有很多”。在这种情况下,“用户有很多活动”。

您应该有一个用户表和一个活动表。

活动表的列之一应该是指向用户表的主键的外键。

然后,您将可以执行以下操作:

SELECT fields, i, want from activities WHERE userid=?


要么

SELECT users.foo, users.bar, activities.description from users,activities
    WHERE user.userid=activities.userid

09-10 12:51
查看更多