首页 文章

SQL中的关联表,2个主键

提问于
浏览
0

我正在上一门关于SQL的入门课程,我被困在我们的一个实验室里 . 在本实验中,我们得到了一个需要通过SQL实现的ERD . 实验室要求我们创建两个用关联表连接在一起的表(SQL显然不喜欢多对多的关系) .

在此关联表中,根据ERD,两个属性都需要是主键和外键(Pk,Fk) . 这对我来说没有多大意义(你不能有多个主键),因此我已经无法通过在表中创建多个主键来实现ERD . 我在这里错在哪里互联网?

代码:

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), 
);

2 回答

  • 4

    没有两个主键 . 这是一个复合的关键 . 这两列都是同一主键的一部分 . 查看http://en.wikipedia.org/wiki/Compound_key了解更多信息 .

  • 0

    您可以创建复合键,如@Juru所述并创建2个外键:

    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
    

相关问题