Как правильно делать конструктор пользовательских таблиц?
Всем привет, мучает меня и моё любопытство теоретическая часть вопроса... Наткнулся я на это в CRM Bitrix24, так что опишу на его примере.
Есть у нас, допустим, табличка "клиенты". у клиентов есть поля "телефон", "фио", "почта". Сам сервис крутится в облаке. И для каждой компании есть возможность кастомизировать таблицу, т.е. пользователь 1 может добавить поле "адрес", пользователь 25 может добавить поле "источник", и т д. Более того, для поля можно выбрать тип данных.
Собственно говоря, меня заинтересовало, как правильно было бы реализовать такое в базе?
На ум приходит вариант с "запилить табличку с полями "ид_владельца", "имя_поля", "значение". Но в таком случае нет возможности задать тип данных, да и с точки зрения проведения выборок по этим данным - очень большая беда в производительности будет.
Ещё вариант - использовать JSONP для этих целей, это решит проблему с типизацией, однако оставит проблему с отсутствием индексов, и сложностью выборки. В общем, я думаю, есть красивый лаконичный вариант, о котором я не знаю :)
Прошу подсказать, какова была бы наиболее верная реализация?