我有一个关于在四个表之间实现简单关系的问题。
employee
department
course
course_employee
创建它们但我只是想确保我没有遗漏可能损害数据库设计的东西。以下是关系:
employee to department -> many to one
employee to course -> many to many
course_employee表是课程表和员工表之间的中介。
这是我的SQL:
CREATE TABLE employee (
id NUMBER PRIMARY KEY,
username VARCHAR2(20),
password VARCHAR2(100),
email VARCHAR2(40),
department_id NUMBER
);
CREATE TABLE department(
id NUMBER PRIMARY KEY,
department_name VARCHAR2(40),
location VARCHAR2(30)
);
ALTER TABLE employee
ADD CONSTRAINT department_id
FOREIGN KEY (department_id)
REFERENCES department(id);
CREATE TABLE course(
id NUMBER PRIMARY KEY,
course_code VARCHAR2(20),
course_name VARCHAR2(100),
difficulty VARCHAR(10),
duration NUMBER
);
CREATE TABLE course_employee (
course_id NUMBER,
employee_id NUMBER
);
ALTER TABLE course_employee
ADD CONSTRAINT fk_course FOREIGN KEY(course_id)
REFERENCES course(id);
ALTER TABLE course_employee
ADD CONSTRAINT fk_employee FOREIGN KEY(employee_id)
REFERENCES employee(id);
从sql developer输出的ER图:
我想为员工添加已完成的课程,但我不确定这是否通过某种关系实现。知道DB设计的人可以分享意见吗?非常感谢你!
答案 0 :(得分:4)
您可以在course_employee表中跟踪员工注册的培训状态。此表可以包含特定于员工注册课程的任何数据。
答案 1 :(得分:0)
您的course_employee表是课程表和employee表之间的连接表(许多面)。 course_id和employee_id必须同时是Course_employee表的外键和主键,才能使其成为多对多关系。