我正在创建一个项目,我会让某人从20中选择最多3个类别。因为它总是最多3个类别,所以我在数据库中再创建3个列并不是那么多(category_1,category_2 ,category_3)。
我想在插入时,而不是保存在3个不同的列中,只需将数组保存到“类别”列中。
我的问题是,在获取信息的那一刻。如果我确实让我们说搜索每个具有1个特定类别的记录,那么哪个更快?它要查看1列是一个数组(我想象有一个LIKE或类似的东西)或查看3列?
我希望我的问题很明确。感谢。
答案 0 :(得分:2)
不要在数据库列中存储以逗号分隔的列表(“数组”)。使用cross-reference table。
(如果要在数据库中强制执行“不超过3个类别”条件,则可以在交叉引用表中添加其他列category_number
。理想情况下,您可以使用检查约束来限制该列为值1,2和3,但MySQL不支持检查约束;相反,您可以将category_number
列作为另一个具有三行的表permitted_category_number
的外键。)