【发布时间】:2012-05-13 02:47:57
【问题描述】:
关于 Oracle SQL 中的联结表的快速问题。我了解它们在“多对多”关系中的功能和作用,但是“一对多”关系呢?我有两张桌子,Employees 和 Positions。每个员工只能担任一个职位,但每个职位可以有多个员工。例如John Doe 只能担任销售主管,但公司有 4 名销售主管。到目前为止,这就是我的编码方式:
CREATE TABLE Positions (
position_id NUMBER(2) NOT NULL,
position_name VARCHAR2(25) NOT NULL,
CONSTRAINT pk_position PRIMARY KEY(position_id)
);
CREATE TABLE Employee (
emp_id NUMBER(3) NOT NULL,
emp_name VARCHAR2(30) NOT NULL,
emp_position NUMBER(2) NOT NULL,
emp_salary NUMBER(5) NOT NULL,
CONSTRAINT pk_employee PRIMARY KEY(emp_id),
CONSTRAINT fk_emp_pos FOREIGN KEY (emp_position)
REFERENCES Position(position_id)
);
CREATE TABLE pos_emp (
position_id NUMBER(2) NOT NULL,
emp_id NUMBER(3) NOT NULL,
CONSTRAINT pk_pos_emp PRIMARY KEY(position_id, emp_id)
);
这是正确的吗?是否需要:
一种。 Employee 表中的外键?
湾。接线表?
我想在员工表中强制执行一个员工对一个角色的关系,同时能够在联结表中拥有一个角色对多个员工的关系。
希望这是有道理的
【问题讨论】:
标签: sql oracle foreign-key-relationship junction-table