MySQL несколько таблиц против 1 таблицы - PullRequest
2 голосов
/ 10 ноября 2010

Я делаю простую систему учета результатов, и каждый пользователь может иметь статистику для множества различных игр. Но я не знаю, должен ли каждый пользователь иметь свою собственную таблицу результатов или иметь одну большую таблицу, содержащую все результаты со столбцом user_id

Несколько таблиц:

Имя таблицы: [идентификатор пользователя] _score

game_id |высокая оценка |last_score |Average_score

Одиночная таблица:

user_id |game_id |высокая оценка |last_score |average_score

Ответы [ 4 ]

4 голосов
/ 10 ноября 2010

Определенно иметь одну таблицу с идентификатором пользователя в качестве одного из полей. Было бы очень трудно (и без необходимости) иметь дело с несколькими такими таблицами.

Вероятно, вы захотите, чтобы хотя бы один индекс включал поле userId, чтобы записи для каждого userId можно было быстро найти по запросам.

2 голосов
/ 10 ноября 2010

Идите с одной таблицей и составным первичным ключом вокруг user_id и game_id.Вы можете также захотеть создать дополнительный индекс около game_id, чтобы поиск высоких результатов по играм был быстрым.(Составного ключа будет недостаточно, если user_id также не является частью критерия.)

Использование подхода «одна таблица на пользователя» может привести к некоторому LARTing.

0 голосов
/ 10 ноября 2010

вы, вероятно, захотите:
пользовательская таблица user_info [], user_id
игровой стол game_info [], game_id
таблица user_game_join, которая содержит user_id, game_id, score, insertdate

Таким образом, у вас есть все данные, чтобы получить высокий балл по игре, по пользователю, по игре и пользователю, средние значения и так далее.

всегда строит расширяемо. Вы никогда не знаете, когда вам нужно будет усовершенствовать свой код, а восстановление базы данных - это настоящая PITA, если вы не оставите это, наше право для начала.

0 голосов
/ 10 ноября 2010

Держите одну таблицу со всеми user_ids в них, безусловно.Как правило, вы хотите держаться подальше от любого решения, которое предполагает создание данных (идентификаторов пользователей) в именах таблиц (есть исключения, но они редки).

...