很抱歉,如果已经涵盖了这一点 - 我一直在寻找几个小时,但我认为我只是缺乏有效搜索的词汇。
我正在试图弄清楚如何为每个用户存储个人资料信息。通过个人资料信息,我不是指电子邮件之类的信息,而是他们对我正在处理的网站的偏好。
这是一个语言学习网站,我希望用户能够保存他们的“进度”,让他们可以选择标记所学的课程。
我还想跟踪他们做了哪些练习,这样我就可以尝试只给他们没有做过的练习(或者当他们用尽可用的练习时,从最近的练习开始)。我只是不确定在哪里存储所有这些信息。
我是否应该有一个将用户链接到课程的查找表?我担心随着用户和表格数量的增加,这将变得越来越大。看到它只是一个布尔值,我考虑给每个用户一个int(后来更多的int作为一个数组),其中每个位代表一个课程,并对这些数字执行按位运算符,以获得有关他们保存的课程的信息。虽然这听起来好像将来很麻烦。
至于记住他们已经完成了哪些练习,我担心如果我尝试将其保存在mysql中,这将导致大量浪费。我是否可以尝试使用cookie在用户的计算机上完成此操作,任何禁用cookie的人都只需要处理重复的练习题?
也许我应该考虑其他表甚至其他数据库!我不知道!
对不起所有漫无边际的废话。至少我很欣赏一些我需要阅读的内容......
答案 0 :(得分:3)
用户和练习之间的查找表是最简单和最灵活的,你真的不必担心它的大小。它将具有用户ID,运动ID和某种进度变量,因此(根据您的需要)每行可能少于10个字节的空间。 100万行甚至不会占用10MB的空间。
一旦用户在特定练习上取得某种进展,我可能只会在表格中创建记录。因此,如果您尝试查找用户在练习中的进度并且找不到行,则表示他们没有对该练习进行任何操作。这样你只需要创建表示进度的行,并且它应该保持整体数字相当低。
答案 1 :(得分:0)
您需要一个联结表来将每个用户链接到不同的练习(多对多关系):
user_id(int) exercise_id(int) learned(boolean)
您不必为每个可能的组合添加条目,您可以在课程被标记为已学习时添加每个组合。
按位方法走的是一条糟糕的道路,你需要为每节课做一点......它不可扩展。