2010-07-15 40 views
0

我需要一些帮助,为以下情况创建最佳表格模式。对于下列情况,最好的模式是什么?

有一个竞赛,允许人们在小组中注册。每个组都有一个groupid,每个用户都有一个uid,每个组都有group_question_id等特定于组的数据。一个用户可以是多个组的一部分。每个用户都可以用group_answer_uid回答组问题。用户的group_answer_uid(s)的数量等于他所属的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 

什么是最好的模式可能呢?

回答

1

我建议你想要的东西像...

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) 

这假设一个用户可以有根据不同的回答每个问题到他在哪个组中。

相关问题