在 OOP 中模拟一对多关系的最佳方法

Best way to model one to many relationship in OOP

我正在从事一个涉及数据库中一对多关系的项目。 一个简单的例子就是一位教授多门课程的老师,但一门课程只能由一位老师教授。 我的问题是最好的建模方法是什么?

第一个对象是老师:

class Teacher{
    public int id;
    public String name;
    public String lastName;
    ...
}

问题是课程 class 会是什么样子? 选项 1:

class Course{
    public int idCourse;
    public String courseDescription;
    **public int teacherId;**
    ...
}

选项 2:

class Course{
    public int idCourse;
    public String courseDescription;
    **public Teacher teacher;**
    ...
}

从 OOP 的角度来看,选项 2(具有对教师对象的引用)似乎更实用。

在通常的流程中,您会创建一个课程对象,例如:

Teacher t = new Teacher('first_name', 'last_name');
Course c = new Course('Math course');
c.setTeacher(t);

您的选项 1 强调了这背后的关系数据库模式可能是什么样子。这是一个很好的阅读: https://www.lifewire.com/one-to-many-relationships-1019756#:~:text=A%20teacher%20can%20teach%20multiple,one%20teacher%20to%20multiple%20courses.

提交上面的代码后,它可以触发两个插入查询,以在教师 table 中添加新教师并在课程 [=20] 中添加新课程(连同教师 ID) =].