跨2个表防止MySQL(InnoDB)上的重复ID

时间:2013-01-19 02:12:59

标签: mysql foreign-keys many-to-many

是否可以让下一个生成的行的ID(跨2个表)是唯一的?

我有4张桌子:

  • 1 for teachers
  • 1为学生
  • 1 for projects
  • 1 for relations

relations 表有3个外键。 一个是教师ID,一个是学生ID,另一个是项目ID

由于项目可以同时与教师和学生相关,我如何确保新创建的教师或学生不会拥有其他类型帐户已使用过的ID?

如果我可以这样做,那么关系表只有3列: ID,project_ID和related_to(ID)

如果没有,我将不得不添加第4行,表明与其相关的帐户类型(学生或教师)。

感谢您的帮助!

关于帐户类型之间的区别: 我必须将这个完全相同的情况转换为我的另一个项目,其中前两个表格完全不同。这就是为什么我不打算在这里合并学生和教师表。

2 个答案:

答案 0 :(得分:1)

您不需要在studentteacher表之间具有唯一值,因为关系表为每个关系都有单独的字段,因此没有冲突。

但是,这不是正确的做事方式。您需要两个关系表teacher_projectstudent_project。或者,根据教师和学生之间不同的独特数据,您可以拥有一个person表和一个单独的关系,这可能更接近现实世界。

答案 1 :(得分:0)

我认为你可以确定教师从1开始,增量2;学生从2开始增量2.通过这种方式,奇数指老师,偶数指学生。不会发生冲突。