私はこの問題をしばらく解決していますが、私は職場に割り当てられなければならない異なる職員の役割を持っています。答えを見つける、どんな助けも高く評価されるでしょう。以下のサンプルコードとERD何のイムは4 PKがOracleの1列にFKを入れている
CREATE TABLE office ( --7
office_id Number(4)NOT NULL PRIMARY KEY,
address address,
CREATE TABLE office_staff ( --8
staff_id Number(4)NOT NULL PRIMARY KEY,
office_id Number(4),
manager char(1),
CONSTRAINT manager_boolean CHECK (manager IN ('1','0')));
CREATE TABLE staff_role (
staff_role_id NUMBER(4) PRIMARY KEY,
staff_id tinyint references office_staff(staff_id),
unique(staff_role_id, staff_id),
role_name varchar2(20));
CREATE TABLE manager ( --1
manager_id Number(4)NOT NULL PRIMARY KEY,
staff_role_id as cast(1 as tinyint) persisted,
foreign key (manager_id, staff_id) references staff_role(staff_role_id, staff_id)
manager_firstname varchar2(20),
manager_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11));
CREATE TABLE senior_instructor ( --2
senior_instructor_id Number(4)NOT NULL,
staff_role_id as cast(2 as tinyint) persisted,
foreign key (senior_instructor_id, staff_id) references staff_role(staff_role_id, staff_id)
s_instructor_firstname varchar2(20),
s_instructor_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11));
CREATE TABLE office_admin ( --3
admin_id Number(4)NOT NULL,
staff_role_id as cast(3 as tinyint) persisted,
foreign key (admin_id, staff_id) references staff_role(staff_role_id, staff_id)
admin_firstname varchar2(20),
admin_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11));
CREATE TABLE instructor ( --6
instructor_id Number(4)NOT NULL,
staff_role_id as cast(4 as tinyint) persisted,
foreign key (instructor_id, staff_id) references staff_role(staff_role_id, staff_id)
instructor_firstname varchar2(20),
instructor_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11),
car_id Number(4));
電流出力は、私はいくつかの構文エラーを修正し、列名の一部を変更したデータ型が
上記の内容はわかりませんが、正しいOracle SQLではありません。だからあなたはRDBMSを使っていますか? – arturro
私はOracle 10g –
を使用していますので、これは間違いなくOracleの構文です。 Oracleにはtinyintがありません(MS SqlServerにあります)。これは次のとおりです。staff_role_idはキャスト(1はtinyint)、永続化、oracleの正しい構文ではない、unique(staff_role_id、staff_id)も正しくない - Oracleでは、CONSTRAINT constraint_name UNIQUE(uc_col1、uc_col2、... uc_col_n)。あなたは多くを修正する必要があります。 – arturro