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

performance - 向 SQL Server 2008 数据库添加非强制外键是否会影响性能?

我正在使用数据库,我想开始使用 LINQ To SQL。出于性能原因,该数据库现在没有任何 FK。我们一次向数据库插入数百万行,这就是为什么没有任何 FK 的原因。

所以我想我要在数据库中添加非强制 FK 来描述我的 LINQ To SQL 表之间的关系,但我不希望添加非强制外键会影响性能。

有谁知道这可能是什么影响?

更新:我将 LINQ-To-SQL 用于非性能密集型的东西。80% 的数据访问是通过生产中的存储过程进行的。但是对于编写单元测试和其他非性能关键任务,LINQ-To-SQL 使数据访问变得非常容易。

更新:这是添加非强制 FK 的方法

ALTER TABLE [dbo].[ACI] WITH NOCHECK ADD CONSTRAINT [FK_ACI_CustomerInformation] FOREIGN KEY([ACIOI]) REFERENCES [dbo].[CustomerInformation] ([ACI_OI]) NOT FOR REPLICATION GO

ALTER TABLE [dbo].[ACI] NOCHECK 约束 [FK_ACI_CustomerInformation] GO

0 投票
3 回答
2533 浏览

.net - How do I map a one-to-one association with NHibernate using foreign key generator?

So far the association works fine (the User class loads the appropriate UserRoles instance when present), but when creating a new User and setting its Roles property to a new instance of UserRoles, the UserRoles object is not saved.

Here is my abridged User.hbm.xml:

And here is the UserRoles mapping:

Anyone got an idea how to have the UserRoles object saved with the User.ID as its primary key? I've been looking at the documentation, and to be honest, it is not particularly helpful.

0 投票
3 回答
996 浏览

sql - 使用外键更新子查询问题

我记错了这个模板表的键是什么,因此我添加了错误的字段作为外键。现在我需要添加外键,并且我想根据已经填充的其他字段填充它的值。我开始尝试使用更新语句来做到这一点,但我不知道该怎么做。

我的架构的一部分:

产品表:

我添加了 TemplateID,但它还没有数据并且可以为空。

模板表:

我想使用 Templates 表为 Products 表中的每个 TemplateName 找到匹配的 TemplateID,并将其填写到 Products 表中的外键引用中。

我可以使用 Update 中的子查询来执行此操作,还是需要编写某种存储过程?我正在使用 Sql Server 2008

0 投票
7 回答
8426 浏览

sql-server - 如何在 SQL Server 中增加(或保留)IDENTITY 值而不插入表中

有没有办法保留或跳过或增加标识列的值?

我有两个表以一对一的关系连接。第一个有 IDENTITY PK 列,第二个是 int PK(不是 IDENTITY)。我曾经先插入,获取 ID,然后再插入。它工作正常。

现在我需要在第二个表中插入值而不插入第一个表中。

现在,如何增加 IDENTITY 种子,所以我可以将它插入到第二个表中,但在第一个表的 ID 中留下“洞”?

编辑:更多信息

这有效:

再一次 - 这有效。

问题是我可以在不插入表格的情况下获得 ID 吗?

DBCC 需要所有者权利;是否有一个干净的用户可调用 SQL 来做到这一点?

0 投票
1 回答
330 浏览

sql - 每个 foreign_key 的 SQL 最新记录

我有以下两张桌子:

  • 成分(ID,名称)
  • 成分_价格(id,成分_id,价格,created_at)

这样一种成分可以有很多价格。获得每种成分最新输入价格的最佳方式是什么?我知道它可以通过子选择轻松完成,但我想知道是否有更有效的方法来做到这一点。

0 投票
5 回答
30322 浏览

sql - 从 SQL 2008 中的外键关系生成删除语句?

是否可以通过脚本/工具根据表 fk 关系生成删除语句。

即我有表:DelMe(ID) 并且有 30 个表,其中我需要首先删除其 ID 的 fk 引用,是否有一些我可以运行的工具/脚本将根据 FK 关系生成 30 个删除语句为了我 ?

(顺便说一句,我知道关系上的级联删除,我不能在这个现有的数据库中使用它)

我正在使用 Microsoft SQL Server 2008

0 投票
1 回答
1828 浏览

ruby-on-rails - ActiveRecord 的两个外键?[导轨]

我有一个引用 Message 类的 User 类。消息类有一个user_id (即发送者)和一个receiver_id. 所以在用户类中我有

然后在我的 Message 类中

第一个关系——通过user_id——非常顺利。我一点也不知道在第二个关系的 Message 类中放什么。消息表是用user_id和构建的receiver_id,所以支持就在那里。

这甚至可能吗?

另外,我不知道如何获取用户收到的消息......或收到消息的用户:)

[我知道我可以通过有一个发送者表和一个接收者表和一个消息表,也许还有一堆其他表(一个对话表!)来解决这个问题,但我想这样做,为了好玩其中。此应用程序将仅用于学习。]

同样重要的是:文档在哪里?不是很有帮助。

0 投票
6 回答
4058 浏览

sql - 插入引用其他两个表的第三个表时,如何检查两个表之间的约束?

考虑这个示例模式:

基本上,三个表:

  • 具有主键和一些附加列的客户表
  • 一个员工表有一个主键,一个外键约束引用客户表的主键,代表客户的一个员工。
  • 工作项表,其中存储为客户完成的工作,以及有关为其执行工作的特定员工的信息。

我的问题是。在添加新工作项时,我如何在数据库级别测试员工是否实际上与客户相关联。

例如,如果 Scott(员工)在 Microsoft(客户)工作,而 Jeff(员工)在 StackOverflow(客户)工作,我如何防止有人将工作项添加到数据库中,客户 = Microsoft,员工 = Jeff,哪个没有意义?

我可以使用检查约束或外键来完成它,还是需要一个触发器来手动测试它?

应该提到我使用的是 SQL Server 2008。

更新:我应该添加 WorkItem.EmployeeId 可以为空。

谢谢,埃吉尔。

0 投票
1 回答
16604 浏览

sql - SQL Server 2005:可为空的外键约束

我在表会话和用户之间有一个外键约束。具体来说,Sessions.UID = Users.ID。有时,我希望 Sessions.UID 为空。这可以允许吗?每当我尝试这样做时,都会收到 FK 约束违规。

具体来说,我通过 LINQ 在 Sessions 中插入一行。我设置了 Session.User = null; 我得到这个错误:

p>

但是,当我删除使 User 属性为空的行时,我在 SubmitChanges 行上收到此错误:

p>

我的表中没有一个名为“cons”的字段,在我的 5,500 行 DataContext.designer.cs 文件中也没有,也没有在任何相关对象的 QuickWatch 中,所以我不知道“cons”是什么.

在数据库中,Session.UID 是一个可为空的 int 字段,而 User.ID 是一个不可为空的 int。我想记录可能有也可能没有 UID 的会话,我宁愿在不禁用对 FK 关系的约束的情况下这样做。有没有办法做到这一点?

0 投票
10 回答
102091 浏览

sql - 外键会提高查询性能吗?

假设我有 2 个表,Products 和 ProductCategories。两个表在 CategoryId 上都有关系。这就是查询。

当我创建执行计划时,表 ProductCategories 执行集群索引查找,这是预期的。但是对于表产品,它执行集群索引扫描,这让我怀疑。为什么 FK 无助于提高查询性能?

所以我必须在 Products.CategoryId 上创建索引。当我再次创建执行计划时,两个表都执行索引查找。并且估计的子树成本降低了很多。

我的问题是:

  1. 除了 FK 有助于关系约束之外,它还有其他用处吗?它会提高查询性能吗?

  2. 我应该在所有表中的所有 FK 列(喜欢 Products.CategoryId)上创建索引吗?