是否存在针对从表的主键创建联结表的任何硬性规定?假设我有一个类似于以下结构的表:
在这种情况下,有一个可以一起出售的物品清单,但应该标记为危险物品。任何一件商品都可能有多个其他危险品。使用itemId唯一标识所有项目。可以在多对多关系中将表引用给自己吗?我在SO上看过其他例子,但它们并不是特定于SQL的。
答案 0 :(得分:1)
这是您问题的正确设计,只要您的组合只能是两项组合。
答案 1 :(得分:0)
在数据库设计中,以多对多形式呈现关系的概念设计在物理设计中被转换为2对1。例如,学生可以参加一门或多门课程,一门课程可以有很多学生,所以这是很多很多。因此,在实际设计中,它将是一个Student表,Course表然后是CourseTaken表,它具有Student和Course表的主键,从而创建2个一对多的仲裁。在你的情况下,尽管两个表是同一个,但你有虚拟的第三个表来促进2个一对多的关系,所以对我来说仍然是非常可行的方法。