Используйте отдельные таблицы. Хранение сериализованных данных в реляционной базе данных почти всегда плохая идея; если вы начнете с чистой нормализованной схемы, в будущем изменения будут намного проще (и все программное обеспечение будет меняться со временем, особенно «быстрые хаки»).
В вашем случае вы хотите, чтобы варианты выбора были в отдельной таблице, чтобы вы могли легко ответить на такие вопросы, как "сколько людей выбрали вариант 3 для вопроса 8?" или «какие вопросы имеют только 2 варианта».
Наличие отдельных таблиц также значительно упрощает ссылочную целостность. Например, вы можете настроить taken_quizes
, у которого есть множество answers
, по одному answer_choices
каждый; затем вы можете связать answer_choices
обратно с choices
, чтобы избежать противоречивых данных. Ссылочная целостность сложна и очень дорога, если вы храните сериализованные структуры данных в базе данных.
Кстати, вы, кажется, забыли свой класс Вопросов: у Викторины есть много Вопросов, и у каждого Вопроса есть много Вариантов.