Mysql 多个表的外键insert语句冲突

Mysql 多个表的外键insert语句冲突,mysql,sql,sql-server,database,foreign-keys,Mysql,Sql,Sql Server,Database,Foreign Keys,我对此有一个问题: 数据库图 object_id是引用5个表的“id”列的外键。 因此,我无法将例如第5条记录插入“connected_nodes”表,因为在“klapan_treh”表中不存在第5条记录,但在“ns”表中存在第5条记录 我的解决方案是为每个表创建单独的列,如:ns_id引用ns(id)、klapan_treh_id引用klapan_treh(id)等 但是你能给我建议另一种改进的方法吗?我认为你提出的解决方案是最好的。您需要的是在连接的节点表中有5个独立的外键。这些表中的每一

我对此有一个问题:

数据库图

object_id是引用5个表的“id”列的外键。 因此,我无法将例如第5条记录插入“connected_nodes”表,因为在“klapan_treh”表中不存在第5条记录,但在“ns”表中存在第5条记录

我的解决方案是为每个表创建单独的列,如:ns_id引用ns(id)、klapan_treh_id引用klapan_treh(id)等


但是你能给我建议另一种改进的方法吗?

我认为你提出的解决方案是最好的。您需要的是在连接的节点表中有5个独立的外键。这些表中的每一个都指向另一个表中的id。我想这就是你的建议


每个外键都可以是可选的(可以为空),因此,如果您有4个连接的节点,则需要填写4个外键,第5个外键为空。

不让您参考其他问题的请求不是stackoverflow是如何工作的。在关系数据库中,您要查找的键类型(检查6个不相关的表中是否存在id)没有意义。但你可能想用它来表达一些逻辑。为了告诉您如何在数据库模型中正确地实现它,您需要告诉我们您在这里尝试做什么。添加多个列的解决方法可能表示您希望将6个表链接在一起(例如,
的id 6是
的,id 9是
nodef
),这可能不是您的意思。
mysql
sql server
?挑对了!B001,顺便说一下,我亲爱的朋友,mysql和MS SQL Server使用相同的Transact-SQL语言,所以我认为我的链接是正确的。Solarflare,它很复杂。下面罗恩·巴拉德的回答是合适的,他立即理解了我的问题,没有任何额外的解释。谢谢你的回复:)1。不,MySQL和Transact-SQL是SQL的两种不同变体。SQL server只使用后者。2.朗巴拉德不明白。他猜到了。你不清楚。3.请在这里,这意味着在文本中给出相关的DDL,并给出带有相关位的ERD作为额外的方便。例如,“object_id”在哪里?这通常是一种反模式,应使用子类型。建议的解决方案将使外键工作,但具有5路连接是一种非常不寻常的结构。如果是我的数据库,我会非常仔细地考虑,但是由于我不知道从我们这里得到的信息来模拟什么,所以我觉得不能建议应该怎么做。