Я использую следующую модель для хранения данных, связанных с пользователем, в моей таблице. У меня есть 2 столбца - uid
(первичный ключ) и столбец meta
, который хранит другие данные о пользователе в формате JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['[email protected]','[email protected]']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['[email protected]','[email protected]']}
--------------------------------------------------
Является ли это лучшим способом (по производительности, по дизайну), чем модель с одним столбцом для каждого свойства, где в таблице будет много столбцов типа uid
, name
, emailid
.
Что мне нравится в первой модели, вы можете добавить столько полей, сколько нет ограничений.
Кроме того, мне было интересно, теперь я реализовал первую модель. Как выполнить запрос на нем, например, я хочу получить всех пользователей, у которых есть имя "foo"?
Вопрос. Каков наилучший способ хранения данных, связанных с пользователем (с учетом того, что количество полей не фиксировано) в базе данных - JSON или столбец за поле? Кроме того, если первая модель реализована, как запросить базу данных, как описано выше? Должен ли я использовать обе модели, сохраняя все данные, которые можно искать по запросу в отдельной строке, а другие данные в JSON (другая строка)?
Update
Поскольку не будет слишком большого количества столбцов, на которых мне нужно выполнить поиск, целесообразно ли использовать обе модели? Key-per-column для данных, которые мне нужны для поиска, и JSON для других (в той же базе данных MySQL)?