Я реализую следующую модель для хранения пользовательских данных в моей таблице - у меня есть 2 столбца - uid
(первичный ключ) и meta
столбец, в котором хранятся другие данные о пользователе в формате JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Это лучший способ (производительность мудрый, дизайн-накрест) , чем модель одной колонки-в-собственности, где таблица будет иметь много столбцов , как uid
, name
, emailid
.
Что мне нравится в первой модели, так это то, что вы можете добавить как можно больше полей без ограничений.
Кроме того, мне было интересно, теперь, когда я реализовал первую модель. Как мне выполнить запрос, например, я хочу выбрать всех пользователей, у которых есть имя, например, 'foo'?
Вопрос - Какой лучший способ хранения пользовательских данных (учитывая, что количество полей не фиксировано) в базе данных с использованием - JSON или столбец на поле? Кроме того, если реализована первая модель, как запросить базу данных, как описано выше? Должен ли я использовать обе модели, храня все данные, которые могут быть найдены по запросу в отдельной строке, а другие данные в JSON (это другая строка)?
Обновить
Так как столбцов, по которым мне нужно выполнять поиск, будет не слишком много, разумно ли использовать обе модели? Ключ для столбца для данных, которые мне нужно искать, и JSON для других (в той же базе данных MySQL)?