2017-02-16 25 views
0

У меня есть одна таблица teacher_details, которая имеет teacher_id в качестве первичного ключа и одну таблицу exam_details, которая имеет exam_id как один атрибут.Должен ли я сделать атрибут в качестве первичного ключа в sql-сервере или я должен проверить сервлет?

Я хочу, чтобы один учитель не мог создать один и тот же exam_id более одного раза, но может быть возможно, что 2 учителя могут создать тот же экзамен_ид.

Должен ли я сделать exam_id как первичный ключ, или я проверю это в сервлете?

Я использую sql-сервер для базы данных.

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

ли это обратный путь, exam_id в таблице teacher_details и вы должны иметь API, выполненное с возможностью обрабатывать такие же. –

+0

Какой API настроен? – Dinesh

+0

Я имею в виду, что он также должен обрабатываться на уровне сервлета! –

ответ

0

Вы должны проверить это в сервлет, потому что если вы сделаете exam_id в качестве первичного ключа, чем два учителя не смогли бы создать такой же exam_id

+0

Я не согласен. Это явно проблема целостности данных, и поэтому она должна обрабатываться базой данных. –

+0

Я просто говорю, что он хочет, чтобы разные учителя создали тот же экзамен_ид, если он сделает его основным ключом в базе данных, это будет невозможно. –

+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) 
);