Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对于以下情况,最好的模式是什么?_Sql_Mysql - Fatal编程技术网

Sql 对于以下情况,最好的模式是什么?

Sql 对于以下情况,最好的模式是什么?,sql,mysql,Sql,Mysql,我需要一些帮助来为以下条件创建最好的表模式 有一个比赛,允许人们分组报名。每个组都有一个groupid,每个用户都有一个uid,每个组都有特定于组的数据,如组\问题\ id等。单个用户可以是多个组的一部分。每个用户都可以使用group\u answer\u uid回答小组问题。用户的组\u答案\u uid数等于他所属的组ID数 Data ==== 1)groupid 2)uid 3)group_question_id (specific to each group) 4)group_answer

我需要一些帮助来为以下条件创建最好的表模式

有一个比赛,允许人们分组报名。每个组都有一个groupid,每个用户都有一个uid,每个组都有特定于组的数据,如组\问题\ id等。单个用户可以是多个组的一部分。每个用户都可以使用group\u answer\u uid回答小组问题。用户的组\u答案\u uid数等于他所属的组ID数

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)
这假设用户可以根据他所在的组对每个问题有不同的答案