私はこの記事で他のトピックを見て、私のスクリプトをそれらに適応させようとしましたが役に立たなかった。だから私はここに投稿しています。SQL Noob。 "外部キー制約が正しく形成されていません"
私は2つのテーブル、科目と学生を持っています。これらの中には、2つの主キー(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)を含む第3のテーブルを作成しようとしています。ここで
は、私はphpMyAdminの上で実行しようとしたコードは次のとおりです。私はSQLに非常に新しいんだとして任意の助け
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));
おかげで、私に簡単にアクセスしてください。
よう問い合わせます。 –
[tag:sql-server]タグを削除しました。 MySQLには 'AUTO_INCREMENT'という構文がありますが、Microsoft SQL Serverにはありません。 –
@DanBracukによると、あなたは 'studentFirstName'、' studentLastName'、 'subjectExamBoard'、および' subject_name'を持つことによって不要な冗長性を作成しています。これらの列はすべて、結合によって取得できます。あなたはあなたのデザインを再訪したいかもしれません –