从一列到另一列的外键包含在多列主键中

D4rkTiger

我尝试在一列到两列主键之间创建一个外键,而SQL Server拒绝了。为什么 ?

我有一张桌子,用不同的语言存储我的措辞,还有一张国家表。

    ref.SystemLabels
    --------------
--> [Id] int
|   [IdLanguage] int
|   Label nvarchar(200)
|   Keywords nvarchar(200)
|   
|   ref.Countries
|   --------------
|   [Id]
--> IdSystemLabel
    IsoCode

在我看来,这是很逻辑的,但是我不明白为什么SQL Server无法理解或接受我的逻辑^^。

如果有人可以帮助我。

注意我认为以另一种方式,尽管有外键,我仍将在IdSystemLabel上创建索引。


编辑:当您问我时,请参阅我的表的SQL代码

表格系统语言

CREATE TABLE [ref].[SystemLanguages](
    [Id] [int] NOT NULL,
    [IdSystemLabel] [int] NOT NULL,
    [IsoCode] [nchar](2) NOT NULL,
    [Enabled] [bit] NOT NULL,
 CONSTRAINT [PK_SystemLanguages] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [ref].[SystemLanguages] ADD  CONSTRAINT [DF_SystemLanguages_Enabled]  DEFAULT ((0)) FOR [Enabled]
GO

表格系统标签

CREATE TABLE [ref].[SystemLabels](
    [Id] [int] NOT NULL,
    [IdLanguage] [int] NOT NULL,
    [Label] [nvarchar](max) NOT NULL,
    [Keywords] [nvarchar](200) NULL,
    [CreatedAt] [datetime] NOT NULL,
    [UpdatedAt] [datetime] NULL,
    [Group] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_SystemLabels] PRIMARY KEY CLUSTERED 
(
    [Id] ASC,
    [IdLanguage] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [ref].[SystemLabels] ADD  CONSTRAINT [DF_SystemLabels_CreatedAt]  DEFAULT (getdate()) FOR [CreatedAt]
GO

注意由于循环依赖关系,该表不能具有SystemLanguages的外键

表LocalizationLevel0

CREATE TABLE [ref].[LocalizationLevel0](
    [Id] [int] NOT NULL,
    [IdSystemLabel] [int] NOT NULL,
    [IsoCode] [nchar](2) NOT NULL,
    [CreatedAt] [datetime] NOT NULL,
    [UpdatedAt] [datetime] NULL,
    [Enabled] [bit] NULL,
 CONSTRAINT [PK_LocalizationLevel0] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [ref].[LocalizationLevel0] ADD  CONSTRAINT [DF_LocalizationLevel0_CreatedAt]  DEFAULT (getdate()) FOR [CreatedAt]
GO

ALTER TABLE [ref].[LocalizationLevel0] ADD  CONSTRAINT [DF_LocalizationLevel0_Enabled]  DEFAULT ((0)) FOR [Enabled]
GO

我正在尝试解释我的逻辑:

一个localizationlevel0项可以翻译成多种系统语言:

法国国家的示例

1 4 'FR' '2015-04-17 00:00:00:000' NULL 1

-系统语言

1 1 'FR' 1
2 2 'EN' 1
3 3 'DE' 1

-相应的措辞

1 1 'Français' NULL '2015-04-17 00:00:00:000' NULL 'SystemLanguages'
1 2 'French' NULL '2015-04-17 00:00:00:000' NULL 'SystemLanguages'
1 2 'Französisch' NULL '2015-04-17 00:00:00:000' NULL 'SystemLanguages'

...
4 1 'France' NULL '2015-04-17 00:00:00:000' NULL 'LocalizationLevel0'
4 2 'France' NULL '2015-04-17 00:00:00:000' NULL 'LocalizationLevel0'
4 3 'Frankreich' NULL '2015-04-17 00:00:00:000' NULL 'LocalizationLevel0'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重新排列多列中的html元素(从一列到另一列)

在PySpark Dataframe中从一列到另一列的最近日期

从一个表中提取一列到另一个表中,并将插入的行的ID存储为外键(PostgreSQL)

从一列到另一列添加天数的 VBA 代码

有没有办法用R中的括号从一列到另一列中选择每一列?

从一张表中的一列到另一张表中的多列查找值

组名称从Excel中的一列到另一列

使用MySQL从一列到多列的数据计数?

如何从包含在另一列中的一列中删除单词?

申请检查一列中的元素是否包含在另一列的列表中

查找标题从一列到下一列不同的列

在数据框中获得从一列到另一列的唯一连接

从一列到下一列的百分比变化

从熊猫数据框中的一列移动到多列或多列到一列

多列到一列的宽到长格式

一列到另一列的条件镜像

从数据框中的一列到另一列解析方括号内的文本

MySQL检查行中的列是否包含在另一列中?

从一列到第二列交叉验证一个值

滑过值从一列到其他基于另一个数据框

查找包含在另一列R中的列值

使用键/ ID将json数据从一列追加到另一列

Pandas 关联一列到多列按列的范围分组

在Python中从一列创建多列

将值从一列复制到同一表中的另一列

仅使用键将Sublime Text中的选项卡从一列移到另一列

从多列复制到另一列

将数据从一列复制到另一列

SQL将数据从一列复制到另一列