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