我试图注册一些用户的基本细节,如用户名/电子邮件,密码和他们各自的爱好,如阅读,体育,舞蹈等,稍后显示用户与类似的爱好。当前架构如下所示。
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/