我有一个以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));
答案 0 :(得分:1)
您应该将exame_id
和teacher_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