数据库设计:记录中单个字段的多个值

时间:2011-04-16 06:50:51

标签: mysql sql database-design

我正在制作自动推荐功能,作为其中的一部分,我想根据特定用户的偏好来加权结果。例如:如果我的大多数用户经常输入fish,那么一旦用户输入fish,算法将返回f作为最常用的结果。但是,如果某个特定用户主要输入food,那么我想应用一个权重,以便将该特定用户的偏好考虑在内。

我最初想通过拥有一个带有字段userids的大型自动建议索引来做到这一点,并且每当用户输入一个字母时,该算法将检查该特定用户的用户ID是否存在于{{ 1}}字段并且如果存在则将对该特定结果应用相应的权重。

一些记录如下:

userids

但是,我不认为这种方法可以在几百个活跃用户的情况下很好地扩展。设计这个数据库的更好方法是什么?

提前致谢, asleepysamurai

P.S。在数据库设计方面,我是新手,所以请以外行的方式解释你的解决方案。

1 个答案:

答案 0 :(得分:2)

这不是一个好主意。该表格不是normalized,当您需要加入此字段时,您最终会遇到复杂的查询。

更好的设计是将此表上的wordid字段作为主键(标识单词)和多对多的表来将单词与用户(words_to_users与{{1}连接起来}}和wordid字段)。