SQL中的关联表,2个主键
我正在上一门关于SQL的入门课程,但我被我们的一个实验室难住了。对于这个实验室,我们得到了一个ERD,我们需要通过SQL实现它。实验室要求我们创建两个用关联表连接在一起的表(SQL显然不喜欢多对多关系) 在这个关联表中,根据ERD,两个属性都需要是主键和外键(Pk,Fk)。这对我来说没有多大意义(不能有多个主键),因此到目前为止,我无法通过在表中创建多个主键来实现ERD。我在互联网上哪里出了问题 守则:SQL中的关联表,2个主键,sql,sql-server-2012,Sql,Sql Server 2012,我正在上一门关于SQL的入门课程,但我被我们的一个实验室难住了。对于这个实验室,我们得到了一个ERD,我们需要通过SQL实现它。实验室要求我们创建两个用关联表连接在一起的表(SQL显然不喜欢多对多关系) 在这个关联表中,根据ERD,两个属性都需要是主键和外键(Pk,Fk)。这对我来说没有多大意义(不能有多个主键),因此到目前为止,我无法通过在表中创建多个主键来实现ERD。我在互联网上哪里出了问题 守则: CREATE Table dbo.TargetMailingList ( Targ
CREATE Table dbo.TargetMailingList
(
TargetID INT NOT Null
Foreign Key References dbo.TargetCustomers(TargetID),
MailingListsID INT Not NULL
Foreign Key References dbo.Mailinglists(MailingListID),
Primary Key (MailingListID,TargetID),
);
没有两个主键。这是一个复合键。这两列都是同一主键的一部分。查看更多信息。没有两个主键。这是一个复合键。这两列都是同一主键的一部分。查看更多信息。您可以创建一个复合键,如@Juru所述,并创建两个外键:
CREATE TABLE dbo.Table_link
(
ndIdTable1 int NOT NULL,
ndIdTable2 int NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
PK_Table_link PRIMARY KEY CLUSTERED
(
ndIdTable1,
ndIdTable2
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
FK_Table_Table_1 FOREIGN KEY
(
ndIdTable1
) REFERENCES dbo.Table_1
(
ndIdTable1
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
FK_Table_Table_2 FOREIGN KEY
(
ndIdTable1
) REFERENCES dbo.Table_2
(
ndIdTable2
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
您可以创建一个复合键,如@Juru所述,并创建两个外键:
CREATE TABLE dbo.Table_link
(
ndIdTable1 int NOT NULL,
ndIdTable2 int NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
PK_Table_link PRIMARY KEY CLUSTERED
(
ndIdTable1,
ndIdTable2
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
FK_Table_Table_1 FOREIGN KEY
(
ndIdTable1
) REFERENCES dbo.Table_1
(
ndIdTable1
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.Table_link ADD CONSTRAINT
FK_Table_Table_2 FOREIGN KEY
(
ndIdTable1
) REFERENCES dbo.Table_2
(
ndIdTable2
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
非常感谢你的帮助非常感谢你的帮助