Я создаю систему построения опроса и не знаю, как лучше хранить данные. Эти два варианта можно видеть у меня есть:Чтобы сериализовать массив или не сериализовать массив: как сохранить опрос
- Чтобы использовать упорядоченный массив или
- Для того, чтобы хранить каждый элемент в виде отдельной строки в соответствующей таблице
Например, при использовании Сначала я бы хранить что-то вроде следующего, как упорядоченный массив:
Array
(
[name] => Survey
[sections] => Array
(
[0] => Array
(
[name] => Introduction
[pages] => Array
(
[0] => Array
(
[text] => Please answer the following questions.
[questions] => Array
(
[0] => Array
(
[text] => Are you male or female?
[answers] => Array
(
[0] => Male
[1] => Female
)
)
)
)
)
)
)
)
Польза Я вижу в этом являются:
- Это централизованная, и
Легко редактировать в сценарии с помощью простого запроса, как:
UPDATE surveys SET data = '$serialized_array'
Основной недостаток я вижу в этом есть:
- Трудно редактировать вне сценария (например, при использовании Navicat, например)
Я также слышал, что плохая практика хранения данных в виде сериализованного массива. Хотя я предполагаю, что это полностью зависит от контекста (или тот, с кем я это слышал, ошибается).
С помощью второго (хранящего каждый элемент в виде отдельной строки в соответствующей таблице), я бы иметь структуру базы данных, как это:
обследования
id name
1 Survey
секция
id name survey_id index
1 Introduction 1 0
страницы
id text section_id index
1 Please answer these questions. 1 0
вопросы
id text page_id index
1 Are you male or female? 1 0
отвечает
id text question_id index
1 Male 1 0
2 Female 1 1
Преимущества я вижу в этом являются:
- Существует лучшее разделение контента и
- легче редактировать вне сценария (например, при использовании Navicat, например)
Основной недостаток я вижу в этом есть:
- труднее редактировать внутри сценария (много запросов со сложной логикой, чтобы иметь дело с переупорядочен элементов или повторно структурированных ответов)
Мой вопрос к вам это:, какой из этих двух методов (если это действительно так) лучше подходит для задачи? У меня возникает соблазн сохранить данные в виде сериализованного массива, поскольку он кажется намного проще в создании и упрощении управления. Хотя я вижу ... elegance ... храня данные в виде отдельных строк в соответствующих таблицах.
Если это имеет значение, на данный момент опрос строится с использованием JavaScript: элементы HTML добавляются, удаляются и повторно заказываются с использованием (в частности) jQuery, а затем готовый продукт представляется в форме (с $_POST
массив, который я привел выше).
вопрос может быть спорным, если вы готовы рассмотреть другую базу данных, как документ магазина, такие как MongoDB. – cmbuckley
Это выглядит интересно. Хотя, я не создаю эту систему опроса исключительно для собственного использования, но для всех и каждого, чтобы загрузить и реализовать их, поэтому было бы лучше, если бы не полагаться на менее часто используемые сторонние программы – MichaelRushton