我需要一些帮助来为以下条件创建最佳的表架构。
有一项比赛,允许人们分组报名。每个组都有一个 groupid,每个用户都有一个 uid,每个组都有组特定数据,如 group_question_id 等。单个用户可以属于多个组。每个用户都可以使用group_answer_uid回答群组问题。用户的 group_answer_uid 数量等于他所属的 groupid 数量。
Data
====
1)groupid
2)uid
3)group_question_id (specific to each group)
4)group_answer_uid (specific to each group for each user)
必须进行以下查询。
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
对此可能的最佳架构是什么?
最佳答案
我建议你想要类似的东西......
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.
然后查询看起来像
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)
这假设用户可以根据他所在的组对每个问题有不同的答案。
关于sql - 以下情况的最佳方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257454/