Динамический рабочий процесс: хранение данных в статических таблицах против создания динамической таблицы

У меня есть веб-приложение, в котором пользователь может создавать формы данных на лету. Приложение находится в ASP.NET с MSSQL в бэкэнде. Чтобы создать форму, пользователь должен указать поля для формы. Чтобы добавить поле, пользователь должен указать метку поля, тип поля, например. (число, сумма, адрес электронной почты) и другие атрибуты. Ниже приведен пример конфигурации динамической формы.

Имя формы: Продажи

Метка поля: Имя клиента Тип поля: текст Длина: 100

Метка поля: Сумма Тип поля: деньги

Надеюсь, вы уловили суть. Таких форм может быть много. Для каждой формы могут быть тысячи строк. Конфигурация поля хранится в таблицах со схемой, как показано ниже:

Таблица: DataTypes Столбец: DataTypeId int, DataTypeName varchar (100)

Таблица: FormFields Столбцы: FieldId int, FieldLabel varchar (100), DataTypeId int

Есть два способа сохранить значения формы в базе данных.

Подход 1: Хранить данные в статических таблицах как пару ключ-значение. При таком подходе моя таблица будет выглядеть так:

Таблица: FormFieldValues Столбцы: FieldId int, Numeric_value numeric (18,5), Text_Value varchar (500), Money_Value деньги

Таким образом, строка в таблице FormFieldValues ​​будет выглядеть так, как показано ниже

Идентификатор поля | Numeric_Value | Text_Value | Money_Value

1 100.512
2 Джон Уэйн

3 200,50 долларов США

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

Подход 2: Используя конфигурацию полей, создайте динамическую таблицу на лету. Итак, в приведенном выше примере я могу создать таблицу, как показано ниже

Таблица: Форма 1 Столбцы: Id int, CustomerName varchar (100), Amount money, Version numeric (15,5)

Строка в этой таблице выглядит так

CustomerName | Сумма | Версия

Джон Уэйн $ 200,50 100,512

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

Какой подход лучше? Какой подход будет более масштабируемым и более эффективным в долгосрочной перспективе?

Примечание: SO не поддерживает форматы таблиц, поэтому таблицы могут отображаться некорректно, но я надеюсь, что читатели поймут суть.

Вы нашли какое-либо решение / другие методы, которые помогут в этом? не могли бы вы поделиться своим ответом @devanalyst

Amal Sebastian 04.09.2018 10:59

Нет. Но я решил использовать подход 1.

devanalyst 08.09.2018 19:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
229
0

Другие вопросы по теме