私は現在、学生が受講しているコースを追跡するテーブルを持っています。
CREATE TABLE IF NOT EXISTS `test`.`course_enrollment` (
`courseID` INT(10) UNSIGNED NOT NULL,
`studentID` BIGINT(10) UNSIGNED NOT NULL,
`startDate` DATE NULL DEFAULT NULL,
`endDate` DATE NULL DEFAULT NULL,
`semester` VARCHAR(5) NULL DEFAULT NULL,
`section` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
`courseGrade` VARCHAR(3) NULL DEFAULT NULL,
FOREIGN KEY (`courseID`) REFERENCES courses(`courseID`) ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (`studentID`) REFERENCES students(`studentID`) ON DELETE CASCADE
ON UPDATE CASCADE);
ただし、テーブルに2つの主キーを含めることはできません。ただし、学期が異なる限り、同じコースIDを2つ挿入できるようにしたいと思います。
例:(無関係ですが、FAは秋を表し、SPは春を表します)
CourseID: -- Student ID -- Semester
1 30 FA15
1 30 FA16
2 30 FA16
2 30 SP17
2 31 SP17
But not
1 30 FA18
1 30 FA18
コースIDと学期は、同じ正確なコースIDと学期の重複を持つことはできません。
学期を一意のインデックスにすると、同じ学期を複数のコースに割り当てることができなくなります。
助けていただければ幸いです。
2つの組み合わせが一意になるように、一意の複合キーを作成する必要があります。
ALTER TABLE `course_enrollment` ADD UNIQUE `unique_index`(studentID,`courseID`,`semester`);
編集:-各studentID、courseId、および学期は一意である必要があるため、一意の制約にもstudentIdを追加しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加