问题标签 [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 投票
2 回答
2499 浏览

mysql - MySQL -- create two indexes, only one appears in SHOW CREATE TABLE output

In have a many-to-many linking table and I'm trying to set up two foreign keys on it. I run these two statements:

I would expect that when I run SHOW CREATE TABLE address_list_memberships I'd see this:

But instead I get this:

It looks as though only one index is there. Seems to contradict the MySQL docs which say MySQL automatically creates an index on the referencing column whenever you create a foreign key.

I've noticed this only-one-index thing every time I create two FKs on a table whether I use a GUI tool such as CocoaMySQL or SQLyog, or whether I do it on the command line.

Any illumination of this mystery would be very much appreciated.

0 投票
4 回答
8527 浏览

mysql - 在 Rails 中支持外键约束

在 Ruby on Rails 中,如何在迁移中添加外键约束?

0 投票
1 回答
2246 浏览

mysql - MySQL 组合 PK 与可为空的 FK

首先,让我先声明一下我真的是一个非常糟糕的数据建模师。我只知道危险。

我正在构建的表有四个外键,其中两个引用同一个表。这是该表的创建语句。

我在这篇文章中关注的索引是fk_reputation_log_userfk_reputation_log_user1。每个声誉事件都有一个给予者,但只有一些有接收者。我希望这个FK 可以为空,但我不知道该怎么做,或者它是否被“允许”。

我还玩弄了将所有 FK 列作为主键的一部分以对重复日志条目进行数据库级保护的想法——但这不会起作用,因为 PK 列必须为 NOT NULL。

如果您需要更多详细信息,请在评论中说明。谢谢!

(是的,这是针对与 SO 没有太大不同的声誉系统)

0 投票
3 回答
4990 浏览

python - Django MTMField:limit_choices_to = other_ForeignKeyField_on_same_model?

我有几个看起来像这样的 django 模型:

我在尝试制作 Gallery 模型时获得了各种乐趣。limit_choices_to我只希望管理员显示与该画廊属于同一站点的照片的选择。这可能吗?

0 投票
3 回答
2652 浏览

django - 在 Django 中的父保存处访问 ForeignKey 对象

我正在尝试使用内联编辑和 ForeignKey 制作添加到 django 中的模型的所有图像的组合图像。我有这些模型(简化):

然后我使用 AdminInline 将图像添加到 Modell,所以当我保存 Modell 时,我会保存 x 个图像。

但是当我尝试在 on_modell_saved 函数中使用 Modell.images.all 做某事时,我无法掌握这些对象。我得到了在 Modell.save() 执行的这个函数

这只会在我第二次而不是第一次保存 Modell 时打印一些东西。所以有人知道在您使用 AdminInline 添加的所有项目保存后如何调用函数吗?

0 投票
2 回答
6420 浏览

oracle - 未索引的外键导致 TM Enqueue Contention

因此,我们被告知,TM Enq争用的一种来源可能是未编入索引的 FK。我的问题是哪一个。

我有一个INSERT INTO Table_B正在录音的TM Enq Wait

它包含作为PK其他表的父级的 a ,并且它具有FK限制为其他PKs 的列。

那么哪些FK需要索引:该表的列还是它的子表?

注意:我知道这不是 TM 争用的唯一原因。如果是这样的话,你能解释一下为什么不可能是这样吗?

0 投票
10 回答
1049 浏览

sql - 使用外键向数据库添加新项目时,是否应该使用 SQL 触发器在其他表中创建相关行?

我正在使用 SQL 2005 实现具有车辆表、车辆发动机和车辆齿轮表的数据库设计。

每个表都有一个 ID,它是一个 SQL 标识号,每个引擎和齿轮都与车辆 ID 有关系。因此,在我创建车辆之前,我必须创建引擎和齿轮。

创建引擎和齿轮时如何知道车辆识别号?由于发动机和齿轮表的外键约束,尚未创建车辆行?

我是否应该实施一个自动触发器,在创建车辆时为连接到车辆的发动机和齿轮创建一个空行?但是我又怎么知道车辆ID呢?

0 投票
6 回答
12600 浏览

sql - 如何设计数据库模式以支持使用类别进行标记?

我正在尝试类似Database Design for Tagging之类的东西,除了我的每个标签都被分组到类别中。

例如,假设我有一个关于车辆的数据库。假设我们实际上对车辆知之甚少,因此我们无法指定所有车辆将具有的列。因此,我们将用信息“标记”车辆。

现在您可以看到所有汽车都标有其制造商和型号,但其他类别并不完全匹配。请注意,一辆车只能有一个类别。IE。一辆车只能有一个制造商。

我想设计一个数据库来支持搜索所有梅赛德斯,或者能够列出所有制造商。

我目前的设计是这样的:

我有所有正确的主键和外键,除了我无法处理每辆车只能有一个制造商的情况。或者我可以吗?

我可以在vehicleTags 中的复合主键中添加外键约束吗?IE。我可以添加一个约束,使得复合主键 (vid, tid) 只能添加到 vehicleTags 中,前提是在 vehicleTags 中还没有一行,这样对于同一个 vid,在 with 中还没有 tid同一个cid?

我的猜测是否定的。我认为解决这个问题的方法是在vehicleTags中添加一个cid列,并制作新的复合主键(vid,cid)。它看起来像:

这将防止汽车有两个制造商,但现在我已经复制了 tid 在 cid 中的信息。

我的架构应该是什么?

汤姆在我之前的问题中注意到我的数据库模式中的这个问题,你如何做多对多表外连接?

编辑
我知道在示例中制造确实应该是车辆表中的一列,但假设你不能这样做。这个例子只是一个例子。

0 投票
10 回答
41860 浏览

mysql - 外键在 MySQL 中不起作用:为什么我可以插入一个不在外列中的值?

我在 MySQL 中创建了一个表:

这创建了我想要的表(尽管“DESCRIBE actions;”命令显示外键是 MUL 类型的键,我不确定这意味着什么)。但是,当我尝试输入 questions 或 users 表中不存在的 Q_id 或 U_id 时,MySQL 仍然允许这些值。

我做错了什么?如何防止具有外键的表接受无效数据?

更新 1

如果我添加TYPE=InnoDB到最后,我会收到一个错误:

错误 1005 (HY000): 无法创建表 './quotes/actions.frm' (errno: 150)

为什么会发生这种情况?

更新 2

有人告诉我,用功能外键强制数据完整性很重要,而且 InnoDB 不应该与 MySQL 一起使用。你有什么建议吗?

0 投票
4 回答
178 浏览

postgresql - SELECT 可空引用

我在两个表、作者和样式之间有关系。每个作者都与一种风格相关联,在特殊情况下作者没有风格(IS NULL)。

将引用设置为 NULL 没有问题,但是执行查询以选择作者和样式时出现问题。

例如,查询:

只是忽略具有 NULL 样式的作者(如预期的那样)。

我需要做一个选择,它还列出了具有 NULL 样式的作者,就像左连接一样(由于某些原因,我不能使用 LEFT JOIN)。

有一个不包括显式连接的解决方案吗?