【发布时间】:2015-06-23 18:30:29
【问题描述】:
表定义:
Student(StudentID, StudentName) PK StudentID
Faculty(FacultyID, FacultyName) PK FacultyID
Course(CourseID, CourseName) PK CourseID
Qualified(FacultyID, CourseID, DateQualified) PK FacultyID CourseID
Section(SectionNo,Semester, CourseID) PK SectionNo Semester CourseID
Registration(StudentID, SectionNo, Semester) PK StudentID SectionNo Semester
如何链接表注册和部分? 注册中的 StudentID 作为学生表中 StudentID 的外键引用 但是我可以用 SectionNo 和 Semester 做什么?我可以在外键 Section_Semester (SectionNo, Semester) 上添加一个约束,但这两个属性在 Section 表中不是唯一的。在 Section 表中添加主键约束?
谢谢
【问题讨论】:
-
那些不是表定义。 CREATE TABLE 语句是表定义。 (您可以编辑您的问题,并粘贴 CREATE TABLE 语句。)从您的描述中不清楚您是尝试在“注册”中创建引用“部分”的外键,还是尝试创建外键在引用“注册”的“部分”中。是哪个?
-
Section(SectionNo, ...偏离了其他表的约定。SectionNo本身是主键(代理或自然键),或者它只是与(Semester, CourseID)键相关联的信息,或者它是复合键的一部分。根据这 3 个中的哪一个是正确的,必须调整Registration到Section中的外键以与 Section 主键对齐。就目前而言,您需要将CourseID添加到Registration并将其添加到Section 的外键中。 -
除了借调 Stuart 和 Mike 的 cmets 之外,没有描述这些表,我们不知道您要达到什么目的,也不知道您在这两个表中哪个是父级,哪个是子级想要“链接”,或者有什么目的。如果我以标题为问题,答案是“是的,你可以”。每个 SQL 和非 SQL 平台都有不同的语法,因此您必须查找它。
-
@PerformanceDBA:欢迎回来!
-
@Mike。谢谢。我很惊讶有人记得四年前的我!
标签: sql database-design rdbms composite-key