我已经看过这篇文章的其他主题,并试图使我的脚本适应他们,但无济于事。所以我在这里张贴。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'来创造不必要的冗余。所有这些列可以通过连接获得。你可能想重温你的设计 –