ユーザー用のテーブルがあります。各ユーザーには、教える特定のスキルがあります。したがって、たとえば:
- ボブは空手を教えることができます
- ルイーズはピアノと編み物を教えることができます
- ロジャーは柔道、セーリング、柵を教えることができます
これは私がデータベースでそれを行った方法です:
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,
しかし、私は関係をどのように行うかについて混乱しています。私はそれを書き続け、それが機能しないことに気づき、やり直したので、明らかにどこかで間違っていました。