0% found this document useful (0 votes)
47 views18 pages

Edaba Lab Task 1: Design and Implement Database

The document describes the design of a database for a sports academy institution. It includes: 1) An overview of the database entities including coaches, assistant coaches, courses, clients, and participants. 2) An Entity Relationship Diagram (ERD) showing the relationships between entities. 3) The relational schema and Data Definition Language (DDL) script to create the tables based on the ERD.

Uploaded by

Keshav Dandeva
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views18 pages

Edaba Lab Task 1: Design and Implement Database

The document describes the design of a database for a sports academy institution. It includes: 1) An overview of the database entities including coaches, assistant coaches, courses, clients, and participants. 2) An Entity Relationship Diagram (ERD) showing the relationships between entities. 3) The relational schema and Data Definition Language (DDL) script to create the tables based on the ERD.

Uploaded by

Keshav Dandeva
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

EDABA LAB TASK 1

Design and Implement Database

DECEMBER 2, 2021
KESHAV DANDEVA

302333
1. Textual description of a database

We will design a database for The Sports Academy institution.

It offers different types of sports training courses for clients. The clients can be any school, university
or corporate. The courses can be conducted in the client’s premises or in the academy, as per the
preference of the client.

The academy employs coaches and a coach might conduct multiple sports courses. Every coach has
an assistant. The academy has clients and a client might avail multiple sports courses via the
academy. The client then offers the courses to its employees/students, who have the option to
participate.

Each course is offered by one client and each course has one coach at any given time.

Participants in the courses are employees/students of the client. Each participant can be employed
by one client at a time. Participants may be enrolled in more than one course.

2. ERD (Entity Relationship Diagram)

For this database, we can have following entities:

1. Coach

In this entity, we store the information about coach. Coach_Id is the primary key and is unique for
every coach. There are attributes to store the personal details of the coach like first name, last name,
date of birth and phone number. The coach can teach multiple courses and thus there is attribute for
Course_1 and Course_2. The Course_1 value cannot be null as the coach must teach at least one
course.
2. Assistant Coach

In this entity, we store details about the assistant coach. Assistant_ID is the primary key and is
unique for every assistant coach. There are attributes to store the personal details of the assistant
coach like first name, last name, date of birth and phone number. Each assistant coach is assigned to
one coach. It can only have one coach and thus the attribute Coach_Id which cannot be null. The
assistant coach can teach multiple courses as well and thus there is attribute for Course_1 and
Course_2. The Course_1 value cannot be null as the assistant coach must teach at least one course.

3. Course

In this entity, we store details about the course. Course_Id is the primary key and is unique for every
course. There are attributes to store details of the course like course_name, sport (for the sport
conducted in the course), stage (for the level of the course e.g., beginner), course_duration_weeks
(for the total duration of the course in weeks), start_date (for the starting date of the course),
in_academy (to know if the course is conducted in academy or clients premises; value stored in this is
Y/N), coach (for the coach who will be conducting this course) and client (for the client who has
availed this course).

4. Client

In this entity, we store the details about the client. The client_id is the primary key and is unique for
every client. The other details of the client is stored in attributes like client_name, address and
industry (for the type of client e.g., school).

5. Participant

In this entity, we store the details about the participant of a course. All the employees/student of the
client that take part in the course are considered as participant for the course by the academy. The
participant_id is the primary key of the participant and is unique for every participant. The other
details of the participant is stored in attributes like first_name, last_name, phone_no and client (for
knowing what client does the participant belong to).
ERD and their Relationships

As we can see from the above ERD,

• Coach is related to Course with 1 to many relationship as 1 coach can coach multiple courses
but a course can only have 1 coach.
• Coach is related to Assistant Coach with 1 to 1 relationship as 1 coach can only have 1
assistant coach and vice versa.
• Course is related to Assistant Coach with many to 1 relationship as one assistant coach can
assist in coaching many courses but course can have only 1 assistant coach.
• Course is related to Client with many to 1 relationship as client can avail multiple courses but
a course can only have 1 client.
• Course is related to Participant with many to many relationship as course can have multiple
participants and a participant can have multiple courses.
• Client is related to Participant with 1 to many relationship as many participants can be
working for the client but a participant will only have 1 client who he/she works for.
3. Relational Schema

For mapping the ER to relational schema, we use the following concepts:

• Each entity is transformed into a table


• Each attribute of entity is a column in a table
• Each Relationship in ERD of a type Many to Many is replaced by proxy Entity and 2
relationships One to Many
• Each Relationship in ERD is finally replaced by Foreign Key (FK) and Primary Key (PK) in tables

So, for my database, first I identified all Many-to-Many Relationships and replaced them with proxy
entity and two one-to-many relationships. This is done for the relationship between Participant and
Courses. As can be seen from the relational schema above, the new proxy entity takes is present
between them with many to one relation to Participant and Course.

Then, each ERD’s relationship is represented as Foreign Key (FK) – special column with dedicated
property marked in a table with FK mark - pointing Primary Key (PK) in relational schema (table’s
scope).

1) In the case of One-To-Many relationship, that is between Participant and Course, we add FK to the
table that comes from entity where is pinned the relationship’s cardinality Many

2) In a case of One-To-One relationship, that is between Assistant Coach and Coach we can add FK to
any of tables representing entities joined by the given relationship.
DDL Script

-- Generated by Oracle SQL Developer Data Modeler 21.2.0.165.1515


-- at: 2021-12-01 21:54:58 CET
-- site: Oracle Database 21c
-- type: Oracle Database 21c

-- predefined type, no DDL - MDSYS.SDO_GEOMETRY

-- predefined type, no DDL - XMLTYPE

CREATE TABLE kdandeva.assistant_coach (


assistant_id NUMBER(*, 0) NOT NULL,
first_name VARCHAR2(40 BYTE) NOT NULL,
last_name VARCHAR2(40 BYTE) NOT NULL,
course_1 VARCHAR2(5 BYTE) NOT NULL,
course_2 VARCHAR2(5 BYTE) NOT NULL,
dob DATE,
phone_no VARCHAR2(20 BYTE) NOT NULL,
coach_coach_id NUMBER(*, 0) NOT NULL
);

CREATE UNIQUE INDEX kdandeva.assistant_coach_pk ON


kdandeva.assistant_coach (
assistant_id
ASC );

CREATE UNIQUE INDEX kdandeva.assistant_coach__idx ON


kdandeva.assistant_coach (
coach_coach_id
ASC );

ALTER TABLE kdandeva.assistant_coach ADD CONSTRAINT assistant_coach_pk PRIMARY


KEY ( assistant_id );

CREATE TABLE KDANDEVA.ASSISTANT_COACH_JN


(JN_OPERATION CHAR(3) NOT NULL
,JN_ORACLE_USER VARCHAR2(30) NOT NULL
,JN_DATETIME DATE NOT NULL
,JN_NOTES VARCHAR2(240)
,JN_APPLN VARCHAR2(35)
,JN_SESSION NUMBER(38)
,ASSISTANT_ID NUMBER (*,0) NOT NULL
,FIRST_NAME VARCHAR2 (40 BYTE) NOT NULL
,LAST_NAME VARCHAR2 (40 BYTE) NOT NULL
,COURSE_1 VARCHAR2 (5 BYTE) NOT NULL
,COURSE_2 VARCHAR2 (5 BYTE) NOT NULL
,DOB DATE
,PHONE_NO VARCHAR2 (20 BYTE) NOT NULL
,COACH_COACH_ID NUMBER (*,0) NOT NULL
);

CREATE OR REPLACE TRIGGER KDANDEVA.ASSISTANT_COACH_JNtrg


AFTER
INSERT OR
UPDATE OR
DELETE ON KDANDEVA.ASSISTANT_COACH for each row
Declare
rec KDANDEVA.ASSISTANT_COACH_JN%ROWTYPE;
blank KDANDEVA.ASSISTANT_COACH_JN%ROWTYPE;
BEGIN
rec := blank;
IF INSERTING OR UPDATING THEN
rec.ASSISTANT_ID := :NEW.ASSISTANT_ID;
rec.FIRST_NAME := :NEW.FIRST_NAME;
rec.LAST_NAME := :NEW.LAST_NAME;
rec.COURSE_1 := :NEW.COURSE_1;
rec.COURSE_2 := :NEW.COURSE_2;
rec.DOB := :NEW.DOB;
rec.PHONE_NO := :NEW.PHONE_NO;
rec.COACH_COACH_ID := :NEW.COACH_COACH_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
IF INSERTING THEN
rec.JN_OPERATION := 'INS';
ELSIF UPDATING THEN
rec.JN_OPERATION := 'UPD';
END IF;
ELSIF DELETING THEN
rec.ASSISTANT_ID := :OLD.ASSISTANT_ID;
rec.FIRST_NAME := :OLD.FIRST_NAME;
rec.LAST_NAME := :OLD.LAST_NAME;
rec.COURSE_1 := :OLD.COURSE_1;
rec.COURSE_2 := :OLD.COURSE_2;
rec.DOB := :OLD.DOB;
rec.PHONE_NO := :OLD.PHONE_NO;
rec.COACH_COACH_ID := :OLD.COACH_COACH_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
rec.JN_OPERATION := 'DEL';
END IF;
INSERT into KDANDEVA.ASSISTANT_COACH_JN VALUES rec;
END;
/CREATE TABLE kdandeva.client (
client_id NUMBER(*, 0) NOT NULL,
client_name VARCHAR2(40 BYTE) NOT NULL,
address VARCHAR2(60 BYTE) NOT NULL,
industry VARCHAR2(20 BYTE)
);

CREATE UNIQUE INDEX kdandeva.client_pk ON


kdandeva.client (
client_id
ASC );

ALTER TABLE kdandeva.client ADD CONSTRAINT client_pk PRIMARY KEY ( client_id


);

CREATE TABLE KDANDEVA.CLIENT_JN


(JN_OPERATION CHAR(3) NOT NULL
,JN_ORACLE_USER VARCHAR2(30) NOT NULL
,JN_DATETIME DATE NOT NULL
,JN_NOTES VARCHAR2(240)
,JN_APPLN VARCHAR2(35)
,JN_SESSION NUMBER(38)
,CLIENT_ID NUMBER (*,0) NOT NULL
,CLIENT_NAME VARCHAR2 (40 BYTE) NOT NULL
,ADDRESS VARCHAR2 (60 BYTE) NOT NULL
,INDUSTRY VARCHAR2 (20 BYTE)
);

CREATE OR REPLACE TRIGGER KDANDEVA.CLIENT_JNtrg


AFTER
INSERT OR
UPDATE OR
DELETE ON KDANDEVA.CLIENT for each row
Declare
rec KDANDEVA.CLIENT_JN%ROWTYPE;
blank KDANDEVA.CLIENT_JN%ROWTYPE;
BEGIN
rec := blank;
IF INSERTING OR UPDATING THEN
rec.CLIENT_ID := :NEW.CLIENT_ID;
rec.CLIENT_NAME := :NEW.CLIENT_NAME;
rec.ADDRESS := :NEW.ADDRESS;
rec.INDUSTRY := :NEW.INDUSTRY;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
IF INSERTING THEN
rec.JN_OPERATION := 'INS';
ELSIF UPDATING THEN
rec.JN_OPERATION := 'UPD';
END IF;
ELSIF DELETING THEN
rec.CLIENT_ID := :OLD.CLIENT_ID;
rec.CLIENT_NAME := :OLD.CLIENT_NAME;
rec.ADDRESS := :OLD.ADDRESS;
rec.INDUSTRY := :OLD.INDUSTRY;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
rec.JN_OPERATION := 'DEL';
END IF;
INSERT into KDANDEVA.CLIENT_JN VALUES rec;
END;
/CREATE TABLE kdandeva.coach (
coach_id NUMBER(*, 0) NOT NULL,
first_name VARCHAR2(40 BYTE) NOT NULL,
last_name VARCHAR2(40 BYTE) NOT NULL,
course_1 VARCHAR2(5 BYTE) NOT NULL,
course_2 VARCHAR2(5 BYTE),
dob DATE NOT NULL,
phone_no VARCHAR2(20 BYTE) NOT NULL,
assistant_coach_assistant_id NUMBER(*, 0) NOT NULL
);

CREATE UNIQUE INDEX kdandeva.coach_pk ON


kdandeva.coach (
coach_id
ASC );

CREATE UNIQUE INDEX kdandeva.coach__idx ON


kdandeva.coach (
assistant_coach_assistant_id
ASC );

ALTER TABLE kdandeva.coach ADD CONSTRAINT coach_pk PRIMARY KEY ( coach_id );

CREATE TABLE KDANDEVA.COACH_JN


(JN_OPERATION CHAR(3) NOT NULL
,JN_ORACLE_USER VARCHAR2(30) NOT NULL
,JN_DATETIME DATE NOT NULL
,JN_NOTES VARCHAR2(240)
,JN_APPLN VARCHAR2(35)
,JN_SESSION NUMBER(38)
,COACH_ID NUMBER (*,0) NOT NULL
,FIRST_NAME VARCHAR2 (40 BYTE) NOT NULL
,LAST_NAME VARCHAR2 (40 BYTE) NOT NULL
,COURSE_1 VARCHAR2 (5 BYTE) NOT NULL
,COURSE_2 VARCHAR2 (5 BYTE)
,DOB DATE NOT NULL
,PHONE_NO VARCHAR2 (20 BYTE) NOT NULL
,ASSISTANT_COACH_ASSISTANT_ID NUMBER (*,0) NOT NULL
);

CREATE OR REPLACE TRIGGER KDANDEVA.COACH_JNtrg


AFTER
INSERT OR
UPDATE OR
DELETE ON KDANDEVA.COACH for each row
Declare
rec KDANDEVA.COACH_JN%ROWTYPE;
blank KDANDEVA.COACH_JN%ROWTYPE;
BEGIN
rec := blank;
IF INSERTING OR UPDATING THEN
rec.COACH_ID := :NEW.COACH_ID;
rec.FIRST_NAME := :NEW.FIRST_NAME;
rec.LAST_NAME := :NEW.LAST_NAME;
rec.COURSE_1 := :NEW.COURSE_1;
rec.COURSE_2 := :NEW.COURSE_2;
rec.DOB := :NEW.DOB;
rec.PHONE_NO := :NEW.PHONE_NO;
rec.ASSISTANT_COACH_ASSISTANT_ID := :NEW.ASSISTANT_COACH_ASSISTANT_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
IF INSERTING THEN
rec.JN_OPERATION := 'INS';
ELSIF UPDATING THEN
rec.JN_OPERATION := 'UPD';
END IF;
ELSIF DELETING THEN
rec.COACH_ID := :OLD.COACH_ID;
rec.FIRST_NAME := :OLD.FIRST_NAME;
rec.LAST_NAME := :OLD.LAST_NAME;
rec.COURSE_1 := :OLD.COURSE_1;
rec.COURSE_2 := :OLD.COURSE_2;
rec.DOB := :OLD.DOB;
rec.PHONE_NO := :OLD.PHONE_NO;
rec.ASSISTANT_COACH_ASSISTANT_ID := :OLD.ASSISTANT_COACH_ASSISTANT_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
rec.JN_OPERATION := 'DEL';
END IF;
INSERT into KDANDEVA.COACH_JN VALUES rec;
END;
/CREATE TABLE kdandeva.course (
course_id NUMBER(*, 0) NOT NULL,
course_name VARCHAR2(40 BYTE) NOT NULL,
sport VARCHAR2(5 BYTE) NOT NULL,
stage VARCHAR2(2 BYTE),
course_duration_weeks NUMBER(*, 0),
start_date DATE,
in_academy CHAR(1 BYTE),
coach_coach_id NUMBER(*, 0) NOT NULL,
assistant_coach_assistant_id NUMBER(*, 0) NOT NULL,
client_client_id NUMBER(*, 0) NOT NULL
);

COMMENT ON COLUMN kdandeva.course.in_academy IS


'Boolean datatyoe: Y/N';

CREATE UNIQUE INDEX kdandeva.course_pk ON


kdandeva.course (
course_id
ASC );

ALTER TABLE kdandeva.course ADD CONSTRAINT course_pk PRIMARY KEY ( course_id


);

CREATE TABLE KDANDEVA.COURSE_JN


(JN_OPERATION CHAR(3) NOT NULL
,JN_ORACLE_USER VARCHAR2(30) NOT NULL
,JN_DATETIME DATE NOT NULL
,JN_NOTES VARCHAR2(240)
,JN_APPLN VARCHAR2(35)
,JN_SESSION NUMBER(38)
,COURSE_ID NUMBER (*,0) NOT NULL
,COURSE_NAME VARCHAR2 (40 BYTE) NOT NULL
,SPORT VARCHAR2 (5 BYTE) NOT NULL
,STAGE VARCHAR2 (2 BYTE)
,COURSE_DURATION_WEEKS NUMBER (*,0)
,START_DATE DATE
,IN_ACADEMY CHAR (1 BYTE)
,COACH_COACH_ID NUMBER (*,0) NOT NULL
,ASSISTANT_COACH_ASSISTANT_ID NUMBER (*,0) NOT NULL
,CLIENT_CLIENT_ID NUMBER (*,0) NOT NULL
);

CREATE OR REPLACE TRIGGER KDANDEVA.COURSE_JNtrg


AFTER
INSERT OR
UPDATE OR
DELETE ON KDANDEVA.COURSE for each row
Declare
rec KDANDEVA.COURSE_JN%ROWTYPE;
blank KDANDEVA.COURSE_JN%ROWTYPE;
BEGIN
rec := blank;
IF INSERTING OR UPDATING THEN
rec.COURSE_ID := :NEW.COURSE_ID;
rec.COURSE_NAME := :NEW.COURSE_NAME;
rec.SPORT := :NEW.SPORT;
rec.STAGE := :NEW.STAGE;
rec.COURSE_DURATION_WEEKS := :NEW.COURSE_DURATION_WEEKS;
rec.START_DATE := :NEW.START_DATE;
rec.IN_ACADEMY := :NEW.IN_ACADEMY;
rec.COACH_COACH_ID := :NEW.COACH_COACH_ID;
rec.ASSISTANT_COACH_ASSISTANT_ID := :NEW.ASSISTANT_COACH_ASSISTANT_ID;
rec.CLIENT_CLIENT_ID := :NEW.CLIENT_CLIENT_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
IF INSERTING THEN
rec.JN_OPERATION := 'INS';
ELSIF UPDATING THEN
rec.JN_OPERATION := 'UPD';
END IF;
ELSIF DELETING THEN
rec.COURSE_ID := :OLD.COURSE_ID;
rec.COURSE_NAME := :OLD.COURSE_NAME;
rec.SPORT := :OLD.SPORT;
rec.STAGE := :OLD.STAGE;
rec.COURSE_DURATION_WEEKS := :OLD.COURSE_DURATION_WEEKS;
rec.START_DATE := :OLD.START_DATE;
rec.IN_ACADEMY := :OLD.IN_ACADEMY;
rec.COACH_COACH_ID := :OLD.COACH_COACH_ID;
rec.ASSISTANT_COACH_ASSISTANT_ID := :OLD.ASSISTANT_COACH_ASSISTANT_ID;
rec.CLIENT_CLIENT_ID := :OLD.CLIENT_CLIENT_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
rec.JN_OPERATION := 'DEL';
END IF;
INSERT into KDANDEVA.COURSE_JN VALUES rec;
END;
/CREATE TABLE kdandeva.participant (
participant_id NUMBER(*, 0) NOT NULL,
first_name VARCHAR2(40 BYTE) NOT NULL,
last_name VARCHAR2(40 BYTE) NOT NULL,
phone_no VARCHAR2(20 BYTE),
client_client_id NUMBER(*, 0) NOT NULL
);

CREATE UNIQUE INDEX kdandeva.participant_pk ON


kdandeva.participant (
participant_id
ASC );

ALTER TABLE kdandeva.participant ADD CONSTRAINT participant_pk PRIMARY KEY (


participant_id );

CREATE TABLE KDANDEVA.PARTICIPANT_JN


(JN_OPERATION CHAR(3) NOT NULL
,JN_ORACLE_USER VARCHAR2(30) NOT NULL
,JN_DATETIME DATE NOT NULL
,JN_NOTES VARCHAR2(240)
,JN_APPLN VARCHAR2(35)
,JN_SESSION NUMBER(38)
,PARTICIPANT_ID NUMBER (*,0) NOT NULL
,FIRST_NAME VARCHAR2 (40 BYTE) NOT NULL
,LAST_NAME VARCHAR2 (40 BYTE) NOT NULL
,PHONE_NO VARCHAR2 (20 BYTE)
,CLIENT_CLIENT_ID NUMBER (*,0) NOT NULL
);

CREATE OR REPLACE TRIGGER KDANDEVA.PARTICIPANT_JNtrg


AFTER
INSERT OR
UPDATE OR
DELETE ON KDANDEVA.PARTICIPANT for each row
Declare
rec KDANDEVA.PARTICIPANT_JN%ROWTYPE;
blank KDANDEVA.PARTICIPANT_JN%ROWTYPE;
BEGIN
rec := blank;
IF INSERTING OR UPDATING THEN
rec.PARTICIPANT_ID := :NEW.PARTICIPANT_ID;
rec.FIRST_NAME := :NEW.FIRST_NAME;
rec.LAST_NAME := :NEW.LAST_NAME;
rec.PHONE_NO := :NEW.PHONE_NO;
rec.CLIENT_CLIENT_ID := :NEW.CLIENT_CLIENT_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
IF INSERTING THEN
rec.JN_OPERATION := 'INS';
ELSIF UPDATING THEN
rec.JN_OPERATION := 'UPD';
END IF;
ELSIF DELETING THEN
rec.PARTICIPANT_ID := :OLD.PARTICIPANT_ID;
rec.FIRST_NAME := :OLD.FIRST_NAME;
rec.LAST_NAME := :OLD.LAST_NAME;
rec.PHONE_NO := :OLD.PHONE_NO;
rec.CLIENT_CLIENT_ID := :OLD.CLIENT_CLIENT_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
rec.JN_OPERATION := 'DEL';
END IF;
INSERT into KDANDEVA.PARTICIPANT_JN VALUES rec;
END;
/CREATE TABLE takes (
participant_participant_id NUMBER(*, 0) NOT NULL,
course_course_id NUMBER(*, 0) NOT NULL
);

ALTER TABLE takes ADD CONSTRAINT takes_pk PRIMARY KEY (


participant_participant_id,
course_course_id );

CREATE TABLE takes_JN


(JN_OPERATION CHAR(3) NOT NULL
,JN_ORACLE_USER VARCHAR2(30) NOT NULL
,JN_DATETIME DATE NOT NULL
,JN_NOTES VARCHAR2(240)
,JN_APPLN VARCHAR2(35)
,JN_SESSION NUMBER(38)
,PARTICIPANT_PARTICIPANT_ID NUMBER (*,0) NOT NULL
,COURSE_COURSE_ID NUMBER (*,0) NOT NULL
);

CREATE OR REPLACE TRIGGER takes_JNtrg


AFTER
INSERT OR
UPDATE OR
DELETE ON takes for each row
Declare
rec takes_JN%ROWTYPE;
blank takes_JN%ROWTYPE;
BEGIN
rec := blank;
IF INSERTING OR UPDATING THEN
rec.PARTICIPANT_PARTICIPANT_ID := :NEW.PARTICIPANT_PARTICIPANT_ID;
rec.COURSE_COURSE_ID := :NEW.COURSE_COURSE_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
IF INSERTING THEN
rec.JN_OPERATION := 'INS';
ELSIF UPDATING THEN
rec.JN_OPERATION := 'UPD';
END IF;
ELSIF DELETING THEN
rec.PARTICIPANT_PARTICIPANT_ID := :OLD.PARTICIPANT_PARTICIPANT_ID;
rec.COURSE_COURSE_ID := :OLD.COURSE_COURSE_ID;
rec.JN_DATETIME := SYSDATE;
rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER');
rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE');
rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID');
rec.JN_OPERATION := 'DEL';
END IF;
INSERT into takes_JN VALUES rec;
END;
/ALTER TABLE kdandeva.assistant_coach
ADD CONSTRAINT assistant_coach_coach_fk FOREIGN KEY ( coach_coach_id )
REFERENCES kdandeva.coach ( coach_id );

ALTER TABLE kdandeva.coach


ADD CONSTRAINT coach_assistant_coach_fk FOREIGN KEY (
assistant_coach_assistant_id )
REFERENCES kdandeva.assistant_coach ( assistant_id );

ALTER TABLE kdandeva.course


ADD CONSTRAINT course_assistant_coach_fk FOREIGN KEY (
assistant_coach_assistant_id )
REFERENCES kdandeva.assistant_coach ( assistant_id );

ALTER TABLE kdandeva.course


ADD CONSTRAINT course_client_fk FOREIGN KEY ( client_client_id )
REFERENCES kdandeva.client ( client_id );

ALTER TABLE kdandeva.course


ADD CONSTRAINT course_coach_fk FOREIGN KEY ( coach_coach_id )
REFERENCES kdandeva.coach ( coach_id );

ALTER TABLE kdandeva.participant


ADD CONSTRAINT participant_client_fk FOREIGN KEY ( client_client_id )
REFERENCES kdandeva.client ( client_id );

ALTER TABLE takes


ADD CONSTRAINT takes_course_fk FOREIGN KEY ( course_course_id )
REFERENCES kdandeva.course ( course_id );

ALTER TABLE takes


ADD CONSTRAINT takes_participant_fk FOREIGN KEY (
participant_participant_id )
REFERENCES kdandeva.participant ( participant_id );

-- Oracle SQL Developer Data Modeler Summary Report:


--
-- CREATE TABLE 6
-- CREATE INDEX 7
-- ALTER TABLE 14
-- CREATE VIEW 0
-- ALTER VIEW 0
-- CREATE PACKAGE 0
-- CREATE PACKAGE BODY 0
-- CREATE PROCEDURE 0
-- CREATE FUNCTION 0
-- CREATE TRIGGER 0
-- ALTER TRIGGER 0
-- CREATE COLLECTION TYPE 0
-- CREATE STRUCTURED TYPE 0
-- CREATE STRUCTURED TYPE BODY 0
-- CREATE CLUSTER 0
-- CREATE CONTEXT 0
-- CREATE DATABASE 0
-- CREATE DIMENSION 0
-- CREATE DIRECTORY 0
-- CREATE DISK GROUP 0
-- CREATE ROLE 0
-- CREATE ROLLBACK SEGMENT 0
-- CREATE SEQUENCE 0
-- CREATE MATERIALIZED VIEW 0
-- CREATE MATERIALIZED VIEW LOG 0
-- CREATE SYNONYM 0
-- CREATE TABLESPACE 0
-- CREATE USER 0
--
-- DROP TABLESPACE 0
-- DROP DATABASE 0
--
-- REDACTION POLICY 0
--
-- ORDS DROP SCHEMA 0
-- ORDS ENABLE SCHEMA 0
-- ORDS ENABLE OBJECT 0
--
-- ERRORS 0
-- WARNINGS 0

You might also like