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

Я создаю веб-приложение, и оно имеет форму с некоторыми полями.Пользователь вводит данные из формы, но мне нужно разрешить пользователю добавлять, изменять или удалять поля и настраивать форму в приложении.Например, у компании ABC есть веб-приложение для хранения информации о клиентах через интерфейс формы.Форма по умолчанию содержит поля имени, адреса, телефона и т. Д., Но компания хочет сохранить информацию о членстве и добавить текстовое поле для ввода «Членство №».На серверной стороне эти пользовательские поля и значения должны быть сохранены.

Моя первоначальная идея была

Таблица клиентов

|--------|--------|-------------|--------|
|   ID   | name   |   address   | phone  |
|--------|--------|-------------|--------|
|    1   |   Tom  |  somewhere  | 0123456|
|--------|--------|-------------|--------|

Таблица полей

|--------|--------------|
|   ID   | name         |   
|--------|--------------|
|    1   | Membership No|  
|--------|--------------|

Входная таблица

|------------|----------|----------|
|Customer_ID | Field_ID | Value    |
|------------|----------|----------|
|    1       |    1     | ABC00001 |
|------------|----------|----------|

И присоединение к таблицам

with info as (
select *
from (
    select a.Customer_ID, b.name, a.Value 
        from dbo.Input a
        join dbo.Field b
        on a.Field_ID = b.ID
) as info
pivot (max(value)
     for Name in ([Membership No])) as fields
)
select c.Customer_ID, d.name, d.address, d.phone,  c.[Membership No]
from info c
inner join dbo.Customer d
on c.Customer_ID = d.ID
order by Customer_ID`

И результат

|-----------|-------|-----------|---------|--------------|
|Customer_ID| name  | address   | phone   | Membership No|
|-----------|-------|-----------|---------|--------------|
|     1     | Tom   | somewhere | 0123456 | ABC00001     |
|-----------|-------|-----------|---------|--------------|

, но количество клиентов может составлять миллион, а количество настраиваемыхполя могут быть 10 или 20.

Есть ли лучший способ сохранить динамическую таблицу?

...