问题标签 [foreign-keys]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
266 浏览

sql - 您可以/如何在不破坏 RI 的情况下添加参考圈?

我主要对 pgsql 感兴趣,但我想知道在任何 RDBMS 中是否有一种方法可以在两个相互引用的表上执行插入操作,而无需禁用和重新启用任何 FOREIGN KEY 或 NOT NULL 约束. (你可能会认为这是一只从自己的蛋中诞生的鸡。)

举个实际的例子,如果你有一个选择题测验系统,有“问题”和“答案”表,其中 question.correct_answer 指代 answer.id,而 answer.question 指代 question.id,是否可以添加一个问题和它的答案同时?

(作为记录,我知道您可以在事务块中进行禁用和重新启用,并且另一个解决方案是没有正确答案列,而是将 answer.correct 作为布尔值并进行检查约束确保每个问题都有一个正确答案。但我对这里的替代解决方案并不好奇。)

0 投票
10 回答
123742 浏览

database - Foreign Key naming scheme

I'm just getting started working with foreign keys for the first time and I'm wondering if there's a standard naming scheme to use for them?

Given these tables:

Where Tasks have Notes, Tasks are owned by Users, and Users author Notes.

How would the three foreign keys be named in this situation? Or alternatively, does it even matter at all?

Update: This question is about foreign key names, not field names!

0 投票
14 回答
532089 浏览

mysql - 如何查看表或列的所有外键?

在 MySQL 中,如何获取指向特定表的所有外键约束的列表?特定的列?这与这个 Oracle question相同,但适用于 MySQL。

0 投票
8 回答
8613 浏览

database - 两个外键而不是主键

我想知道,是否有可能创建一个没有主键但有两个外键的表,其中外键对总是不同的?例如,一个STOCK表,其中item_idandwarehouse_id作为外键来自ITEMSandWAREHOUSES表。所以同一个项目可以在不同的仓库。表视图:

或者我是否必须使用自动增量或其他方式创建未使用的主键字段?数据库是oracle。

谢谢!

0 投票
6 回答
2072 浏览

sql - 为什么在列名中指定主/外键属性

最近的几个问题讨论了命名列的策略,我很惊讶地发现在列名中嵌入外键和主键的概念。那是

我不得不承认我从来没有在任何使用这种方案的数据库系统上工作过,我想知道有什么好处。在我看来,一旦您了解了系统的 N 个主表,您将使用这些表编写多个数量级的请求。

为了提高开发效率,您需要了解哪些表是重要的表,哪些是简单的支流。您需要将大量列名提交到内存中。其中一项基本任务是将两个表连接在一起。为了减少学习工作量,最简单的做法是确保两个表中的列名相同:

我认为,作为开发人员,您不需要过多地提醒哪些列是主键,哪些是外来的,哪些什么都不是。如果您很好奇,可以很容易地查看架构。随意看的时候

...知道哪个是外键重要吗?外键仅对数据库引擎本身很重要,以允许它确保引用完整性并在更新和删除期间做正确的事情。

这里要解决什么问题?(我知道这是一个讨论的邀请,并且可以随意这样做。但与此同时,我正在寻找答案,因为我可能真的错过了一些东西)。

0 投票
4 回答
34929 浏览

sql - Postgres 外键“更新时”和“删除时”选项如何工作?

任何人都可以对这些功能的作用以及何时使用它们提供清晰的解释/示例吗?

0 投票
5 回答
21641 浏览

sql - MySQL中的外键?

最近几周我一直在慢慢学习 SQL。我已经学习了所有的关系代数和关系数据库如何工作的基础知识。我现在要做的是了解它是如何实现的。

我遇到的一个绊脚石是 MySQL 中的外键。除了它们存在于 MySQL 的InnoDB存储模式中之外,我似乎找不到太多关于它们的信息。

什么是在 MySQL 中实现的外键的简单示例?

这是我编写的架构的一部分,如果您宁愿指出我的缺陷而不是向我展示一个有效的示例,它似乎不起作用。

0 投票
4 回答
26024 浏览

database - 您是否应该将自引用表列设为外键?

例如,要创建类别层次结构,您可以使用列“parent_id”,它指向同一个表中的另一个类别。

这应该是外键吗?缺点/优点是什么?

0 投票
29 回答
832093 浏览

sql-server - 无法截断表,因为它被 FOREIGN KEY 约束引用?

使用MSSQL2005,如果我先截断子表(具有FK关系的主键的表),是否可以截断具有外键约束的表?

我知道我可以

  • 使用DELETE不带 where 子句的 a,然后RESEED使用标识(或)
  • 删除 FK,截断表,然后重新创建 FK。

我认为只要我在父表之前截断子表,我就可以不执行上述任何一个选项,但是我收到了这个错误:

无法截断表“TableName”,因为它被 FOREIGN KEY 约束引用。

0 投票
5 回答
32487 浏览

nhibernate - 如何使用 NHibernate 持久化枚举

有没有办法使用 NHibernate 将枚举持久化到数据库?那就是有一个包含代码和枚举中每个值的名称的表。

我想保留没有实体的枚举,但仍然有一个从所有其他引用实体到枚举表的外键(枚举的 int 表示)。