开发者

what is the best possible schema for the following condition?

I need some help in creating the best possible table schema for the following condition.

There is a开发者_高级运维 competition where people are allowed to signup in groups. Each group has a groupid, each user has a uid, each group has group specific data like group_question_id etc. A single user can be part of multiple groups. Each user can answer the group question with group_answer_uid. The number of group_answer_uid (s) for user is equal to number of groupid is he is part of.

Data
====
1)groupid
2)uid
3)group_question_id (specific to each group)
4)group_answer_uid (specific to each group for each user)

Following queries have to be made.

1. list all groups the user is part of
2. list all users in a groupid
3. list all group_answer_uids for a given group 

What is the best schema possible for this?


I would suggest you'd want something like...

USER table, keyed on user_id
GROUP table, keyed on group_id
USER_GROUP table, holding user_id, group_id pairs
QUESTION table, keyed on question_id
GROUP_QUESTION table holding group_id, question_id pairs
ANSWER table holding user_id, group_id, question_id triplets.

Then the queries would look like

SELECT group_id
    FROM USER_GROUP
    WHERE user_id = (our user);

SELECT user_id
    FROM USER_GROUP
    WHERE group_id = (our group);

SELECT answer_id
    FROM ANSWER
    WHERE group_id = (our group)

This assumes that a user can have a different answer to each question according to what group he is in.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜