Я видел много вопросов здесь, но никто не подходит к моей проблеме. Я пытаюсь создать масштабируемую модель ER, и если я хочу добавить больше данных, не разбивайте почти ничего, поэтому я пытаюсь создать:
Существует 2 типа пользователей, скажем, «Администратор» и «Рабочий», и у них разные роли.
Администратор может сделать CRUD вопросов, а также может создать комнату, в которую пользователи могут присоединиться, чтобы играть вместе (это просто имя, что-то вроде Kahoot!), Но, возможно, это хорошая идея для создания большего количества атрибутов внутри это как, ВОЗ играет в этой комнате, ТОЧКИ для всех, но давайте поговорим об этом позже, когда я покажу вам дизайн.
Хорошо, дело в том, что у меня есть дизайн:
Таблица User, которая содержит:
_id
username
password
date_creation
Это значение по умолчанию, но тогда мне интересно, как мне определить Роль, если это Администратор или Рабочий, что-то вроде isAdmin: true, а затем я проверяю этот Bool? Или я могу создать другую таблицу с именем Role и подключить ее к таблице User?
Но, возможно, мне нужно создать таблицу для обоих, я имею в виду администратора, у которого есть пароль, и некоторые функции, а затем пользователя Worker, у которого есть другой пароль и другие функции.
Тогда я бы хотел иметь таблицу Вопросов, в которой содержится:
_id
question_name
answers[1,2,3,4]
correctAnswer or answers because it can be multi option chooser
topic
isExamQuestion
dificulty
Тогда таблица комнаты должна содержать:
_id
name
capacity
type (game can be as a group or solo) that's why this attribute
exam (This should be a flag to know if this question is for an exam or not (It can be for EXAM or PRACTISE)
ranking (This is the top X from 1 to X)
don't think if I have to add the winner here because if I get the position 0 from ranking I get the winner...
Также есть таблица с названием Тема, если у моего вопроса есть тема, я могу выбрать вопрос по Теме. Примером темы должна быть математика, чтобы пользователь мог сдавать только экзамены или тесты с математическими вопросами.
_id
Name
Questions[...]
Then I have to store like a historic about what are the questions worker has answered correct and what did not, to make some statistics, but I need to store some historicals for Admin to see in this topic the average that Workers have failed more is : Question23 (for instance) something like that.
Чего мне не хватает, не могли бы вы помочь мне разобраться, как сделать этот дизайн лучше?
ПРИМЕЧАНИЕ. Я использую Spring для серверной части, Angular для Frontend и Android для App, хотя я могу изменить что-нибудь, чтобы работать с этой базой данных быстрее / лучше.
EDIT
Есть ход игры, если вам нужно больше деталей и если я неправильно объяснил.
Административный поток
- Создание вопросов (с различными типами ответов, такими как True / false, с пометками (одно и несколько ответов), текстом и т. Д ...)
- Создайте «игру», в которую могут присоединиться работники (в основном это программирование), но это должна быть комната с такими атрибутами, как идентификатор комнаты, maxNumber, тип (экзамен) и хранение историй, также есть тип игры (например, изображения, видео и т. д.)
- Посмотреть статистику о работниках. Это значит, увидеть, сколько ответов они ответили правильно, не получилось, посмотреть по теме (Это похоже на объединения и прочее, но дизайн должен быть хорошо сделан)
- См. Историю экзаменов, которые он делал раньше со всей информацией (участник, оценка, время, материал)
И рабочий поток
Он может попрактиковаться в том, что он отвечает на вопросы в случайном порядке или по темам (каждый отдельный ответ должен быть сохранен для статистики, чтобы избежать повторения ответов, которые он отвечает правильно), а также он может сдавать экзамены (не многопользовательские), просто опция, которую администратор может проверьте, является ли вопрос частью экзамена или нет.
А затем в комнате вещи, он может присоединиться с идентификатором.
Если вам нужны дополнительные разъяснения, дайте мне знать, и я отвечу вам как можно скорее.