我有一个域名,每个用户都有一些信息
关于他自己的height
,weight
,eye color
,hair color
,...
以及关于其理想合作伙伴的非常相似的数据(preferred height
,{{1 },preferred hair color
)。
我必须让用户尊重他们的特点和他们的偏好,牢记这一点,在性能方面最好的结构是什么?
我的意思是,我可以设计一个表格,如:...
和用户表:Details(id, height, weight, eye_color, ...)
或类似User(id, ..., details_id, preferences_details_id)
的表和连接表。甚至还有其他方法。
你会选择什么?为什么?
答案 0 :(得分:1)
评论时间有点长。
我投票决定特别关闭这个问题,因为你要求提出意见和解释。您应该查看FAQ有关Stack Overflow的问题。
此外,你已经践踏了一个几乎可以成为宗教热情主题的地区。热心的“关系主义者”会希望您将所有列放在一个表中。并且有充分的理由。实体 - 属性 - 价值模型(EAV)的支持者有强烈支持这种方法的论据。并且,它们之间存在混合。我建议你从研究EAV模型开始。您可能能够找出更适合您特定环境的内容。
答案 1 :(得分:0)
这一切都取决于你想用这些数据做什么
Details(id, height, weight, eye_color, ...)
如果细节数量不变并且出于某种原因你不想把它放在用户模型中,那就没问题
Detail(id, type, value)
如果细节数量可以改变,这种方法会更好,因为您不需要“永远”修改数据库,所有细节数量/细节类型/可能值的更改都可以在代码中处理。不同之处在于,无论何时您想要添加详细信息,您都可以为每个人提供默认值,而不是仅添加列。
就性能而言,连接2个表总是比在某种程度上从单个表中选择要慢。