代码之家  ›  专栏  ›  技术社区  ›  Colin O'Dell

添加两个FK相互指向的实体

  •  0
  • Colin O'Dell  · 技术社区  · 15 年前

    第二个表Revisions存储该内容的不同修订。它有PK RevisionId字段(上面的FK,用于表示当前修订)、HTML内容本身和SectionId(FK),指定修订所属的节。

    INSERT语句与外键约束“FK_Sections_Revisions”冲突。数据库“xxxx”、表“xxxx.Sections”和列“SectionID”中发生冲突。声明已终止。

    我应该先插入节,然后插入修订(连同节的主键),然后用修订主键更新节吗?还是有更好/更优雅的解决方案?

    编辑: 我附上了这两张桌子的截图和它们的关系。每个部分都有许多修订(修订表中的FK SectionID)。此外,还有一个一对一的关系,其中节中的CurrentRevisionId字段指向“当前”的修订。这个“当前”版本是应用程序从中提取HTML的地方。希望这能让事情明朗一点。

    alt text

    2 回复  |  直到 15 年前
        1
  •  2
  •   Mitch Wheat    15 年前

    不能让两张桌子上的FK互相指向对方;这是没有意义的。

    如果您试图对多对多关系建模,则需要在两个表之间创建映射表。它将包含(至少)两个外键,每个外键对应两个表的主键。

        2
  •  1
  •   theReverseFlick    15 年前

    如果修订内容存储在修订表中,则不需要在“节”表中包含“修订ID”字段。

    当为同一节创建不同的修订时,可以将新行添加到修订表中,其中FK(SectionID)引用节表。

    部分: 截面ID(PK) |截面数据。。

    修订: 修订ID(PK)| 截面ID(FK) |修订数据。。。