Приведи пример отношения 'один ко многим' (One to Many) в контексте баз данных.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Отношение One-to-Many в контексте баз данных означает, что одна запись в одной таблице связана с множеством записей в другой таблице.
Типичный пример: Отдел (Department) и Сотрудники (Employees).
- Один отдел может иметь множество сотрудников.
- Каждый сотрудник принадлежит ровно одному отделу.
Таблица "Отделы" (Departments) может содержать:
| ID | Название |
|---|---|
| 1 | Продажи |
| 2 | Разработка |
Таблица "Сотрудники" (Employees) может содержать:
| ID | Имя | Фамилия | department_id |
|---|---|---|---|
| 101 | Иван | Петров | 1 |
| 102 | Мария | Сидорова | 1 |
| 103 | Алексей | Иванов | 2 |
В этом примере department_id в таблице "Сотрудники" является внешним ключом (Foreign Key), ссылающимся на ID в таблице "Отделы". Это реализует отношение One-to-Many.
В ORM, например, Hibernate/JPA, это отношение может быть представлено следующим образом:
// Класс представляющий сущность Отдел (Department)
@Entity
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL) // Отношение One-to-Many с Employee
private List<Employee> employees;
// getters and setters
}
// Класс представляющий сущность Сотрудник (Employee)
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
@ManyToOne // Отношение Many-to-One с Department (обратная сторона One-to-Many)
@JoinColumn(name = "department_id") // Указывает на столбец внешнего ключа в таблице Employee
private Department department;
// getters and setters
}
Здесь @OneToMany в Department указывает на отношение "один отдел ко многим сотрудникам", а mappedBy = "department" говорит о том, что управление этим отношением на стороне Employee через поле department. @ManyToOne в Employee является обратной стороной отношения. @JoinColumn указывает на столбец внешнего ключа.