copyloc
@copyloc
Человек то я не глупый, просто притворяюсь

Как лучше хранить в базе данных?

Небольшие цифры:
1000 - пользователей.
100 - заданий.

Что это?
На сайте при выполнение какого-либо задания, нужно заносить в БД: единицу в столбец с номером задания и строку с id пользователем, грубо говоря поставить флаг, что задания этим пользователем выполнено.

Вопрос:
Как хранить все эти значения более рационально? Явно мой способ самый дубовый, создать таблицу и все. Я думал создать массив и где идет перечисление: 001010001010, номер задания, это индекс-1(с нуля перебор начинать если), но подумал, а что если задания будут добавляться, а они будут добавляться, там уже надо подумать, как же сделать, можно просто с запасом сделать.
  • Вопрос задан
  • 2358 просмотров
Решения вопроса 3
@Alevs
Пошёл делать уроки
Обычно создают отдельные таблицы: в вашем случае пользователей, заданий и выполненных пользователями заданий. В последней таблице столбцы с id пользователя (индексировать для быстрого select-а) и id выполненного задания. В запросе соединяете все это, используя JOIN. Рекомендуется к прочтению:
zlob.in/2013/01/struktura-tablic-dlya-kataloga-tov... (модель структуры хранения EAV);
www.anton-pribora.ru/articles/mysql/mysql-join
Ответ написан
@baracuda2
Разбей ее на пару таблиц. Такой способ будет хорош, если у вас много категорий и заданий.
Поискать надо на форумах про оптимизации. Там много факторов играет, предугадать не просто.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если надо записывать результат выполнения (оценку), то таблица (`user_id`, `test_id`, `result`), если только факт выполнения - то (`user_id`, `test_id`). В обоих случаях уникальный ключ из пары `user_id`, `test_id`.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
таблица id, user_id, task_id, result
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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