У меня есть приложение, которое продается как SAAS нескольким клиентам. Как и ожидалось, иногда клиенты хотят настроить некоторые области приложения, добавив свои собственные поля, в частности область, относящуюся к отслеживанию действий/проектов. Мы разрешаем небольшое количество этого в настоящее время. Он обрабатывается путем хранения имен дополнительных полей для каждого клиента в db с идентификатором для каждого поля. Затем любые значения сохраняются во второй таблице, которая имеет столбец для каждого потенциального типа данных (String, date и т. Д.). В этой таблице указан идентификатор настраиваемого поля и ключ объекта, к которому он присоединен. Таким образом, мы сохраняем все пользовательские данные полей в одной таблице. Я не был бы слишком обеспокоен этим, если бы он ограничивался небольшим количеством полей для странного клиента, но теперь его рассматривают как возможность для продаж и обслуживания клиентов быстро настроить приложение для отдельных клиентов, а в некоторых случаях получая больше настраиваемых полей, чем первоначально было в рассматриваемом предмете.Как лучше создавать пользовательские поля для каждого пользователя/клиента?
Я убедил людей в том, что мы должны удержать эти масштабные настройки на данный момент, и я, как правило, придерживаюсь мнения, что если вы хотите такого поведения, вы должны правильно его построить, то есть создать соответствующие таблицы базы данных и т. д. Был еще один вопрос, который упоминает два способа его реализации в базе данных here. Одно из решений аналогично описанному выше. Другой - иметь кучу избыточных полей в таблицах, которые должны быть настроены под названием Text1, Text2, Date1, Date2 и т. Д., Которые затем могут быть использованы в соответствии с требованиями пользователей, переименовавших их соответственно в gui.
Мне было интересно, но, Как кто-то еще решил эту проблему? какие ограничения были для их решения? и любые предложения для дальнейшего чтения, которые я мог бы сделать.
веселит,
Использовали ли вы какие-либо оптимизации с использованием модели Value Entity Attribute Value для повышения производительности? (например, кэширование или индексирование и т. д.) –