CREATE OR REPLACE TYPE Employee_T30 AS OBJECT
(id VARCHAR2(10),
name VARCHAR2(20),
address VARCHAR2(35),
emp_type VARCHAR2(8)) NOT FINAL
/
CREATE TABLE Employee10 OF Employee_T30
(id NOT NULL,
emp_type CHECK (emp_type in ('Manager', 'Worke','NULL')),
PRIMARY KEY (id));
CREATE OR REPLACE TYPE Manager_T1 UNDER Employee_T30
(annual_salary NUMBER)
/
CREATE OR REPLACE TYPE Worker_T1 UNDER Employee_T30
(weekly_wage NUMBER)
/
CREATE TABLE Employee
(id VARCHAR2(10) NOT NULL,
name VARCHAR2(20),
address VARCHAR2(35),
emp_type VARCHAR2(8) NOT NULL
CHECK(emp_type IN ('Manager', 'Worker' ,'Casual')),
PRIMARY KEY (id));
--CREATE TABLE Manager2 same as in mutual exclusive inheritance
--CREATE TABLE Worker same as in mutual exclusive inheritance
CREATE TABLE Casual
(id VARCHAR2(10) NOT NULL,
hourly_rate NUMBER,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Employee (id) ON DELETE CASCADE);
CREATE TABLE Manager2
(id VARCHAR2(10) NOT NULL,
annual_salary NUMBER,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Employee (id)
ON DELETE CASCADE);
CREATE TABLE Worker
(id VARCHAR2(10) NOT NULL,
weekly_wage NUMBER,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Employee (id)
ON DELETE CASCADE);
CREATE OR REPLACE TYPE Employee_T31 AS OBJECT
(id VARCHAR2(10),
name VARCHAR2(20),
address VARCHAR2(35),
emp_type VARCHAR2(8)) NOT FINAL
/
CREATE TABLE Employee311 OF Employee_T31
(id NOT NULL,
emp_type NOT NULL
CHECK (emp_type in ('Manager', 'Worker', 'Casual')),
PRIMARY KEY (id));
CREATE TYPE Manager_T same as in mutual exclusive inheritance
CREATE TYPE Worker_T same as in mutual exclusive inheritance
CREATE OR REPLACE TYPE Casual_T UNDER Employee_T
(hourly_rate NUMBER)
/
CREATE TABLE Person52
(id VARCHAR2(10) NOT NULL,
name VARCHAR2(20),
address VARCHAR2(35),
PRIMARY KEY (id));
CREATE TABLE Student
(id VARCHAR2(10) NOT NULL,
course VARCHAR2(10),
year VARCHAR2(4),
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Person52 (id) ON DELETE CASCADE);
CREATE TABLE Staff20
(id VARCHAR2(10) NOT NULL,
department VARCHAR2(10),
room_no VARCHAR2(4),
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Person52 (id) ON DELETE CASCADE);
CREATE TABLE Tutor
(id VARCHAR2(10) NOT NULL,
no_hours NUMBER,
rate NUMBER,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Person52 (id) ON DELETE CASCADE);