Как правильно связать таблицы связь многие к многим?
У меня есть 3 таблицы: "users", "группы" и "софт". Нужно сделать так, чтобы для каждой группы был свой софт, но некоторый софт может быть у нескольких групп, я думаю может убрать таблицу софт и просто в группе добавить строку софт, просто хотелось, чтобы софт был отдельной таблицей.
окей смотри в табл групп
две строки название группы пользователь и софт , для группы может быть несколько программ и одна из их может быть в другой группе
itgood
Если честно, непонял сообщения выше, но есть ощущение ,что вы путаете понятие "Строки" и "Колонки". Ну предположим ...
Давайте я вам просто поясню как это поидее должно выглядеть ?
1. Табл Юзерс (ID, Name ,.....)
2. Табл Группы (Id, Name, ....)
3. Табл Софт (ID, Name, .....)
Тут как бы всё просто ... так ? ну списки сущностей ...
Дальше делаем таблицу связей :
4. Табл Юзерс-Группы (GroupID,UserID). Благодаря этой таблице мы можем организовать связь юзеров и групп. Т.е. 1 пользователь может быть в нескольких группах, вроде тоже корректно.
5. Табл Группа - Софт (GroupID, SoftID) тут мы указываем какая группа, каким софтом владеет. Ну т.е. 1-н софт может быть и в группе с ID = 1 а в другой строке этот же софт в группе с ID = 2 ... Если мы будем смотреть со стороны софта ... мы получим что софт у 2-х разных групп ... или у одной .. как пойдёт...
Итого связь "для группы может быть несколько программ и одна из их может быть в другой группе" соблюдается...
Строка 1 : GroupID = 1, SoftID = 1
Строка 2 : GroupID = 1, SoftID = 2
Строка 3 : GroupID = 2, SoftID = 1
itgood Всмысле ? вот в комменте выше :
Строка 1 : GroupID = 1, SoftID = 1
Строка 2 : GroupID = 1, SoftID = 2
Строка 3 : GroupID = 1, SoftID = 3
Строка 4 : GroupID = 2, SoftID = 1
и т.д. ... У одной группы вот например 3 софта ...
(ну это конечно не много но список можно продолжить)
А софт с ID = 1 участвует и в группе 1 и в группе 2 ...