@beduin01

MySQL: На сколько рационален подобный подход к хранению данных?

Каждый день программа собирает данные и кладет их в БД. Всего два столбца: дата | данные
12.11.2014 | Небо, Воздух, Вода, Камень, Небо, Небо

Дальше мне нужно проводить обработку и выбирать наиболее часто встречающиеся слова.

Отсюда два вопроса:
Имеет ли смысл мне до вставки проводить статистическую обработку и склеивать слова в с количеством повторений т.е.
12.11.2014 | Небо:3, Воздух:1, Вода:1, Камень:1

Дальше мне нужно как-то иметь возможность удобно запрашивать статистику по дня. Отсюда вопрос. Нужно ли мне все слова преобразовывать в столбцы, чтобы для каждого писать популярность? Это же очень неудобно т.е. когда слов 5, it's ok, но вот как быть, если у меня будет около 1000 слов. Что теперь для каждого столбец создавать?

Как это покрасивее сделать? Как все хранить?
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
Ну, например, две таблицы: "дата | id_слова | количество" и "id_слова | слово".
Какие индексы накладывать - тема для самостоятельной проработки.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Изначально неправильно организованы данные. Нужна одна таблица,
CREATE TABLE `table` (
    `date` DATE,
    `word` VARCHAR(64),
    `count` INT, 
    PRIMARY KEY(`date`, `word`));

Добавление слова:
INSERT INTO `table` (`date`, `word`, `count`) 
    VALUES (CURDATE(), :word, 1) 
    ON DUPLICATE KEY UPDATE `count` = `count`+1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы