我正在尝试使用基本详细信息(如用户名/电子邮件、密码)和他们各自的爱好(如阅读、运动、舞蹈等)注册一些用户,然后显示具有相似爱好的用户。当前架构看起来像这样。
Users
- id
- email
- password
- country
- hobbies_id
hobbies
- id
- user_id
- sports(values true/false)
- reading(values true/false)
- dance(values true/false)
每个爱好都作为爱好表中的一列。
如果我将爱好的数量从 3 增加到 20,最优化的模式是什么? 另外,有人可以帮我查询以选择具有相似爱好/爱好的用户吗?例如,如果约翰喜欢阅读和运动,而金喜欢运动和跳舞,那么他们就有共同的爱好。
提前致谢。
最佳答案
根据@Madhur Bhaiya 的评论,我将用 3 个表格来解决这个问题:
users
- id
- email
- password
- country
hobbies
- id
- name (sports, reading, dance, ...)
user_hobbies
- user_id
- hobbie_id
users
表是用户的主表(每个用户一条记录)。
hobbies
表是爱好的主表(每个爱好一条记录)。创建新爱好时,您无需创建新列,只需添加新行即可。
user_hobbies
表将用户映射到爱好:它为每个 user_id/hobbie_id
元组包含一条记录。
关于mysql - 用于存储用户多种爱好的关系数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58168241/