一旦这样的例子可以成为用户和测试的问题库。将来可能会出现很多关系。
当用户尝试集合中的问题时,存在多个随机数的问题。 因此,在提交该集合时,最好将特定集合的数据存储为json或多行
方法1
QuesTable
id | ques
用户表
id | username | setinfo
其中setinfo可以作为特定用户的json存储为他创建的任意数量的集合, 当用户创建一个集合时,我们可以在这个json中附加数据。
{
"sets": [
{
"set1": [
{
"q1": {
"given_answer": "a",
"some_key1": "some_value1",
"some_key2": "some_value2"
},
"q2": {
"given_answer": "c",
"some_key1": "some_value1",
"some_key2": "some_value2"
},
"q3": {
"given_answer": "b",
"some_key1": "some_value1",
"some_key2": "some_value2"
}
}
]
},
{
"set2": [
{
"q1": {
"given_answer": "a",
"some_key1": "some_value1",
"some_key2": "some_value2"
},
"q2": {
"given_answer": "c",
"some_key1": "some_value1",
"some_key2": "some_value2"
},
"q3": {
"given_answer": "b",
"some_key1": "some_value1",
"some_key2": "some_value2"
}
}
]
}
]
}
APPROACH 2
同样但我们可以为set info创建另一个表,并将每个集存储为自己的id
QuesTable
id | ques
用户表
id | username
user_set_table
id | userid | setinfo
每次用户创建一个集合时,它都会在user_set_info中创建一个新列并使用FK userid 每个setinfo是
[
{
"q1": {
"given_answer": "a",
"some_key1": "some_value1",
"some_key2": "some_value2"
},
"q2": {
"given_answer": "c",
"some_key1": "some_value1",
"some_key2": "some_value2"
},
"q3": {
"given_answer": "b",
"some_key1": "some_value1",
"some_key2": "some_value2"
}
}
]
APPROACH3
QuesTable
id | ques
用户表
id | username
User_Set_Info
id | userid | quesid | given_ans | somekey1 | somekey2
这里的问题是,如果用户提供了100个问题的测试,那么它将创建100行并且需要100次插入,查询可以是单个。
制作多行是个好主意吗?什么时候应该最好在mysql列中使用json而不是什么时候?