Иметь отдельную таблицу mysql для действий каждого пользователя, то есть activity_userX, X в диапазоне от
Таблица для каждого пользователя? Это просто означает безумное количество столов.
Используйте json для кодирования этих объектов в строки и сохранения их в виде столбца в основной таблице
JSON - хороший транспортный язык. У вас есть база данных для хранения ваших данных, используйте ее возможности.
Иметь одну отдельную таблицу для всех этих объектов деятельности и просто индексировать их; тогда для каждого пользователя в основной таблице есть список индексов, соответствующих тем, какие действия у них.
Становится ближе.
Такого рода отношения обычно известны как «имеет много». В этом случае «У пользователя много действий».
У вас должна быть таблица пользователей и таблица действий.
Один из столбцов таблицы действий должен быть внешним ключом, который указывает на первичный ключ пользовательской таблицы.
Тогда вы сможете сделать:
SELECT fields, i, want from activities WHERE userid=?
Или
SELECT users.foo, users.bar, activities.description from users,activities
WHERE user.userid=activities.userid