我正在创建一个项目,让别人从20选择最大的3个类别。因为它总是最多3个类别,所以我只需要在数据库中创建3个列(Cythyy1,CyryYy2,CyrySy3)就不那么重要了。
我想象在插入的时候,不是保存在3个不同的列中,而是将数组保存到一个“categories”列中。
我的问题是,在得到消息的那一刻。如果我这样做,让我们假设搜索每个记录有一个特定的类别,什么会更快?让它看一个数组的列(我想是用LIKE或类似的东西)还是看三个列?
我希望我的问题是清楚的。谢谢。
最佳答案
不要在数据库列中存储逗号分隔的列表(“数组”)。使用cross-reference table。
(如果要在数据库中强制执行“不超过3个类别”条件,则可以向交叉引用表中添加一列category_number
。理想情况下,您可以使用check约束将该列限制为值1、2和3,但MySQL不支持check约束;相反,您可以使category_number
列成为另一个具有三行的表permitted_category_number
的外键。)
关于mysql - 将数组保存在数据库中或创建不同的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10399879/