学生が大学の教職員からアドバイスを受けたときに処理および記録するアプリケーションを作成しており、テーブルを効果的に構成する方法が必要です。私の問題は、(STUDENT_ID,DATE_ADVISED) である ADVISE_HIST の複合キーの一部のみで STUDENT を参照する外部キーを作成できないことが原因で、参照整合性の欠如から生じています。
ここにいくつかのテーブルがあります
create table STUDENT(
LNAME varchar(50),
FNAME varchar(50),
ID char(9) primary key,
ASSIGNED_ADVISOR_EMAIL varchar(70),
foreign key (ASSIGNED_ADVISOR_EMAIL) references DEP_FACULTY(EMAIL) ON DELETE SET NULL,
IS_ADVISED tinyint(1),
);
create table DEP_FACULTY(
LNAME varchar(50),
FNAME varchar(50),
EMAIL varchar(70) primary key
);
create table ADVISE_HIST(
STUDENT_ID char(9),
/*foreign key (STUDENT_ID) references STUDENT(ID),*/
ACTUAL_ADVISOR_EMAIL char(70) NOT NULL,
foreign key (ACTUAL_ADVISOR_EMAIL) references DEP_FACULTY(EMAIL),
DATE_ADVISED date,
primary key REF_ADVISE_HIST (STUDENT_ID, DATE_ADVISED),
);
私の質問は、このキーを作成できないことを回避する方法はありますか、それとも私が考えていないより良い構造がありますか?