SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.09.2010 12:23:27

400kg
Участник
Зарегистрирован: 13.09.2010
Сообщений: 9

Принцип размещения данных

Здравствуйте. У меня вот такая ситуация:

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

Необходимо сохранять каждое изменение рейтинга для каждого игрока, чтобы в анкете игрока выдавать график изменения его рейтинга.

Как я себе это представляю.

а) Просто добавить текстовое поле "история рейтинга" и после каждого турнира конкатенировать строку "100|105|109|107|102|99" и т.д. В этом случае я сталкиваюсь с ограничением длины текста. Проект долгосрочный и через определенной время добавление текста будет невозможно.

б) Создавать для каждого игрока отдельную таблицу "история рейтинга" и просто вставлять новые записи с новым значением рейтинга. В этом случае сталкиваюсь с проблемой, если у меня 10000-50000 игроков, мне придется иметь для каждого таблицу...

Вопросы:
Есть ли ограничение в MySQL на количество таблиц в одной БД?
Плохо ли это с точки зрения оптимизации работы MySQL иметь столько таблиц?
Есть ли еще какой-то более правильный вариант решить мою проблему с сохранением изменений рейтинга?

Неактивен

 

#2 13.09.2010 12:25:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Принцип размещения данных

А почему просто не сделать одну таблицу с историей рейтинга игроков?

Неактивен

 

#3 13.09.2010 12:33:04

400kg
Участник
Зарегистрирован: 13.09.2010
Сообщений: 9

Re: Принцип размещения данных

Подскажите пожалуйста, какую структуру она будет иметь в этом случае?

Где хранить постоянно добавляющиеся значения для каждого игрока?

Отредактированно 400kg (13.09.2010 12:34:44)

Неактивен

 

#4 13.09.2010 12:37:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Принцип размещения данных

Ну, например,
CREATE TABLE rating_log (
  player_id INT NOT NULL,
  ts TIMESTAMP NOT NULL,
  rating INT NOT NULL,
  INDEX(player_id, ts)
);

Неактивен

 

#5 13.09.2010 12:37:51

savit
Завсегдатай
Зарегистрирован: 10.11.2009
Сообщений: 25

Re: Принцип размещения данных

одна таблица на 3 столбца - юзер_ид, дата, рейтинг

Неактивен

 

#6 13.09.2010 12:57:12

400kg
Участник
Зарегистрирован: 13.09.2010
Сообщений: 9

Re: Принцип размещения данных

paulus написал:

Ну, например,
CREATE TABLE rating_log (
  player_id INT NOT NULL,
  ts TIMESTAMP NOT NULL,
  rating INT NOT NULL,
  INDEX(player_id, ts)
);

Точно! Спасибо! С меня пару переходов по яндекс директ smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson