MySQL:我在哪里将每个用户的个人资料信息存储在网站中?

时间:2010-11-29 20:13:25

标签: mysql history profiles

很抱歉,如果已经涵盖了这一点 - 我一直在寻找几个小时,但我认为我只是缺乏有效搜索的词汇。

我正在试图弄清楚如何为每个用户存储个人资料信息。通过个人资料信息,我不是指电子邮件之类的信息,而是他们对我正在处理的网站的偏好。

这是一个语言学习网站,我希望用户能够保存他们的“进度”,让他们可以选择标记所学的课程。

我还想跟踪他们做了哪些练习,这样我就可以尝试只给他们没有做过的练习(或者当他们用尽可用的练习时,从最近的练习开始)。我只是不确定在哪里存储所有这些信息。

我是否应该有一个将用户链接到课程的查找表?我担心随着用户和表格数量的增加,这将变得越来越大。看到它只是一个布尔值,我考虑给每个用户一个int(后来更多的int作为一个数组),其中每个位代表一个课程,并对这些数字执行按位运算符,以获得有关他们保存的课程的信息。虽然这听起来好像将来很麻烦。

至于记住他们已经完成了哪些练习,我担心如果我尝试将其保存在mysql中,这将导致大量浪费。我是否可以尝试使用cookie在用户的计算机上完成此操作,任何禁用cookie的人都只需要处理重复的练习题?

也许我应该考虑其他表甚至其他数据库!我不知道!

对不起所有漫无边际的废话。至少我很欣赏一些我需要阅读的内容......

2 个答案:

答案 0 :(得分:3)

用户和练习之间的查找表是最简单和最灵活的,你真的不必担心它的大小。它将具有用户ID,运动ID和某种进度变量,因此(根据您的需要)每行可能少于10个字节的空间。 100万行甚至不会占用10MB的空间。

一旦用户在特定练习上取得某种进展,我可能只会在表格中创建记录。因此,如果您尝试查找用户在练习中的进度并且找不到行,则表示他们没有对该练习进行任何操作。这样你只需要创建表示进度的行,并且它应该保持整体数字相当低。

答案 1 :(得分:0)

您需要一个联结表来将每个用户链接到不同的练习(多对多关系):

user_id(int) exercise_id(int) learned(boolean)

您不必为每个可能的组合添加条目,您可以在课程被标记为已学习时添加每个组合。

按位方法走的是一条糟糕的道路,你需要为每节课做一点......它不可扩展。

相关问题