次のテーブルがあります
- ユーザー
- 質問
- 質問のカテゴリ
- 回答
今、ユーザークラスに質問へのリンクを持たせるべきか、答えだけを持たせるべきか混乱しています
ユーザーは、フォームに表示された質問に回答します。
したがって、毎年、さまざまな質問に対してさまざまな回答が得られます
次のテーブルがあります
今、ユーザークラスに質問へのリンクを持たせるべきか、答えだけを持たせるべきか混乱しています
ユーザーは、フォームに表示された質問に回答します。
したがって、毎年、さまざまな質問に対してさまざまな回答が得られます
ユーザーは質問をすることができ、質問はカテゴリに属することができ、多くのユーザーが回答を投稿できると仮定します。実際、stackoverflow のようなサイトがどのようなものかについてです。
create table user (
user_id integer primary key,
name varchar(40) not null
);
create table category (
category_id integer primary key,
category varchar(40) not null
);
create table question (
question_id integer primary key,
question text,
asked_by_id integer not null,
category_id integer not null,
foreign key asked_by_id references user(user_id),
foreign key category_id references categor(category_id)
);
create table answer (
answers_id integer not null,
answered_by_id integer not null,
answer text,
primary key (answers_id, answered_by_id), -- we allow one answer per person for a question
foreign key answers_id references question(question_id),
foreign key answered_by_id references user(user_id)
);
そして、クエリ:
select qu.name as asked_by, question, category,
au.name as answered_by, answer
from user qu -- iterating through users
join question q on qu.user_id = asked_by_id -- joining them to their questions
join category c on c.category_id = q.category_id -- find the category
join answer on answers_id = question_id -- join by what answers this question
join user au on au.user_id = answered_by_id; -- looking up the user who answered it
(サーバーで試していないので、誤植があるかもしれません。お気軽に修正してください。)
まあ、やりたいことによっては理にかなっています。ユーザーは質問を投稿できますか? はいの場合は、リンクします。そうでない場合、空のままになるため、リンクしても意味がありません。