kpodyganov
@kpodyganov
Увлекаюсь фронтенд-разработкой

Как грамотнее оформить данные в базе данных?

Затрудняюсь выбрать вариант сохранения данных в таблицу MySQL:
Есть таблица questions, которая хранит вопрос и варианты ответов.

Я могу массив вариантов превратить в строку вида "['first', 'second']" а потом сохранить в ячейку `options` таблицы questions. А могу создать еще одну таблицу с этими вариантами и столбцом question_id (но при этом выйдет 2 запроса)

Что лучше?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Только отдельные таблицы, а ответы с вопросами можно получить одним запросом (было бы желание):
create table questions (
  id int primary key auto_increment,
  question varchar(255)
);

create table question_options (
  id int primary key auto_increment,
  question_id int,
  answer varchar(255)
);

select 
	q.question,
	json_arrayagg(answer) answers
from questions q
join question_options qo on qo.question_id = q.id
group by q.id, q.question
;


Результат:
+=============+============================+
| question    | answers                    |
+=============+============================+
| Question 1? | ["Answer 1?", "Answer 2?"] |
+-------------+----------------------------+
| Question 2? | ["Answer 3?", "Answer 4?"] |
+-------------+----------------------------+


Проверить SQL запрос
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Лучше отдельную таблицу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы