Как вставить запись во многие таблицы отношений? - PullRequest
0 голосов
/ 18 декабря 2011

Например, у меня есть две таблицы

A

create table teachers(
id number(4) primary key,
name varchar(20)
);

B

create table students(
id number(4) primary key,
name varchar(20)
);

и третий стол

AB

create table Teacher_Student(
T_Id number(4),
S_Id number(4)
);

и их отношения

alter table teacher_student
add constraint s_t_pk Primary key(T_Id, S_Id);

Правильно ли созданы эти отношения?и какой будет запрос на вставку, если я хочу добавить нового ученика или учителя.

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Предложение: также добавить ограничения ссылочной целостности:

alter table teacher_student
   add constraint s_t_fk_t foreign key (T_Id)
   references teachers (id)
   on delete cascade
   on update cascade;

alter table teacher_student
   add constraint s_t_fk_s foreign key (S_Id)
   references students (id)
   on delete cascade
   on update cascade;
1 голос
/ 18 декабря 2011

Обычно для этого требуются первичные ключи для таблиц учеников и учителей, а затем внешние ключи для T_Id и S_id для учителей и учеников из Teacher_Student.

Когда вы это сделаете, вставка для ученика и учителя будет проверять только уникальность их ключей, то есть у вас не может быть двух учеников с идентификатором 1.

Вставка в Teacher_Student проверит уникальность отношения и наличие вставленных идентификаторов в соответствующих таблицах.

PS Сокращенные имена объектов базы данных - очень нежелательная привычка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...