【发布时间】:2017-04-07 12:40:51
【问题描述】:
我正在设计一个大学管理系统。我有 5 个表:Student、Teacher、Courses、Available_Courses 和 Taken_Courses。
Student:
student_id (PK)
Teacher:
teacher_id (PK)
Courses:
courses_id (PK)
Available_Courses:
available_courses_id
teacher_id
course_id
Courses_Taken:
courses_taken_id
student_id
courses_available_id
Available-Courses 和 Courses_Taken 表中的 PK 应该是什么?
如果我没有设置 available_courses_id(在表 Available_Courses 中)主键,那么我将无法连接 Courses_Table,并且如果我在表 Available_Courses 中设置所有三个属性的复合键,那么一位教师可以一次又一次地注册相同的课程.制作两个属性的复合键,即teacher_id 和 course_id 将起作用,但会增加我的数据库中的重复,因为它们也将在 Courses_Taken 表中创建关系。
Courses_Taken Table 也是如此,因为我需要在出勤表中使用它的 PK(尚未制作)。
那么在这种情况下应该怎么做呢?
【问题讨论】:
-
似乎 available_courses 包含教师教授课程的行。人们会期望可用的课程将是该表中某行中出现的课程。对你的问题如何定义你的表并不重要,你只需要告诉我们所持有的约束。 (CK、FD、FK)。
标签: database database-design relational-database relationship