最佳实践。如何存储用户搜索首选项

时间:2016-02-14 19:57:30

标签: mysql sql database database-design

实施例。我有一个约会网站的数据库。用户希望搜索其他用户并将此条件保存在数据库中。

现在我有一个存储每个用户的表

Search Table
------------
ageLower = 21
ageUpper = 25
HairColorId = 44 (mapped to Blonde)
然后,我从该表中获取每个字段以执行常规搜索。 例如,HairColorId = 44。 如果用户想要选择多于1个首选项(例如

),搜索的最有效方法是什么
Search Table
-----------
ageLower = 18
ageUpper = 25

HairColorId = 44,45(金发或RedHead但不是黑发)

Hair ColumnId是否成为文本字段而不是int? 搜索将是..其中HairColourId在哪里(44,45)。

如果用户决定hairColor不重要,我该如何处理输入?

或者我应该取消此表格结构并从一个大文本字段构建搜索查询吗?

1 个答案:

答案 0 :(得分:1)

MySQL有一个SET类型列。它允许您为单个列指定一组值,例如头发颜色,以及一组预定义的值。您可以根据需要根据值进行选择。如果您不关心该值,则可以跳过过滤操作中的列。

https://dev.mysql.com/doc/refman/5.5/en/set.html