我想知道在数据库中存储多重选择值的最佳方法是什么?
我有一个模特"人们"我需要存储人们的偏好,这可能是多个值
我应该将他们的首选项作为数组存储在同一个表中,还是创建另一个具有以下结构的表?
People_Preferences - Person_id - Preference_id(只存储一个preference_id)
我需要能够根据用户的偏好进行过滤。
哪种方法最好还是有更好的方法?
答案 0 :(得分:1)
听起来你需要的只是一个联接表" people_preferences"和来自Person模型的preferences
的habtm关系以及来自Preference to Person的另一个habtm。这将是我的建议毫不犹豫。
但它确实取决于一系列因素。 Postgres支持数组类型,这意味着不需要连接,并且可以使用intarray类型来保存外键,但是当数组值引用其他表中的行时,参考完整性更难实现。如果您正在使用mysql,那么这不是一个真正的选择。