Tom*_*Tom 2 sql database sql-server-2008
我有一个包含调查列表的表(PK是ID)
CREATE TABLE [dbo].[SurveyMaster](
[ID] [nvarchar](4) NOT NULL,
[Title] [nvarchar](200) NULL,
[IsActive] [bit] NOT NULL,
Run Code Online (Sandbox Code Playgroud)
还有一个包含Variable Mappings列表的表.
CREATE TABLE [dbo].[VariableMappings](
[ParentSurvey_ID] [nvarchar](4) NOT NULL,
[ReportingMonth] [nvarchar](6) NOT NULL,
[VariableName] [nvarchar](400) NOT NULL,
[Value] [int] NOT NULL
Run Code Online (Sandbox Code Playgroud)
我希望在ParentSurvey_ID,ReportingMonth和Variable Name上为VariableMappings创建一个主键,以确保唯一的记录.
但与此同时,我希望VariableMappings.ParentSurvey_ID和SurveyMaster.ID之间存在外键关系,以确保VariableMappings仅包含相关的SurveyID.
我在SQL Server中尝试了几种方法但我不相信我可以创建FK,因为复合键由3列组成.
我怎样才能实现这一目标?
是的你可以:
CREATE TABLE [dbo].[VariableMappings](
[ParentSurvey_ID] [nvarchar](4) NOT NULL,
[ReportingMonth] [nvarchar](6) NOT NULL,
[VariableName] [nvarchar](400) NOT NULL,
[Value] [int] NOT NULL,
PRIMARY KEY (ParentSurvey_ID, ReportingMonth, VariableName),
FOREIGN KEY (ParentSurvey_ID)
REFERENCES dbo.SurveyMaster (ID)
) ;
Run Code Online (Sandbox Code Playgroud)
大多数与你的问题无关,但有一个PRIMARY KEY如此广泛(410 nvarchars)并不是最好的主意.
| 归档时间: |
|
| 查看次数: |
6044 次 |
| 最近记录: |