0

我的外键有问题。

主表是:

Course (courseName, courseId) 

和 PK 是courseId

第二张表是:

Section (sectionId, courseId) 

PK 是(sectionId, courseID), FK 是courseID reference Course(courseId)

问题表是:

GradeReport (studentId, sectionId, courseId, grade) 

和 PK 是(studentID, sectionID, courseID)

FK 是

  • courseId reference Course(courseID)
  • sectionId reference Section(sectionID)

不允许(courseId,sectionId)参考Section(courseId,sectionID))

第一个FK就OK了!但是第二个给了我一个错误:

ORA-02270: 此列列表没有匹配的唯一键或主键

我怎么解决这个问题?

4

2 回答 2

2

由于Section的主键是(sectionId, courseID),所以GradeReport的外键约束必须是(sectionID, courseID)。

事实上,在 GradeReport 引用 Course 时不需要外键约束,因为 courseID 将在这个外键约束中。

于 2013-04-17T14:50:19.133 回答
0

我不完全理解这个问题,但如果我有这些表,我的外键将是:

  • 部分(我认为你已经可以了)

    FOREIGN KEY ..name.. REFERENCES Course(CourseID)
    
  • GradeReport(这是我认为你有问题的地方)

    FOREIGN KEY ..name.. REFERENCES Section(SectionID, CourseID)
    

您不需要单独的外键,GradeReport.CourseID因为它已经是 的SectionID, CourseID外键的一部分Section,并且Section.CourseID可以信任,因为Section表的外键带有Course

于 2013-04-17T14:54:42.563 回答