有什么不同?如果我有这两个表:

CREATE TABLE Account (Id int NOT NULL)

CREATE TABLE Customer (AccountId int NOT NULL)


我想要一个将两者链接的外键,应该执行以下哪项操作?为什么?

选项1:

ALTER TABLE [dbo].[Customer]  WITH CHECK
  ADD  CONSTRAINT [FK_Accounts_Customers] FOREIGN KEY([AccountId])
  REFERENCES [dbo].[Account] ([Id])


选项2:

ALTER TABLE [dbo].[Account]  WITH CHECK
  ADD  CONSTRAINT [FK_Accounts_Customers] FOREIGN KEY([Id])
  REFERENCES [dbo].[Customer] ([Id])

最佳答案

取决于上下文。每个客户都有客户吗?父母是哪一个?帐户似乎有多个客户,在这种情况下,引用属于“客户”表。

也就是说,请在任何地方调用实体CustomerIDAccountID。在主表上看起来似乎是多余的,但名称在整个模型中应保持一致。

关于sql - 应该在父表还是子表上创建外键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15008696/

10-15 02:30