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