2012-02-02 48 views
0

我需要通過參加不同年份的各種活動,如記錄用戶獲得積分:SQL表設計了兩個變種尺寸

UserName Year Event1 Event2 Event13 Event14 ... 
A  2001 20  30 NULL NULL 
A  2002 15  20 30  NULL 
B  1999 7  NULL NULL 10 
B  2000 15  10 NULL 100 
..... 

的用戶數量是不固定的,而事件的數量也不是固定的。

我應該創建什麼表來實現這個結果?

我現在使用Microsoft SQL2008。

回答

0

創建User表,Event表和UserEvent表。

UserEvent將具有列UserIDEventID來記錄參與特定事件的用戶。

0

如果我明白你的問題,這可以解決這個問題:

UsersTable 
id | ... 

EventTable 
id | year | ... 

UserEventMappingTable 
id | user_id | event_id | points 

然後你可以使用連接來得到你想要的所有信息。

0

如果我們應用標準化的一般概念,則可以輕鬆地實現該方案。

首先我們定義一個事件類型用戶類型表定義爲空的和非可空類型。

然後我們創建平常事件用戶表與eventType_id(指事件類型表)和userType_id(指用戶類型表)上定義。

最後,我們創建UserEvent有事項標識表(指事件表),USER_ID(指用戶表)和列。

希望它能解決問題。如果還有其他考慮,請告訴我。