Задать вопрос
@Krasovsky

Как создать связь поля в 1 таблице с несколькими записями в другой?

Доброго дня!
Пожалуйста подскажите хорошую практику!
У меня есть поле(group) в таблице(обзовем ее user), с полем groups, в котором как вы поняли, я планирую держать группу(ы) пользователя. И соответственно таблица groups. Все бы ничего - сделать связь 1 к 1му, но пользователь может иметь несколько групп. Как в таком случае лучше поступить?
1 полу group сделать varchar, и хранить список idшников групп через запятую, к примеру, но тогда отсортировать юзеров по группам не представляется возможным. Да и деть придется два запроса к базе что бы получить юзера и его группы.
2 создавать третью таблицу, для коннекта юзеров с группами? Это лишняя таблица и путаница, сложность запросов. Хотя склоняюсь к этому варианту,
Но возможно есть какие то нетривиальные методы/техники, как вы, дорогие господа, решаете такую задачу?
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Стандартная связь многие-ко-многим - через дополнительную таблицу.
Ответ написан
Комментировать
@dev2expert
1 полу group сделать varchar, и хранить список idшников групп через запятую, к примеру, но тогда отсортировать юзеров по группам не представляется возможным. Да и деть придется два запроса к базе что бы получить юзера и его группы.

Как потом будете отбирать группы? С помощью LIKE?
А удалять группы у пользователей? Получать, парсить, удалять и записывать?

2 создавать третью таблицу, для коннекта юзеров с группами? Это лишняя таблица и путаница, сложность запросов. Хотя склоняюсь к этому варианту,

Дополнительная таблица в вашем случае лучший вариант.
Ответ написан
Комментировать
@edojdikov
Senior PHP developer
В плане нормализации данных только 2-ой вариант: создать 3-ю таблицу со связями id_user / id_group.
В таком случае при больших объемах данных у вас будет меньше ресурсов кушаться при запросе. Проверенно на личном опыте.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы