2012-04-12 5 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) 
); 

Спасибо за вашу помощь. Сообщество stackoverflow.com! :)

 Смежные вопросы

  • Нет связанных вопросов^_^