Я не думаю, що достатньо часу було приділено увазі до міркувань щодо схеми, викладених в оригінальному дописі. Отже, тут є що врахувати будь-яким новачкам.
Скажімо, ви пішли далі і створили це рішення. Усі ваші службові значення об'єднуються в одне значення та зберігаються в базі даних. Ви справді економите [трохи] місця у вашій базі даних і трохи часу на кодування.
Тепер давайте розглянемо, що ви повинні виконувати часте і легке завдання, додаючи новий прапорець між поточними прапорцями 3 та 4. Ваш менеджер з розвитку, замовник, незалежно від того, що очікує, що це буде проста зміна.
Отже, ви додаєте прапорець до інтерфейсу користувача (найпростіша частина). Ваш цикл циклу вже поєднує значення незалежно від кількості прапорців. Ви також вважаєте, що поле бази даних - це просто varchar або інший тип рядка, тому воно також повинно бути нормальним.
Що трапляється, коли клієнти чи ви намагаєтесь переглянути дані до зміни? Ви по суті серіалізуєтеся зліва направо. Однак тепер значення після 3 усі відхиляються на 1 символ. Що ви збираєтеся робити з усіма вашими наявними даними? Ви збираєтеся написати програму, витягнути її з бази даних, обробити, щоб додати значення за замовчуванням для нової позиції запитання, а потім зберегти все назад у базі даних? Що відбувається, коли у вас є кілька нових значень на тиждень чи місяць? Що робити, якщо ви переміщуєте розташування та jQuery обробляє їх в іншому порядку? Усі ваші дані шлангові, і їх потрібно повторно обробити, щоб переставити їх.
Вся концепція НЕ забезпечувати тісні відносини ключ-значення - це ludacris, і це призведе до того, що ви потрапите в біду швидше, ніж пізніше. Для тих, хто обмірковує це, будь ласка, не робіть цього. Інші пропозиції щодо змін схеми чудові. Використовуйте дочірню таблицю, більше полів у головній таблиці, таблицю відповідей на запитання тощо. Тільки не зберігайте немарковані дані, коли структура цих даних може змінюватися.