Как хранить несколько полей в одном поле в базе данных MYSQL - PullRequest
1 голос
/ 10 июня 2011

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

Я думал о создании базы данных со следующими полями ID, идентификатор клиента, дата, время, данные Данные будут html контактной формы. Однако я уверен, что это не лучшая практика. Также это не позволило бы мне предложить клиенту возможность загрузки всех своих контактных форм в формате csv или аналогичных. Я не хочу иметь разные таблицы для каждого клиента, и я уверен, что иметь таблицу с 'field1', 'field2', 'field3' и т. Д. Тоже не очень хорошо. Есть идеи?

Ответы [ 3 ]

1 голос
/ 10 июня 2011

Создайте еще одну таблицу с именем user_data. В нем есть:

id, user_id, data

Затем, если они заполняют форму с 10 полями, вы можете ввести 10 записей в эту таблицу. Когда вы извлекаете данные для пользователя, просто извлекайте также любые данные из таблицы user_data, в которой user_id = их id.

Если вам нужно больше, вы также можете добавить поле «field_name» или что-то еще:

id, user_data, field_name, data
1 голос
/ 10 июня 2011

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

Вот еще одно обсуждение дизайна базы данных: Рекомендации по проектированию баз данных

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

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

1 голос
/ 10 июня 2011

Если вам не нужно, чтобы это было реляционным, это было бы хорошо.Вы не сможете получить очень простой запрос.

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

Или использовать тип хранилища KeyValue DBкак MongDB, и вы можете хранить все свои данные, не беспокоясь о схеме.

...