我正在制作一个网站,允许用户在桌面上注册并记录他们的日常活动。他们的活动将存储在MySQL数据库中,并将使用jQuery/PHP进行显示。构建用于记录用户大量动态数据的数据库
下面是数据类型的示例图片存储
的问题是,我不知道如何正确地存储这种类型的信息。
我原本打算为每个用户创建一个表,名为$userid . "_activies"
或沿着这些行的东西,列id, user_id, type, location, duration, date
。然后为了读取数据,我会简单地检查他们想要的日期并加载所有符合该日期的活动。这工作正常,但我不知道如何正确更新现有的条目。
例如:在上面的图片中,如果你想改变“厨房”行的持续时间,你将如何去检测它是否已经存在于数据库中?你不能简单地在2012年11月18日检查包含“清洁”和“厨房”的行,然后覆盖它,因为厨房可能在清洁部分出现多次(例如,他们在去清洁厨房后第二次清洗厨房浴室)。
我本来想过让每个<tr>
必须等于该加载它,那么当它的时间来保存数据的数据id
领域的ID,检查排id
已经存在,覆盖它。这对我的问题似乎是一个糟糕的解决方法。
我希望能够完全清除整天的原始数据,并在保存时使用表中包含的任何内容重写它。只删除表中与表的日期相匹配的每一行,然后写入新的信息是否合理?或者有更好的方式来存储这些信息。例如,我应该为每个用户每天创建一个新表吗?这似乎很多表...
我很难过,任何人都可以分享任何想法建立数据库的方式?
那么主要问题是每天更新数据。例如,如果每一天都有自己的活动表,那么我可以删除整个表并用新数据重新创建它,但我不确定这是不是很好的做法,并且会创建大量的表(1每个用户每天的表)。 – Sandoichi
另外,在你的解决方案中,你会为每个用户创建一个单独的活动表吗?示例:用户332将读/写表:activity_332?或者每个用户只有一个巨大的活动表? (我认为一张桌子会变得太大,这可能会减慢查询的速度吗?) – Sandoichi
也许我并没有正确理解你的问题。我不认为每天都需要自己的桌子,除非你真的打算为每天更新的人们绘制强硬的线条。如果用户错过了一两天怎么办?你想让他们回到一个完全空白的屏幕?将它们的最后一天的活动存储到再次更新之前似乎更有意义。在这种情况下,一旦user_332登录并记录他12月13日的第一个活动,您可以简单地删除user_332的所有记录,其中activity_date不等于12月13日。 –