Как мне хранить данные в базе данных SQL, если столбцы базы данных могут отличаться? - PullRequest
0 голосов
/ 13 июня 2019

Я создаю веб-приложение ASP.NET, которое позволяет пользователям оцифровывать бумажные формы.Пользователь будет импортировать свои собственные формы, которые будут преобразованы в HTML с заполнителями, вставленными для принятия значений из формы ввода.

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

Мой вопрос: как мне сохранить эти данные?Я не могу по-настоящему использовать традиционную таблицу базы данных, потому что форма X может выглядеть совсем не так, как форма Y, и для нее требуются совершенно другие данные.У меня есть база данных SQL для хранения данных (мне это нужно и для других аспектов сайта), но я не могу просто хранить все данные формы в одной таблице или даже иметь отдельные таблицы для каждой формы, так как это будет непрактично дляв большем масштабе.

Мои первоначальные мысли были с использованием JSON, но я абсолютно не представляю, с чего начать.Могу ли я поместить данные JSON в обычный столбец базы данных SQL?Может ли это быть использовано для генерации кода для создания веб-формы, чтобы позволить пользователю легко заполнять свои формы с помощью любого устройства (согласно моим требованиям к дизайну)?

1 Ответ

0 голосов
/ 13 июня 2019

Я думаю, что ваша проблема была бы очень хорошо решена при использовании базы данных документов, такой как mongoDB или Arangodb.В настоящее время реальность такова, что приложения могут, а иногда и должны использовать более одной БД.

Сказав, что, если бы мне пришлось использовать реляционную БД, я бы преобразовал ваши формы в 3 таблицы.Первая форма верхнего уровня будет просто хранить что-то вроде:

  • имя формы,
  • идентификатор формы,
  • и т.д. ...

Вторая таблица будет содержать поля формы и будет выглядеть примерно так:

  • FormID
  • Идентификатор поля
  • имя поля
  • тип поля(int, varchar и т. д.)
  • номер сортировки
  • и т. д.

Третья таблица будет содержать информацию, введенную пользователем:

  • идентификатор пользователя
  • идентификатор формы
  • идентификатор поля
  • значение
  • дата создания время
  • последнеевремя изменения даты
  • и т. д. *

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

Следует отметить, что приведенные выше определения таблиц не предназначены для полноты каким-либо образом, они предназначены для того, чтобы дать вам представление о том, как начать работу.

Наконец, обратите внимание, что многие реляционныеDB позволяет вам хранить JSON прямо сейчас в БД, как вы предлагали, но это может быть не очень хорошим вариантом, в зависимости от того, какую БД вы используете. Здесь - пример хранения JSON в mysql только для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...