我应该在sql server中创建一个属性作为主键,还是应该检查servlet?

时间:2017-02-16 12:15:46

标签: sql-server jsp servlets

我有一个以teacher_id作为主键的teacher_details表和一个将exam_id作为一个属性的exam_details表。

我希望一位教师不能多次创建相同的exam_id,但有两位教师可以创建相同的exam_id。

我应该将exam_id作为主键还是我会在servlet中检查它?

我正在使用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));

2 个答案:

答案 0 :(得分:1)

您应该将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)
);

答案 1 :(得分:0)

您应该在servlet中进行检查,因为如果您将exam_id作为主键,那么两位教师将无法创建相同的exam_id