我已經看過這篇文章的其他主題,並試圖使我的腳本適應他們,但無濟於事。所以我在這裏張貼。SQL Noob。 「外鍵約束錯誤地形成」
我有兩張桌子,科目和學生。在這些內部,有兩個主鍵(subject_id和student_id),請參考full view of the two tables的圖像(在phpmyadmin中完成)。我想要創建第三個表,其中包含entry_id(主鍵),subject_id(FK),subject_name(FK),subjectexamboard(FK),student_id(FK)和studentfirstname(FK)。
這裏是我試過的phpMyAdmin的運行代碼:
CREATE TABLE entries3(
entry_id INT NOT NULL AUTO_INCREMENT,
subject_id INT NOT NULL,
subject_name VARCHAR(20) NOT NULL,
subjectExamBoard VARCHAR(10) NOT NULL,
student_id INT UNSIGNED NOT NULL,
studentFirstName VARCHAR(20) NOT NULL,
studentLastName VARCHAR(40) NOT NULL,
PRIMARY KEY (entry_id),
CONSTRAINT FOREIGN KEY (subject_id) REFERENCES subjects(subject_id),
CONSTRAINT FOREIGN KEY (subject_name) REFERENCES subjects(subject_name),
CONSTRAINT FOREIGN KEY (subjectExamBoard) REFERENCES subjects(exam_board),
CONSTRAINT FOREIGN KEY (student_id) REFERENCES students(student_id),
CONSTRAINT FOREIGN KEY (studentFirstName) REFERENCES students(first_name),
CONSTRAINT FOREIGN KEY (studentLastName) REFERENCES students(last_name));
感謝您的幫助,請寬容我,因爲我很新的SQL。
上的名稱的限制是不必要的,因爲是列。 –
我刪除了[tag:sql-server]標籤。 MySQL具有'AUTO_INCREMENT'語法,但Microsoft SQL Server不支持。 –
正如@DanBracuk所說,你通過擁有'studentFirstName','studentLastName','subjectExamBoard'和'subject_name'來創造不必要的冗餘。所有這些列可以通過連接獲得。你可能想重溫你的設計 –