Дизайн таблицы SQL для двух вариантов измерений - PullRequest
0 голосов
/ 02 февраля 2012

Мне нужно записать баллы, которые пользователи получают за участие в различных мероприятиях в разные годы, например:

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.

Ответы [ 3 ]

0 голосов
/ 02 февраля 2012

Если я понял вашу проблему, это может решить ее:

UsersTable
id | ...

EventTable
id | year | ...

UserEventMappingTable
id | user_id | event_id | points

Тогда вы можете использовать JOINS для получения всей необходимой информации.

0 голосов
/ 02 февраля 2012

Если мы применим общую концепцию нормализации, к сценарию можно легко приблизиться.

Сначала мы определим таблицу EventType и UserType , чтобы определить обнуляемый итипы, не допускающие значения NULL.

Затем мы создаем обычные Event и User Таблицы, для которых определены eventType_id (ссылается на таблицу EventType) и userType_id (ссылается на таблицу UserType).

Наконец, мы создаем UserEvent таблицу, имеющую event_id (ссылаясь на Event table), user_id (ссылаясь на User Table) и Год столбец.

Надеюсь, это решит проблему.Если есть другие соображения, дайте мне знать.

0 голосов
/ 02 февраля 2012

Создание таблицы User, таблицы Event и таблицы UserEvent.

Таблица UserEvent будет содержать столбцы UserID и EventID для записи пользователя, участвующего в определенном событии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...