MySQL中有三个表,分别是“题库表”、“错题表”和“用户表”,现在需要实现不同用户存储不同的错题,不同用户存储的错题可能会重复,同一用户错题不会重复
请问MySQL中如何想在某一列中存储多值类数据,如多个用户id,应该如何设置表结构及类型?
CREATE TABLE QuestionBank ( id INT AUTO_INCREMENT PRIMARY KEY, question_text TEXT, UNIQUE (question_text) -- 确保题目内容不重复);
CREATE TABLE User ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE, -- 其他用户信息列);
CREATE TABLE UserMistakes ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, question_id INT, UNIQUE (user_id, question_id) -- 确保同一用户的错题不重复);
在 UserMistakes
表中使用了 user_id
和 question_id
的组合来确保同一用户的错题不会重复。也可以程序上做。
使用关联表,其中一个表存储主要信息,另一个表存储用户ID与主表的关联。
或者Mongodb吧,Json直接搞定。
你思路错误,不需要再一行存储多个用户,你错题库直接用就行比如
错题库CREATE table wrong_question ( id int(10) not null AUTO_INCREMENT primary key COMMENT '主键', topic_id int(10) NOT NULL COMMENT'题目id', user_id int(10) NOT NULL COMMENT'用户id', create_time datetime NOT NULL COMMENT'创建时间', update_time datetime NOT NULL COMMENT'更新时间',INDEX idx_user_id ( `user_id` ) ) COMMENT '错题库'# 寻找用户id为2的错题select * from wrong_question where user_id =2
错题表设置成关系表,存储用户ID和题库ID,这样就存储了用户和错题的关系,关联查询就可以得到用户的错题了
问题内容: 我想创建一个像堆栈溢出这样的问答应用程序。 我不知道如何在MySQL表列中存储多个答案。 我想知道如何在sql表的同一行中存储问题和多个答案。 问题答案: 创建两个表并使用外键关系将它们连接是最好的解决方案之一。因为将问题和答案保存在同一表格中可能不会使您对同一问题有多个答案。如果您希望一个问题有多个答案,那么数据库的冗余肯定会增加。因此,请尝试正确使用DB- Relationship
问题内容: 我想将表格从INNODB更改为MEMORY ENGINE。 所以我输入了以下命令: 然后MySQL显示 该表的数据大小为1GB,我有8GB内存。 我检查了my.cnf,但找不到在哪里更改max_size设置。我不应该能够存储更多数据吗? 问题答案: 您应该调整制作和加载桌子的方式 这将绕过 tmp_table_size 和 max_heap_table_size 施加的任何限制。 同样
问题内容: 我正在尝试提供一种搜索功能,该功能将搜索多列以查找基于关键字的匹配项。该查询: 仅适用于搜索一列,我注意到用逗号分隔列名称会导致错误。那么可以在mysql中搜索多个列吗? 问题答案: 您可以使用AND或OR运算符,具体取决于要返回的搜索内容。 这两个子句必须匹配才能返回记录。或者: 如果任一子句匹配,则将返回记录。 有关使用MySQL SELECT查询可以执行的操作的更多信息,请尝试使
问题内容: 我正在建立一个网站,我需要在数据库中存储随机数的数据。 例如:用户john可能有一个电话号码,而jack可能有3。 我需要能够为每个用户存储无限数量的值。 我在任何地方都找不到方法,希望您能帮助我!:) 我是关系数据库的新手。 问题答案: 您创建一个单独的电话号码表(即1:M关系)。 现在,您可以通过简单的连接轻松获得用户的电话号码;
问题内容: 我得到了一些“ 锻炼程序” 内容,这些内容将按顺序显示给用户。下面显示了最简单形式的示例。 通常,这些表至少要包含100行/练习,并且大约有300个表(针对不同标准的不同练习)。我们没有任何前端,可以直接使用 _dbForge Studio_数据库编辑器更新数据库。 以前的开发人员已经设计了表格,以便唯一ID列也可用作序列号。它也构成url的一部分。例如xxx / exercise /
我从PHP的API接收lan和lot数据,并用和从响应中提取它们。我如何将它们添加到我的MySQL列作为点值?