我有一個關於實現四個表之間簡單關係的問題。如何在oracle數據庫中實現多對多關係正確?
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設計的人可以分享意見嗎?非常感謝你!
您的創建表語句對我來說看起來不錯 - 關於您添加完整課程的額外要求 - 可能包含在course_employee表中,可能作爲諸如「course_status」之類的列 – Boneist
非常感謝您的快速回復:) – skywalker