Sobes.tech
Junior — Middle
80

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

Компании, где спрашивали
appfox

Ответ от нейросети

sobes.tech AI

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

Например, есть таблицы Students и Courses. Один студент может быть записан на несколько курсов, и один курс может иметь много студентов. Для этого создаётся таблица StudentCourses с двумя столбцами:

  • StudentId — внешний ключ на Students
  • CourseId — внешний ключ на Courses

В C# при использовании Entity Framework это можно описать так:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Course> Courses { get; set; }
}

public class Course
{
    public int Id { get; set; }
    public string Title { get; set; }
    public ICollection<Student> Students { get; set; }
}

EF Core автоматически создаст промежуточную таблицу для связи многие ко многим.

Если нужна явная промежуточная сущность, её можно описать отдельно:

public class StudentCourse
{
    public int StudentId { get; set; }
    public Student Student { get; set; }

    public int CourseId { get; set; }
    public Course Course { get; set; }
}

И в Student и Course добавить коллекции StudentCourse.

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