我有一张供用户使用的桌子。每个用户都有他们教授的某些技能。例如:
- 鲍勃可以教空手道
- 路易丝可以教钢琴和编织
- 罗杰可以教柔道、帆船和击剑
这就是我在数据库中完成的方式:
Table users
pk: uid, name
1 Bob,
2 Louise,
3 Roger
Table skills
pk: sk_id, skill
1 karate,
2 piano,
3 knitting,
4 judo,
5 sailing,
6 fencing
Table user_skill (relationship between user and skills)
pk:usk_id, fk:uid, sk_id
1 1 1,
2 2 2,
3 2 3,
4 3 4,
5 3 5,
6 3 6,
我想然后显示“罗杰有这些技能:柔道,编织篮子”
select name, skill
from users, skills, user_skill
where users.uid = user_skill.uid
and users.uid = 3
这是正确的方法吗 - 无论是在设计表和查询(mysql)方面吗?
然后说我想用他们教的领域更新他们的个人资料:
- 鲍勃可以在伦敦教空手道
- 路易丝可以在博尔顿教钢琴,在曼彻斯特教针织
- 罗杰可以在伦敦和曼彻斯特教柔道,在利物浦教帆船,在布拉德福德教击剑
所以我添加了以下表格:
Table cities
pk: city_id, city
1 London,
2 Manchester,
3 Liverpool,
4 Bolton,
5 Bradford,
但我对如何处理关系感到困惑。我一直在写它并意识到它不起作用并重新开始,所以我显然在某个地方出错了。