Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 一对多关系模型,其中右侧的数据可能非常可变?_Sql_Orm_Relational Database - Fatal编程技术网

Sql 一对多关系模型,其中右侧的数据可能非常可变?

Sql 一对多关系模型,其中右侧的数据可能非常可变?,sql,orm,relational-database,Sql,Orm,Relational Database,以下是我试图解决的问题: Entity A : a_id Entity B : b_id One A can use Many B's. However, not all Bs are used by all As. 这是我能想到的最好的例子: One teacher has many students. Some students are taught by more than one teacher. 什么是关系,这样我可以添加/删除由一位教师教授的学生,但不影响已经教授所述学生的教师?

以下是我试图解决的问题:

Entity A : a_id
Entity B : b_id
One A can use Many B's. However, not all Bs are used by all As.
这是我能想到的最好的例子:

One teacher has many students.
Some students are taught by more than one teacher.

什么是关系,这样我可以添加/删除由一位教师教授的学生,但不影响已经教授所述学生的教师?

您需要一个学生教师实体,将两者联系在一起。它将有一个a_id列和一个b_id列。

您需要一个StudentTeacher实体,将两者关联起来。它将有一个a_id列和一个b_id列。

您需要第三个表,称为这两个表之间的映射。创建此表以便:

Table Student_Teacher_Mapping

   Id (Int)
   TeacherId(Int)  // foreign key for teacher table  
   StudentId(Int)  // foreign key for student table

我想这就是您想要的。

您需要第三个表,称为这两个表之间的映射。创建此表以便:

Table Student_Teacher_Mapping

   Id (Int)
   TeacherId(Int)  // foreign key for teacher table  
   StudentId(Int)  // foreign key for student table

我想这就是你想要的。

那么在教师映射上有可能有一个一对多的关系吗?是的。学生和教师都与映射表有一对多的关系。例如,teacher.mapping将包含该教师所教的所有学生。显然,我在理论上实施此方法是有原因的循环和记忆耗竭。我猜我不能使用ORM来完成这个过程。那么在TeacherMapping上就有可能有一个一对多的关系吗?是的。学生和老师都会有一对多的映射表关系。例如,teacher.mapping将包含该老师所教的所有学生。显然,我在理论上实现这个方法是有原因的循环和记忆耗竭。我想我不能用ORM来完成这个过程。