当我们只需要引用键的1个元素时,在表SQL Server中使用复合键作为外键

问题描述 投票:0回答:1

我怀疑如何在组合键时将其作为表中的外键引用,但是我只需要键的一部分。

示例(表“语言”和“国家/地区”没有问题,疑问在“标志”表中):



    CREATE TABLE [dbo].[Languages](
        [Id_Language] [int] IDENTITY(1,1) NOT NULL,
        [Language] [varchar](50) NOT NULL
     CONSTRAINT [PK_Languages] PRIMARY KEY CLUSTERED ([Id_Language]))


  • 1-英文
  • 2-西班牙语
  • 3-法语
  • 4-德语

    CREATE TABLE [dbo].[Countries](
        [Id_Country] [int] NOT NULL,
        [Id_Language] [int] NOT NULL,
        [Country] [nvarchar](80) NOT NULL,
     CONSTRAINT [PK_Countries] PRIMARY KEY CLUSTERED ([Id_Country], [Id_Language])
     FOREIGN KEY([Id_Language]) REFERENCES [dbo].[Languages] ([Id_Language]))


  • 1-1-美国
  • 1-2-Estados Unidos
  • 1-3-埃塔兹大学
  • 2-1-西班牙
  • 2-2-西班牙
  • 2-3-斯巴涅

最后这里是个疑问(因为国旗的图片是每个国家的,但并不取决于语言)



    CREATE TABLE [dbo].[Flags](
        [Id_Flag] [int] IDENTITY(1,1) NOT NULL,
        [Id_Country] [int] NOT NULL, ------ HOW CAN I DO IT?????????????
        [Image] [image] NOT NULL
     CONSTRAINT [PK_Flags] PRIMARY KEY CLUSTERED ([Id_Flag]))

结果应该是:


希望您能帮助我。

提前感谢。

sql-server foreign-keys composite-key
1个回答
0
投票

如果我正确理解了这个问题,您希望标志表引用“国家/地区”表吗?如果通过添加外键约束来更改表,则意味着在标记表中插入/更新数据时需要提供有效的国家/地区。

ALTER TABLE dbo.Flags
ADD CONSTRAINT [fk_constraint_name] FOREIGN KEY (Id_Country)
REFERENCES dbo.Countries (ID_Country)
© www.soinside.com 2019 - 2024. All rights reserved.