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

标签 mysql history profiles

抱歉,如果这已被涵盖 - 我已经找了几个小时,但我想我只是缺乏有效搜索的词汇。

我正在尝试弄清楚应该如何存储每个用户的个人资料信息。我所说的个人资料信息并不是指电子邮件等信息,而是指他们对我正在工作的网站的偏好。

这是一个语言学习网站,我希望用户能够保存他们的“进度”,让他们可以选择将类(class)标记为已学。

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

我应该有一个将用户与类(class)链接起来的查找表吗?我担心随着用户和表数量的增加,这个数字会变得巨大。由于它只是一个 bool 值,我考虑给每个用户一个 int (以及后来更多的 int 作为数组),其中每个位代表一个类(class),并对这些数字执行按位运算符以获取有关他们保存的类(class)的信息。 .尽管这听起来将来可能会很麻烦。

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

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

抱歉说了这么多废话。至少我会很感激一些关于我需要阅读的内容的指示......

最佳答案

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

我可能只会在用户在特定练习中取得某种进展后才在表中创建记录。因此,如果您尝试查找用户在某项练习中的进度,但没有找到一行,则意味着他们在该练习中没有执行任何操作。这样,您只需要创建行来表示进度,并且总体上应该保持相当低的数字。

关于MySQL:我在网站中的哪里存储每个用户的个人资料信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307638/

相关文章:

c++ - 为什么要发明参数依赖查找?

c - long 和 int 通常大小相同的历史背景是什么?

asp.net - 将用户配置文件数据存储在用户表或单独的配置文件表中?

php - 如何按 ASC 或 DESC 日期对表格进行排序?

math - 为什么计算机科学中有8个和256个如此重要的数字?

ruby-on-rails - RoR : Devise and Profiles

maven - 使用配置文件来控制构建哪些 Maven 模块

php - 同时从2个表中取数据

MySQL UNION 查询即使使用 GROUP BY 也会返回重复值

php json_encode 为数组返回空白