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

防止MySQL(InnoDB)上跨2个表的重复ID,mysql,foreign-keys,many-to-many,Mysql,Foreign Keys,Many To Many,下一个生成行(跨两个表)的ID是否可以唯一 我有4张桌子: 1名教师 1为学生提供 1用于项目 1.关系 关系表有3个外键。 一个是教师ID,一个是学生ID,另一个是项目ID 由于项目可以同时与教师和学生相关,我如何确保新创建的教师或学生没有其他类型帐户已经使用的ID 如果我可以这样做,那么关系表将只有3列: ID、项目ID和相关ID(ID) 如果没有,我将不得不添加第四行,指明与之相关的帐户类型(学生或教师) 谢谢你的帮助 关于账户类型之间的差异: 我必须将完全相同的情况转化为我的另一个项

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

我有4张桌子:

  • 1名教师
  • 1为学生提供
  • 1用于项目
  • 1.关系
关系表有3个外键。 一个是教师ID,一个是学生ID,另一个是项目ID

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

如果我可以这样做,那么关系表将只有3列: ID、项目ID和相关ID(ID)

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

谢谢你的帮助

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

学生表和教师表之间不需要有唯一的值,因为关系表对每个关系都有单独的字段,所以不存在冲突


然而,这不是正确的做事方式。您需要两个关系表,
teacher\u project
student\u project
。或者,根据教师和学生之间不同的独特数据,您可以有一个
个人
表和一个关系,这可能更接近真实世界。

我认为您可以识别教师,从1开始,递增2;学生从2开始,递增2。这样,奇数表示老师,偶数表示学生。不会发生冲突。

谢谢你回答Jim。我写的问题完全错了(因为实际上有4个表,而不是3个)。我犯了错误,把其余的也说错了。我现在编辑了这个问题以反映真实情况。再次感谢Jim。我需要将相同的逻辑转换到另一个项目中,其中两种类型的帐户是不同的(一种是个人,另一种是个人组),因此在这种情况下,我将无法合并它们。你能给我一个关于你的解决方案的建议吗?在“教师”和“学生”之间的数据集有很大的不同吗?现在还没有,但可能会有另一个表与这些完全不同。这不是一个答案,只是一个建议:表:人、学生、教师、项目,关系外键学生链接到人物id教师链接到人物id关系链接到人物id和项目id。