Лучшие практики для хранения данных из сотен полей - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть форма с 500+ полями (это 10-страничная форма, разные типы данных).Не могли бы вы, ребята, посоветовать мне, как лучше всего хранить данные из формы?Я могу создать 500 полей в нескольких логически разделенных таблицах, но это кажется много (или, может быть, это лучший способ ?!), так как у меня есть несколько таких форм.Я смотрю в сериализации данных и хранения в длинном текстовом поле MySQL.Это будет иметь свои недостатки (о чем я думаю, если клиент захочет искать отдельные поля в будущем), но это кажется довольно быстрым решением.Буду признателен, если вы поделитесь своим опытом в аналогичной ситуации.

Ответы [ 3 ]

3 голосов
/ 18 ноября 2010

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

Также предполагается, что некоторые части формы являются необязательными.

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

Или вы можете определить схему XML, которая содержит все возможные поля в форме и т. Д., А также некоторую информацию о состоянии.

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

2 голосов
/ 18 ноября 2010

Вам может понадобиться 500 столбцов - если они не могут быть размещены в других таблицах. Трудно сказать, не видя ваших требований.

Сериализация этого сделает невозможным одно из преимуществ использования базы данных - запрос определенных значений столбцов.

0 голосов
/ 18 ноября 2010
create table profile_details (
   user_id number,
   field_name varchar,
   field_value varchar
);

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

select firstname, lastname, zipcode 
from profiles p 
join profile_details d1 on (p.user_id=d1.user_id) 
join profile_details d2 on (p.user_id=d2.user_id) 
where d1.field_name='hobby' and d1.field_value='fishing'
and   d2.field_name='income' and d2.field_value>cast(250000 as number);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...