许多表之一的外键?

2023-06-01数据库问题
0

本文介绍了许多表之一的外键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

设置外键约束的常用方法是选择外键将指向哪个表.

The usual way of setting a foreign key constraint is to choose which table the foreign key will point to.

我在 1 个表和一组表之间存在多态关系.

I'm having a polymorphic relation between 1 table and a set of table.

这意味着该表将与集合中的其中一个表有关系.

That means that this table will have a relation with one of those tables in the set.

例如

images: person_id, person_type
subordinates: id, col1, col2...col9
products: id, colA, colB...colZ

在上面的例子中,如果person_type是subordinates",那么person_id应该是subordinates.id的外键,产品也是如此.

In the above example, if person_type is "subordinates" then person_id should be a foreign key to subordinates.id and the same goes with products.

所以我想知道,是否可以有一个外键指向多个表中的一个,或者您是否必须在分配一个表时专门设置它指向哪个表.

So I wonder, is it possible to have a foreign key to one of many tables, or do you have to specifically set which table it points to when you assign one.

这个问题是针对 MySQL 和 PostgreSQL 的.

This question is for both MySQL and PostgreSQL.

谢谢

推荐答案

不,外键约束总是只引用一个父表.

No, a foreign key constraint always references exactly one parent table.

这个问题经常出现.以下是我过去的一些回答:

This question comes up frequently. Here are some of my past answers to it:

  • 为什么多态关联中不能有外键吗?
  • 可以为两个可能的表之一设置 MySQL 外键吗?
  • 在同一列中引用外键
  • 在 StackOverflow 克隆中,Comments 表应该与 Questions and Answers 有什么关系?
  • MySQL - 条件外键约束
  • 如何处理ERD(表格)设计中的OR"关系?
  • MySQL:两个 n:1 关系,但不能同时使用
  • Why can you not have a foreign key in a polymorphic association?
  • Possible to do a MySQL foreign key to one of two possible tables?
  • Referencing foreign keys in the same column
  • In a StackOverflow clone, what relationship should a Comments table have to Questions and Answers?
  • MySQL - Conditional Foreign Key Constraints
  • How to handle an "OR" relationship in an ERD (table) design?
  • MySQL: Two n:1 relations, but not both at once

有关多态关联的更多信息,请参阅我的演示文稿 Practical Object-SQL 中的面向模型 或我的书 SQL 反模式:避免数据库编程的陷阱.

For more on Polymorphic Associations, see my presentation Practical Object-Oriented Models in SQL or my book, SQL Antipatterns: Avoiding the Pitfalls of Database Programming.

这篇关于许多表之一的外键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同
Why Mysql#39;s Group By and Oracle#39;s Group by behaviours are different(为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同)...
2024-04-16 数据库问题
13

MySQL GROUP BY DateTime +/- 3 秒
MySQL GROUP BY DateTime +/- 3 seconds(MySQL GROUP BY DateTime +/- 3 秒)...
2024-04-16 数据库问题
14