如何创建桥梁 table?我是否创建两个主键和两个外键?
How do I create a bridge table? Do I create two primary keys and two foreign keys?
我有一个 table 想做,它是老师 table 和 class table 的桥梁。这是ERD
我最初以为我要通过
创建这个table
CREATE TABLE class_teacher
(
teacher_id number(3),
class_id number(2),
CONSTRAINT class_teacher_pk
PRIMARY KEY(teacher_id, class_id),
CONSTRAINT class_teacher_teacher_fk
FOREIGN KEY(teacher_id) REFERENCES teacher(teacher_id),
CONSTRAINT class_teacher_class_fk
FOREIGN KEY(class_id) REFERENCES class(class_id)
);
但在网络上我看到人们只有两个外键而没有主键,或者 table 没有外键但有两个列的主键。
我做错了吗?
Am I doing it incorrectly?
不对,看起来是正确的。
虽然我会质疑数字数据类型的大小,因为您被限制为只有 1999 名教师和 199 名 类(包括负数);这可能足以立即使用,但几年后 类 重新组织或重写教学大纲并创建新的 类 时,您可能 运行 出主键.
create
语句returns有没有错误?否则你应该很好。
尝试在所有 3 个表和 运行 一些 delete
语句中插入一些数据,看看效果如何。
我有一个 table 想做,它是老师 table 和 class table 的桥梁。这是ERD
我最初以为我要通过
创建这个tableCREATE TABLE class_teacher
(
teacher_id number(3),
class_id number(2),
CONSTRAINT class_teacher_pk
PRIMARY KEY(teacher_id, class_id),
CONSTRAINT class_teacher_teacher_fk
FOREIGN KEY(teacher_id) REFERENCES teacher(teacher_id),
CONSTRAINT class_teacher_class_fk
FOREIGN KEY(class_id) REFERENCES class(class_id)
);
但在网络上我看到人们只有两个外键而没有主键,或者 table 没有外键但有两个列的主键。
我做错了吗?
Am I doing it incorrectly?
不对,看起来是正确的。
虽然我会质疑数字数据类型的大小,因为您被限制为只有 1999 名教师和 199 名 类(包括负数);这可能足以立即使用,但几年后 类 重新组织或重写教学大纲并创建新的 类 时,您可能 运行 出主键.
create
语句returns有没有错误?否则你应该很好。
尝试在所有 3 个表和 运行 一些 delete
语句中插入一些数据,看看效果如何。