【问题标题】:Database Design: How should I store 'word difficulty' in MySQL?数据库设计:我应该如何在 MySQL 中存储“单词难度”?
【发布时间】:2013-10-24 19:09:21
【问题描述】:

我为 Android 制作了一个词汇应用程序,它在本地数据库 (SQLite) 中存储了大约 5000 个单词的列表,我想找出哪些单词比其他单词更难。

为了找出答案,我正在考虑添加一个非常简单的功能,将两个随机单词放在屏幕上,让用户选择更难的单词。然后将显示另一对随机单词,并且可以根据用户的需要重复此过程。参与这个“难词”的用户越多,理论上应用程序就能区分难词和易词。

由于难度取决于所有用户的输入,我知道我需要在线跟踪它,以便每个应用程序都可以从我网站上的数据库(即 MySQL)中获取它们。我不确定跟踪难度的最有效方法是什么,但我想出了两种可能的解决方案:

1) 将包含整数值的difficulty 列添加到单词表中。那么对于用户每看一个词并进行排名,他/她选择的较难的词的难度会增加一个,而没有选择的词的难度会降低一个。我可以简单地order by 那个整数值来获得最困难的值。

2) 创建一个difficulty 表,其中包含两列moreless,它们根据用户所做的每个选择的结果保存单词(或单词的ID's 以节省空间)。我仍然不确定如何获得最困难的单词 - group byorder by 的组合?

我的第二个解决方案的好处是,我可以知道每个单词被看到了多少次(more 列中包含该单词的行数 + less 列中包含该单词的行数) .这有助于统计数据,比如如果我想找出哪个单词的more / less 比率最高。但它也会比我第一个建议的解决方案占用更多的空间,而且不知道如何扩展。

您认为哪种解决方案更好,或者我应该考虑哪些其他解决方案?

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于应用程序设计,而不是数据库设计
  • @JoelBrown 你是说database-design 是一个错误的标签选择,还是这个问题更适合 StackOverflow 而不是这个网站?我主要对我应该使用什么结构来存储这些信息感兴趣——它可能用于应用程序,但我只是想提供上下文。
  • 是“它的”,而不是“它的”
  • @Strawberry 谢谢,我刚刚改正了这个错误,尽管它不是什么大问题,因为它与实际问题相比意义不大
  • 嗯?但问题是关于单词难度 ;-)

标签: mysql database-design


【解决方案1】:

您为此尝试过 sphinx 吗?猜猜像 sphinx 这样的全文搜索引擎会以出色的性能解决问题。

【讨论】:

  • 我现在才看到它,因为我以前从未听说过 Sphinx,但我不明白它有什么帮助
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2016-06-24
相关资源
最近更新 更多