База данных отношений между собой (пользователи и группы) - PullRequest
0 голосов
/ 28 января 2019

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

Iпусть у меня есть ученики, учителя, репетиторы, сохраните в моей таблице «пользователи» В одной группе много студентов, но есть только репетитор.

Я думаю о том, чтобы сделать это, добавив внешний ключ в свою таблицу пользователей, поэтому мойпользователи, которые являются студентами, принадлежат к группе, и у каждой «группы» есть наставник, поэтому мне нужно добавить внешний ключ к таблице «пользователи в« группах », но я не уверен, что это лучший подход.

Так что я прошу несколько предложений, спасибо за чтение

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Итак, у вас должны быть следующие три таблицы.Третья таблица будет играть роль таблицы-моста.

  • Пользователи
  • Группы
  • GroupUserRelation

Пользователи:

  • user_id (PK)
  • имя пользователя
  • роль (т. Е. Студент, преподаватель, репетитор)

Группы:

  • group_id (PK)
  • user_id (FK) (т. е. tutor_id)
  • group_name
  • group_timings

GroupUserRelation:

  • group_id (FK)
  • user_id (FK) (т. Е. Student_id)

group_id и user_id объединятся в составной ключ.

Таким образомВы можете определить отношение «многие ко многим» между учениками и преподавателем, если это потребуется в будущем.Например, репетитор может обучать много групп, и один ученик может также записаться во многих группах.

0 голосов
/ 28 января 2019

Да.Добавление TutorID в GroupTable - это нормально.

Создайте таблицу «GroupTable» со столбцами «GroupID» (PrimaryKey), «GroupName», «TutorID» (ForeignKey with Table Users).

Создатьтаблица 'StudentGroupMapping' со столбцами 'StudentID' (Foreignkey с пользователями), 'GroupID' (ForeignKey с GroupTable).Первичный ключ этой таблицы может быть составным первичным ключом (StudentID, GroupID).Благодаря этому мы можем сделать ученика принадлежащим к нескольким группам.

Целостность, с которой мы должны позаботиться, заключается в том, чтобы пользователь, помеченный как наставник, не входил в ученика.

...