2010-07-15 71 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) 

這假設一個用戶可以有根據不同的回答每個問題到他在哪個組中。

相關問題