问题标签 [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 回答
2913 浏览

sql-server-2005 - 如何查询与其约束不匹配的外键?

SQL 服务器 2005。

我正在将外键约束添加到据称不需要它们的应用程序的数据库中。自然地,数据变得不可靠,并且外键字段中存在孤立条目。

设置:
两个表,TableUser 和 TableOrder。TableUser 具有主键“UserID”,TableOrder 具有外键“UserID”。

如何找到 TableOrder.UserID 在 TableUser.UserID 中没有匹配条目的行?

例如,TableOrder.UserID 的值为 250,但没有与 250 匹配的 TableUser.UserID 键。

0 投票
8 回答
309946 浏览

mysql - 如何在 MySQL 中创建关系

在课堂上,我们都在“学习”数据库,每个人都在使用 Access。对此感到厌烦,我正在尝试做其他班级正在做的事情,但使用 MySQL 的原始 SQL 命令而不是使用 Access。

我已经设法创建了数据库和表,但是现在我如何在两个表之间建立关系?

如果我有两个这样的表:

如何在两个表之间创建“关系”?我希望为每个帐户“分配”一个 customer_id(以指示谁拥有它)。

0 投票
9 回答
7894 浏览

sql-server - 围绕缺乏跨数据库外键引用的 SQL 设计

无论好坏,我们都有一个依赖于多个数据库的解决方案,这些数据库都引用了一个通用的管理数据库。数据库作为模块的一部分提供,并非所有模块都需要安装(这可能是我们首先拥有多个数据库的原因)。需要管理数据库,但是......所以它会一直存在。

我想为混乱带来一些参照完整性和秩序,但由于 SQL Server 无法执行跨数据库外键而受到阻碍。数据库中没有很多流失,但信息将由(咳咳)非技术用户插入/更新。

我看到的选择是:

a)使用触发器强加伪外键(好的,但有点工作)

b)使用触发器从管理员复制到其他数据库(灾难的明确秘诀)

c) 在代码/DAL 中强加伪外键(与 ORM 不兼容)

d) 不要在 DB 级别担心它,使用良好的 UI 设计来确保没有人做任何愚蠢的事情并限制直接 SQL 访问的访问/屏住呼吸。

坦率地说,我倾向于选择“D”,但我认为我会比我更聪明地寻求意见......

0 投票
6 回答
1838 浏览

sql-server - 外键引用复合表

我有一个表结构,我不确定如何创建最好的方法。

基本上我有两个表,tblSystemItems 和 tblClientItems。我有第三个表,其中有一列引用“项目”。问题是,此列需要引用系统项或客户端项——哪个都没有关系。系统项目的键在 1..2^31 范围内,而客户端项目的键在 -1..-2^31 范围内,因此永远不会有任何冲突。

每当我查询这些项目时,我都是通过在两个表的内容之间执行 UNION ALL 的视图来完成的。

因此,最佳情况下,我希望将外键引用作为视图的结果,因为视图将始终是两个表的联合 - 同时仍保持 ID 唯一。但我不能这样做,因为我无法引用视图。

现在,我可以删除外键,一切都很好。但是,我真的很想有一些参考检查和级联删除/设置 null 功能。除了触发器,还有什么方法可以做到这一点?

0 投票
5 回答
15890 浏览

sql - MySQL:如何以编程方式确定外键关系?

类似于这个问题,但对于 MySQL....

如何以编程方式确定 MySQL 中的外键引用(假设 InnoDB)?我几乎可以得到它们:

...但是,唉,似乎包含其中一些信息的评论栏被截断了,所以我不能依赖它。一定有别的办法...

我会对 C API 调用、SQL 语句以及任何东西感到满意——我只需要能够始终如一地工作的东西。

注意:我也考虑过解析“SHOW CREATE TABLE MyTableName”语句的结果,但我真的希望有更简单的东西。

0 投票
3 回答
35923 浏览

sql-server - 外键是否在 SQL Server 中自动建立索引?

下面的 SQL 语句会自动在 Table1.Table1Column 上创建一个索引,还是必须显式创建一个?

数据库引擎是 SQL Server 2000

0 投票
4 回答
1526 浏览

sql - SQL:一个外键引用几个表之一中的主键

我正在开发一个将用作其他应用程序的可扩展框架的应用程序。

基本类之一称为节点,节点具有内容。SQL 表如下所示:

表节点(NodeId int,....等)

表 NodeContentRelationship(NodeId int、ContentType 字符串、ContentId int)

这将取决于扩展应用程序以创建自己的内容类型的开发人员。

显然,从关系数据库的角度来看,这是不好的,因为无法将外键关系添加到 NodeContentRelationship.ContentId,即使它外键列。

但是,该解决方案非常简单且功能强大,因此我不愿意更改它。

你怎么看 - 我会在赛道上陷入痛苦的世界吗?

0 投票
4 回答
6494 浏览

mysql - 在 phpMyAdmin 中消失的外键

我正在 mysql 中创建一个新表,并尝试向其中一个字段添加外键约束。

但是,在它创建之后,我进入 phpMyAdmin 并导出表。似乎外键约束已经消失了。

phpMyAdmin 是否摆脱了外键或者我在这里做错了什么?

0 投票
3 回答
7844 浏览

linq-to-sql - LINQ to SQL - ForeignKey 中的可空 INT =“无法创建关联......”

我有一个主键是 INT 的表...我有另一个表,它与第一个表有外键关系,但它是一个 NULLABLE INT。

这完全没问题,并且 100% 可以被 SQL 接受……但是 LINQ to SQL 抱怨类型不匹配(“int to Nullable[int]”)。

错误消息:无法创建关联“Store_People”。属性没有匹配的类型:“PersonID”、“ID”。

我该如何解决这个问题,以便设计师停止对 100% 正确使用 SQL 大喊大叫?

0 投票
7 回答
30389 浏览

mysql - MySQL术语“约束”与“外键”的区别?

我在这里查看 MySQL 文档并试图理清 FOREIGN KEYs 和 CONSTRAINTs 之间的区别。我认为 FK一种约束,但文档似乎在谈论它们,就像它们是独立的东西一样。

创建 FK 的语法是(部分)...

所以“CONSTRAINT”子句是可选的。为什么要包含它或不包含它?如果你忽略它,MySQL会创建一个外键而不是一个约束吗?或者它更像是“CONSTRAINT”只不过是你的 FK 的名称,所以如果你不指定它,你会得到一个匿名的 FK?

任何澄清将不胜感激。

谢谢,

伊森