Как мне создать эффективный дизайн базы данных MySQL, где он хранит разные значения для нескольких пользователей? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь создать веб-сайт, и мне нужно создать систему, в которой он показывает случайные вопросы, и, если пользователь отвечает правильно, он исключает вопрос из случайной печати. ​​
Мне нужна таблица, в которой один изстолбцы - это номер вопроса, а один - логическое значение, указывающее, правильно ли на него уже получен ответ.
Но я не могу создать таблицу для каждого пользователя, потому что это заняло бы слишком много места.Есть ли какие-нибудь хорошие способы создать базу данных таким образом, чтобы она могла управлять всеми пользователями одновременно?

Я действительно потерян в том, что я должен делать, поэтому я ничего не мог попробовать.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я думаю, что лучший вариант решения этой проблемы - создать 3 отдельные таблицы:

1º Table -> Users, которые будут хранить PRIMARY_KEY как user_id (или любое другое имя, которое вы дадите).
2º Таблица -> Вопросы, также будет иметь PRIMARY KEY и VARCHAR с текстом
3º table -> UserQuestion. Эта таблица будет представлять собой смесь обеих таблиц, прежде чем она будет пустой в начале, но в конечном итоге сгенерирует ...
----> эта таблица свяжет user_id с question_id, так что вы сможете исключить вопросы, которые будут в этой таблице.

0 голосов
/ 11 февраля 2019

Канонический способ сделать это - добавить в таблицу поле user, к которому присоединяется ограничение внешнего ключа к первичному ключу таблицы users.

Это поле нуждается в (не уникально) и будет работать в качестве селектора для фильтрации только тех вопросов, которые применимы к специальному пользователю.

В вашем случае используйте один ключ над полем user и полем answeredсоздаст идеальный путь доступа для запросов с предложением WHERE вдоль строк WHERE user=? AND answered=0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...