我有一个这样的表结构。
tblquestion
(
nQuestionId1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT_NULL,
nQuestionId2 INT UNSIGNED ALLOW NULL
);
Run Code Online (Sandbox Code Playgroud)
这里.. nQuestionId2 对同一个表上的 nQuestionId1 有一个外键约束,即 tblquestion。
所以..在恢复备份时,我在 nQuestionId2 上收到一些外键警告和错误..那么,是因为外键引用了同一个表列吗?
这种类型的表结构会进一步产生任何问题吗?
谢谢
如果您还原包含在值的行,你会得到错误nQuestionId2引用一个值nQuestionId1还没有被创建。
有几种方法可以解决此问题:
我想,但问题实际上是关于您想要实现的目标。
我见过这样的设计,它有一个ID列,然后是一个引用ID的PARENT列。为了获得根父级,您必须递归遍历您正在查看的对象的所有父级。这意味着即使这样的设计在逻辑上可能有意义,查询它也可能变得非常困难。
数据库设计不仅仅是将业务规则和对象映射到表和约束,还要考虑什么是可维护的,设计将如何承受大量数据,以及对您的方法务实。
我希望这可以帮助你。