gpt4 book ai didi

php - 哪种方法最适合在 mysql 中存储稍后用于统计的单词列表?

转载 作者:可可西里 更新时间:2023-11-01 06:37:10 26 4
gpt4 key购买 nike

详情

我有一个测验(我们称它为 quiz1)。 Quiz1 每次生成时都使用相同的单词表。如果用户需要,他们可以跳过单词来完成测验。我想将跳过的单词存储在mysql中,然后对其进行统计。

起初我打算将遗漏的单词作为字符串存储在一列中。每个单词将用逗号分隔。

|testid |       missedwords                     | score     |   userid  |
*************************************************************************
| quiz1 | wordlist,missed,skipped,words | 59 | 1 |
| quiz2 | different,quiz,list | 65 | 1 |

这种方法的问题在于,我想在每个测验结束时显示有关参加测验 1 的用户最常错过哪些单词的统计信息。
我假设如上所述将遗漏的单词存储在一列中对于此目的是低效的,因为我需要提取信息然后对其进行统计 - (可能使用 php 进行统计 - 除非我将统计数据存储在单独的表中)。

然后我想也许我需要为遗漏的单词创建一个单独的表下表的好处是应该很容易统计下表中的单词。

|Instance|  missed word     |
*****************************
| 1 | wordlist |
| 1 | missed |
| 1 | skipped |

另一种方法我可以创建一个带有计数的表格,并在每次进行 quiz1 时更新它。

Testid  |   wordlist|   missed| skipped| otherword|
**************************************************
Quiz1 | 1 | 1| 1| 0 |

这种方法的问题是我需要为每个测验准备不同的表格,因为每个测验都会使用不同的词。信息也会丢失,因为只保留计数而不保留相关数据,例如用户错过了哪些单词。

问题

您会使用哪种方法?为什么?欢迎使用替代方法来完成此任务。如果您发现我的逻辑有任何缺陷,请随时指出。

编辑用户可以根据需要多次重新参加测验。他们的信息不会更新,而是会为他们重新参加的每个测验创建一个新实例。

最佳答案

做到这一点的最好方法是让单词集合完全规范化。这样,分析将变得简单快捷。

quiz_words with wordID, word
quiz_skipped_words with quizID, userID, wordID

获取用户所有跳过的单词:

SELECT wordID, word 
FROM quiz_words
JOIN quiz_skipped_words USING (wordID)
WHERE userID = ?;

您可以添加一个 group by 子句以对同一单词进行分组计数。

获取特定单词的计数:

SELECT COUNT(*) 
FROM quiz_words
WHERE word LIKE '?';

关于php - 哪种方法最适合在 mysql 中存储稍后用于统计的单词列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16186787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com