Oracle SQL のジャンクション テーブルに関する簡単な質問です。「多対多」の関係での機能と役割は理解していますが、「1 対多」の関係はどうでしょうか? 私は2つのテーブルを持っていEmployees
ますPositions
. 各従業員は 1 つの役職しか保持できませんが、各役職には複数の従業員を配置できます。たとえば、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
テーブル内の外部キー?
b. ジャンクションテーブル?
従業員テーブルで 1 人の従業員と 1 つのロールの関係を強制し、ジャンクション テーブルで 1 つのロールと複数の従業員の関係を維持したいと考えています。
これが理にかなっていることを願っています