2016-11-02 3 views
0

У меня есть продукт SAAS, который создается Spring MVC и Hibernate. Как правило, продукты SAAS позволяют пользователю настраивать продукт, например добавлять дополнительные поля в таблицу.
Итак, я хочу предоставить пользователям гибкость, создать собственные поля в таблицах для себя.
Просьба предоставить все жизнеспособные решения для его достижения.
Большое вам спасибо за помощь.Добавление пользовательских полей в мое приложение

ответ

0

Я предполагаю, что вы пытаетесь вернуть это в реляционную базу данных. Основная проблема заключается в том, что реляционные базы данных хранят вещи в таблицах, а таблицы действительно не обрабатывают данные свободной формы.

Таким образом, одно из решений заключается в использовании гибкой структуры документов, такой как XML (и, возможно, сбой базы данных), но базы данных имеют хорошие функции, поэтому давайте также рассмотрим подходы к базе данных.

Вы можете создать «пользовательские поля» таблицу, которая будет иметь столбцов (составной первичный ключ) для

ExtendedTable ColumnName

, но вы также должны хранить данные где-то

(ExtendedKey) DataItem

И теперь мы попадаем в действительно неприятные биты. Как бы вы применили ограничения к этим данным? Я имею в виду, какой тип будет DataItem? Общее решение будет довольно сложным (являющимся типом базы данных свободной формы). Надеемся, вы можете ограничить решение, чтобы решить только те проблемы, которые вам нужны.

Другим подходом является использование одного «лишнего» столбца, который содержит запись XML, которая встраивает свои собственные расширения «столбцы и значения», но если вы хотите отобразить таблицу эффективно, вам придется разбирать каждый XML-документ в каждом поле, что не является идеальным.

Ни один из этих подходов не будет хорошо работать с существующим языком SQL-запросов, поэтому вы начнете создавать свой собственный язык запросов.

Предлагаю вам вернуться к реальным требованиям к данным, вместо того, чтобы подметать их под столом с помощью «и всего, что может потребоваться» набора столбцов на вашем столе.

+0

Можете ли вы дать мне некоторый проблеск примера (ExtendedKey) подхода DataItem. –

0

Ваше требование - наилучший вариант использования для баз данных NoSQL (например, MongoDB).

Динамического создание таблиц реляционных баз данных & столбцов (модифицирующие схемы) по запросам пользователей в приложении не является наилучшей практикой, поскольку они связаны с DDL операций, которые являются очень мощными и в том случае, если вы не обращаться с ними осторожно, вся база данных приложения переходит в несогласованное состояние.

+0

Я не хочу использовать NoSql, у меня Mysql работает gr8. можете ли вы привести пример (ExtendedKey) DataItem, как предлагается ниже –

+0

Каков размер данных для каждой строки? Это огромно? – developer

+0

Я не мог понять ваш вопрос –

Смежные вопросы