Как лучше организовать хранение данных?
Первое решение, которое лезет в голову:
columns
id title type
data
id user_id column_id value
Сразу минус: теряем типизацию данных в базе, и так как может быть text, то придется делать value большого размера
Второе решение:
columns
id title type
data_texts
id user_id column_id value
data_strings
id user_id column_id value
data_dates
id user_id column_id value
data_integers
id user_id column_id value
Но тут будет много соединений, хотя за то сохранена типизация. Можно через LEFT JOIN, можно через UNION или даже подзапросом.
Еще вариант - в таблице users поле userdata, в формате text, и внутри XML или JSON или просто сериализованный массив со всеми данными юзера.
Интересует следующее:
1. Какой из этих вариантов лучше?
2. Есть ли еще варианты?