数据库设计:循环依赖

Lir*_*una 9 database-design circular-dependency

想象一下以下数据库:

表'公司'有字段ID,名称和flagship_product_id.表'产品'包含字段id,name和company_id.

公司必须拥有旗舰产品(1:1关系),所有产品都有一家公司(1:N关系).

当使用MyISM等存储引擎时,上述情况应该没有任何问题,但是当使用InnoDB之类的引擎时,在插入新数据时会出现问题.

除了允许初始INSERT的NULL关系外,有什么好的解决方案?

总而言之,A公司必须拥有一个旗舰产品.

cle*_*tus 5

你要么必须在flagship_product中允许NULL,要么重新考虑如何模拟这种情况.考虑将flagship_product放在产品上作为布尔字段.然后你没有循环依赖.或者在产品上有一个product_type字段,该字段可能包含FLAGSHIP或NORMAL或OBSOLETE等值.当然你必须强制执行,但在过去我发现它是解决这类问题的一个更清洁的解决方案.

  • 但这意味着一家公司可能会有几个旗舰产品,这是不希望的。 (2认同)

Jas*_*ban 2

我不知道特定的数据库引擎,但寻找一种方法在原子插入和更新操作期间暂时暂停数据一致性检查或引用完整性。