用于存储用户的多个爱好的关系数据库结构
我正在尝试向一些用户注册基本信息,例如用户名/电子邮件,密码以及他们各自的兴趣爱好,例如阅读,运动,跳舞等,然后在具有相似兴趣爱好的展示用户上注册。当前架构如下所示。
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个,最优化的方案是什么?另外,有人可以通过查询来帮助我选择具有相似兴趣/爱好的用户吗?例如,如果John喜欢读书和运动,而Kim喜欢运动和跳舞,那么他们会将运动作为共同的爱好。
提前感谢。
回答如下:在关注@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
元组的一条记录。
用于存储用户的多个爱好的关系数据库结构
我正在尝试向一些用户注册基本信息,例如用户名/电子邮件,密码以及他们各自的兴趣爱好,例如阅读,运动,跳舞等,然后在具有相似兴趣爱好的展示用户上注册。当前架构如下所示。
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个,最优化的方案是什么?另外,有人可以通过查询来帮助我选择具有相似兴趣/爱好的用户吗?例如,如果John喜欢读书和运动,而Kim喜欢运动和跳舞,那么他们会将运动作为共同的爱好。
提前感谢。
回答如下:在关注@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
元组的一条记录。