如何在多对多关系表中插入记录?

时间:2011-12-18 18:05:35

标签: sql oracle many-to-many

例如,我有两张桌子

A

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

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 个答案:

答案 0 :(得分:2)

建议:还要添加参照完整性约束:

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 :(得分:1)

通常情况下,这需要学生和教师表的主键,然后T_Id和S_id的外键给Teacher_Student的教师和学生。

当你这样做时,插入学生和老师,只会检查他们的密钥的唯一性,即你不能有两个id为1的学生。

插入Teacher_Student会检查关系的唯一性,并且插入的ID存在于各自的表中。

PS缩写数据库对象名称是一个非常令人反感的习惯。