在 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) =].
我正在从事一个涉及数据库中一对多关系的项目。 一个简单的例子就是一位教授多门课程的老师,但一门课程只能由一位老师教授。 我的问题是最好的建模方法是什么?
第一个对象是老师:
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) =].