我需要通过参与不同年份的各种活动来记录用户获得的积分,例如:
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 :(得分:0)
创建User
表,Event
表和UserEvent
表。
表UserEvent
会有列UserID
和EventID
来记录参与特定活动的用户。
答案 1 :(得分:0)
如果我理解你的问题,这可以解决它:
UsersTable
id | ...
EventTable
id | year | ...
UserEventMappingTable
id | user_id | event_id | points
然后您可以使用JOINS获取所需的所有信息。
答案 2 :(得分:0)
如果我们应用标准化的一般概念,则可以轻松地处理该场景。
首先我们定义 EventType 和 UserType 表来定义可空和不可空类型。
然后我们创建了常用的事件和用户表,其中包含eventType_id(指EventType表)和userType_id(指UserType表)。
最后,我们创建了 UserEvent 表,其中包含event_id(指事件表),user_id(指用户表)和年专栏。
希望它能解决问题。如果有任何其他考虑,请告诉我。