2012-04-12 23 views
4

良い一日!Derby:異なるテーブルから複数の外部キーを参照する

私は自分の問題に対する答えをインターネットで検索していましたが、取得できませんでした。 Derbyデータベースの異なるテーブルから外部キーを参照するにはどうすればよいですか?

これが私の現在のSQLコードです:

CREATE TABLE class_t 
(course_id VARCHAR(6) NOT NULL, 
semester VARCHAR(6) NOT NULL CONSTRAINT sem_constraint CHECK (semester IN ('1st','2nd','module')), 
school_year DATE NOT NULL, 
course_name VARCHAR(70) NOT NULL, 
CONSTRAINT class_pk PRIMARY KEY (course_id, semester, school_year) 
); 

CREATE TABLE student_t 
(id_number INT NOT NULL, 
fullname VARCHAR(35) NOT NULL, 
contact_num VARCHAR(35), 
email VARCHAR(25), 
CONSTRAINT student_pk PRIMARY KEY (id_number) 
); 

CREATE TABLE student_list 
(course_id VARCHAR(6) NOT NULL, 
semester VARCHAR(6) NOT NULL CONSTRAINT sem_constraint2 CHECK (semester IN ('1st','2nd','module')), 
school_year DATE NOT NULL, 
id_number INT NOT NULL, 
CONSTRAINT student_list_pk PRIMARY KEY (course_id, semester, school_year, id_number), 
CONSTRAINT student_list_FK FOREIGN KEY (course_id, semester, school_year, id_number) 
REFERENCES class_t (course_id, semester, school_year), student_t (id_number) #this is my problem 
); 

あなたのヘルプは非常に高く評価されます!前もって感謝します。

+0

あなたの外部キー宣言に '(course_id、... id_number)'の代わりに何を書いてもよろしいですか? – sarnold

+0

@sarnoldこのような意味ですか? 'REFERENCES class_t、student_t(course_id、semester、school_year、id_number)'?私はそれを試しましたが、それでもエラーがあります。 –

答えて

4

私はそれを自分で理解しました。例の部分でhttp://db.apache.org/derby/docs/10.2/ref/rrefsqlj13590.htmlを見たときの解決策の手がかりを持っていました。異なるテーブルの各外部キーには異なる制約が存在する必要があります。これは次のようにする必要があります。

CREATE TABLE student_list 
(course_id VARCHAR(6) NOT NULL, 
semester VARCHAR(6) NOT NULL CONSTRAINT sem_constraint2 CHECK (semester IN ('1st','2nd','module')), 
school_year DATE NOT NULL, 
id_number INT NOT NULL, 
CONSTRAINT student_list_pk PRIMARY KEY (course_id, semester, school_year, id_number), 
CONSTRAINT student_list_fk1 FOREIGN KEY (course_id, semester, school_year) 
REFERENCES class_t (course_id, semester, school_year), 
CONSTRAINT student_list_fk2 FOREIGN KEY (id_number) 
REFERENCES student_t (id_number) 
); 

ありがとうございました。 :)

関連する問題