MySQL - errno 150: "Foreign key-Einschränkung wird falsch gebildet"
Ich bin mit MySQL auf meiner Praxis-Aufgabe im tutorial, aber ich habe ein problem bei erstellen einer Tabelle mit dem Fehler "unzulässige Einschränkung".
Bitte haben Sie einen Blick und schlagen Sie mich, wie ich es beheben kann. Danke!
*Ein Kurs-Angebot ist ein Kurs angeboten, in einem bestimmten semester
*Die Studierenden schreiben sich für den Kurs-Angebote keine Kurse
*Dozenten zugeordnet zu Kurs-angeboten, keine Kurse,
CREATE TABLE `students` (
`student_id` char(8) NOT NULL,
`max_load` tinyint(4) NOT NULL,
PRIMARY KEY (`student_id`)
)
CREATE TABLE `courses` (
`course_code` char(8) NOT NULL,
`course_title` varchar(100) NOT NULL,
PRIMARY KEY (`course_code`)
)
CREATE TABLE `lecturers` (
`lecturer_id` char(8) NOT NULL,
`lecturer_name` varchar(50) NOT NULL,
PRIMARY KEY (`lecturer_id`)
)
CREATE TABLE `course_offerings` (
`course_code` char(8) NOT NULL,
`semester` tinyint(4) NOT NULL,
`year` year(4) NOT NULL,
`lecturer_id` char(8) NOT NULL,
PRIMARY KEY (`course_code`,`semester`,`year`),
FOREIGN KEY (`course_code`) REFERENCES `courses` (`course_code`),
FOREIGN KEY (`lecturer_id`) REFERENCES `lecturers` (`lecturer_id`)
)
CREATE TABLE `enrolment` (
`student_id` char(8) NOT NULL,
`course_code` char(8) NOT NULL,
`semester` tinyint(4) NOT NULL,
`year` year(4) NOT NULL,
PRIMARY KEY (`student_id`,`course_code`,`semester`,`year`),
FOREIGN KEY (`student_id`) REFERENCES students(`student_id`),
FOREIGN KEY (`course_code`) REFERENCES course_offerings(`course_code`),
FOREIGN KEY (`semester`) REFERENCES course_offerings(`semester`),
FOREIGN KEY (`year`) REFERENCES course_offerings(`year`)
)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie versuchen, zusammengesetzten Fremdschlüssel auf
enrolment
? Wenn es der Fall ist, die folgende sein können, was Sie wollen.Ich würde vorschlagen, Sie erstellen eine
id
Spalte in course_offerings und machen es den primären Schlüssel, die course_code, semester und Jahr, kombiniert EINDEUTIGEN Schlüssel. Verwenden Sie dieseid
als eine foreign key-Sie müssen also die Spalte 1 statt 3 Spalten.Müssen Sie überprüfen Sie Ihre Art von Spalte zwischen Quell-und Ziel-Tabelle
semester
tinyint not NULL,year
Jahr NICHT NULL ist,vs
semester
tinyint(4) not NULL,year
Jahr(4) not NULL,wie über dieses?
MySQL sagte: Dokumentation