Хранение пользователей, связанных с динамическим числом классов в базе данных - PullRequest
0 голосов
/ 21 октября 2011

У меня есть таблица, в которой информация о пользователе хранится в таблице в базе данных MySQL. Мне нужен способ хранения классов, с которыми связаны эти пользователи.

Класс как в ... школе.

Классы, связанные с пользователями, должны быть динамическими и могут отличаться для каждого пользователя.

Я думал о том, чтобы в моей таблице профиля пользователя было определенное количество столбцов, связанных с классами. А затем просто вставьте classId в строку, если они связаны с классом. И просто продолжай его заполнять.

Это кажется грязным и очень плохим. Какие есть другие варианты, когда я могу запросить базу данных, чтобы узнать, с какими классами связан пользователь?

1 Ответ

2 голосов
/ 21 октября 2011

Установите две дополнительные таблицы: одну для классов (id, name, ...) и таблицу ассоциации, чтобы связать пользователей с их классами.Таблица ассоциации будет иметь два столбца: идентификатор пользователя и идентификатор класса.Затем, чтобы получить классы пользователя:

select class_id
from user_classes
where user_id = X

, где X - идентификатор пользователя.Аналогично, чтобы получить пользователей в классе:

select user_id
from user_classes
where class_id = X

Возможно, вы захотите установить для PK таблицы ассоциации значение (user_id, class_id) и индексировать каждый столбец отдельно.Если вам нужно больше информации о классе, чем просто ID, выполните объединение:

select u.name, ...
from users u join user_classes uc on u.id = uc.user_id
where uc.user_id = X
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...