Каким образом сделать связи между четырьмя и одним изначально не существующим объектом?
Добрый день, давольно для меня затруднительно понять.
Пример: Есть три таблицы, первая ученические классы, в ней хранятся классы, например:
id name
1 1А
2 7Д
3 3Б
Вторая ученики, например:
id name
1 Петя
2 Денис
3 Олег
Еще таблица учителей:
id name
1 Валентина
2 Елена
3 Анжела
В публичной части есть выпадающий список из классов, и простой список учеников.
Например залогинелась Валентина
Задача - она хочет выбрать класс, например 7Д и отметить учеников, что бы создать некую группу или добавить в уже существующую. А далее вот что важное!!!
Нужно создать некую группу у которой будет указан класс и выбранные ученики.
Если например выбран класс 7Д и мы пытаемся добавить учеников, то проверяем, если такой группы нет, то создаем, но если она есть то добавляем в нее. После этого, как создана хоть одна группа, появляется новый выпадающий список, из созданной группы и кнопка - "Создать группу" нажимая на которую, создается новая группа с активным классом.
Вот как лучше сделать связи из этих таблиц? И как лучше продумать структуру хранения?
Ну тут тремя таблицами не обойдешься, нужна таблица классы, учителей и учеников можно засунуть и в одну таблицу, а различать по какому нибудь полю type например. Нужна связующая таблица и связь многие ко многим так как учитель наверно к нескольким классам может быть привязан, или он вообще никуда не привязан. Нужна таблица группы, и связующая таблица которая привязывает ученика\учителя к определенной группе, остальное дело логики и проверок...
Просто создаете таблицу
school_groups:
name
class_id
type_id(100% типы появятся)
school_group_users
school_group_id
user_id
user_object(если user может быть учитель или ученик)
admin_id
admin_object(если админ может быть учитель или ученик)
либо вместо admin_id и admin_object сделать поле access_type и ставить там типо доступа просто и все
Конечно можно делать через систему ролей и доступов, но это раз так в 100 будет трудозатратнее и дороже.
Ну и если вы задаете такой вопрос, вы нормально не сделаете, потому не лезьте в систему ролей.