【发布时间】:2018-01-12 07:54:53
【问题描述】:
我对此有疑问:
数据库图
object_id 是一个外键引用 5 个表的“id”列。 所以我不能将第 5 条记录插入到“connected_nodes”表中,因为在“klapan_treh”表中不存在第 5 条记录,但在“ns”表中存在第 5 条记录。
我的解决方案是为每个表创建单独的列,例如:ns_id 引用 ns(id)、klapan_treh_id 引用 klapan_treh(id) 等。
但是你能告诉我另一种改进的方法吗?
【问题讨论】:
-
不向您推荐其他相同问题的问题并不是 stackoverflow 的工作方式。您要查找的键类型(检查 id 是否存在于 6 个不相关的表之一中)在关系数据库中没有意义。但你可能想用它表达一些逻辑。要告诉您如何在数据库模型中正确实现它,您需要在这里告诉我们您要表达的内容。您添加几列的解决方法表示您希望将 6 个表链接在一起(例如,
is_t的 id 6 和nodef的 id 9),这可能也不是您的意思。 -
mysql或sql-server?选对的! -
B001,顺便说一句,我亲爱的朋友,mysql和MS SQL Server使用相同的Transact-SQL语言,所以我认为我的链接是正确的。
-
Solarflare,它很复杂。下面罗恩巴拉德的回答是合适的,他立即理解了我的问题,没有一些额外的解释。感谢您的回复:)
-
1.不,MySQL 和 Transact-SQL 是 SQL 的 2 个不同变体。 SQL 服务器只使用后者。 2. RonBallard 不明白。他猜到了。你不清楚。 3. 请use text, not images/links, for text (including tables)。这意味着在文本中给出相关的 DDL,并给出一个带有相关位的 ERD 作为额外的便利。例如“object_id”在哪里?
标签: mysql sql sql-server database foreign-keys