@joha0738

Как реализовать создание онлайн анкеты с вопросами и ответами?

Мне необходима создать сайт где авторизованный пользователь с ролью АДМИНА может создавать разные анкеты в которых количества вопросов и количество вариантов ответа могут быть разными. Я не понимаю как это реализовать по некоторым причинам.
1: Я умею создавать обычную таблицу в БД , где уже есть определенные столбцы и не знаю как ее расширять по необходимости.
2: Для анкеты необходимо создавать несколько таблиц (Для названия анкеты, названия ее вопросов и вариантов ответа) или все это лучше запихнуть в одну таблицу?
Я использую (Spring MVC,security, java,mysql,maven)
  • Вопрос задан
  • 87 просмотров
Решения вопроса 2
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
1. Правильно спроектированную базу данных потребуется изменять только при изменении логики приложения

2. Пример структуры таблиц под ваше описание:
create table questionnaires (
        id int primary key auto_increment,
  	title varchar(255)
);

create table questios (
        id int primary key auto_increment,
  	questionnaire_id int,
  	title varchar(255),
  	foreign key (questionnaire_id) references questionnaires(id)
);

create table answers (
        id int primary key auto_increment,
  	question_id int,
  	title varchar(255),
  	rigth bool,
  	foreign key (question_id) references questios(id)
);


SQL online fiddle
Ответ написан
Комментировать
azerphoenix
@azerphoenix
Java Software Engineer
Добрый день.
Как отметил коллега Developer вопрос действительно обширен.
Ну во-первых, вам нужны сущности User, Role & Privilege (необязательно). У каждого пользователя есть set ролей, каждая из которых содержит set привилегий. Есть роль ADMIN, а также например, USER.

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

Не совсем понятно, как именно вы создаете таблицы (db first || corde first). Для простоты используйте возможности Sping Data JPA.
Что касается вопроса о расширении, то как правило, используют sql скрипты (патчи), которые кладут например, в resources и используют flyway. При перезапуске он применяет нужный sql файл. Также необходимые правки вносят в код сущности.

Для анкеты необходимо создавать несколько таблиц (Для названия анкеты, названия ее вопросов и вариантов ответа) или все это лучше запихнуть в одну таблицу?

Вы можете создать 1 сущность: анкета, которая содержит список вопросов. Список вопросов в свою очередь содержит список ответов. У каждого ответа есть напрмиер, некий флаг, является ли данный ответ верным или нет.
В общем, существуют разные типы тестов и каждый из них отличается. Например, есть тесты, в которых есть правильный ответ. Есть тесты, в которых нет правльных ответов, но у каждого ответа есть балл, который впоследствии суммируется и выдается результат и т.д.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
Тут только один совет - устроиться на работу для получения опыта
Ответ написан
Ваш ответ на вопрос

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

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