2017-02-16 13 views
0

私は、プライマリキーとしてteacher_idと、一つの属性としてexam_idを持つ一つのexam_detailsテーブルを持つteacher_detailsテーブルを1つ持っています。SQL Serverでプライマリキーとして属性を作成する必要がありますか、サーブレットをチェックインする必要がありますか?

私は1人の教師が同じexam_idに複数回作成することはできませんしたいが、2人の教師が同じexam_idを作成できることを可能することができます。

私は主キーとしてexam_id作るべきか、私はサーブレットでのことをチェックしますか?

データベースとしてsql-serverを使用しています。

create table teacher_details(
teacher_id varchar(20) not null primary key, 
teacher_name varchar(30)); 

create table exam_details(exam_id varchar(20), exam_name varchar(30), teacher_id varchar(20), foreign key (teacher_id) references teachers_details(teacher_id)); 
+0

それを逆の道を行い、teacher_detailsテーブルにexam_id、あなたは同じを扱うように構成されたAPIを持っている必要があります。 –

+0

どのAPIが設定されていますか? – Dinesh

+0

サーブレットレベルでも処理する必要があります。 –

答えて

0

次の2人の教師が同じexam_id

+0

私は同意しません。これは明らかにデータの完全性の問題であり、データベースで処理する必要があります。 –

+0

私は彼が別の教師に同じexam_idを作成させたいと言っているだけで、データベースのプライマリキーにすると不可能になります。 –

+0

私の答えが示すようにプライマリキーを複数の列で構成できます。プライマリキーがコンポジットキーである場合、この要求には全く問題はありません。 @ZoharPeled –

1

を作成することはできないであろうよりも、主キーとしてexam_id作る場合は、exame_idteacher_idの組み合わせ主をしなければならないので、あなたは、サーブレットでこれを確認する必要がありますexam_detailsテーブルのキーを押します。
また、あなたはあなたの制約に名前を付けるに慣れる必要があります。

create table teacher_details 
(
    teacher_id varchar(20) not null, 
    teacher_name varchar(30), 
    constraint pk_teacher_details primary key (teacher_id) 
); 

create table exam_details (
    exam_id varchar(20), 
    exam_name varchar(30), 
    teacher_id varchar(20), 
    constraint fk_teacher_exam foreign key (teacher_id) references teacher_details(teacher_id), 
    constraint pk_exam_details primary key (teacher_id, exam_id) 
); 
関連する問題