Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

a) Identify ALL possible entities that could exist in the business process (give suitable entity

name), complete all the entities with suitable attributes together with assigned primary
key.

*PK = PRIMARY KEY

*FK = FOREIGN KEY

1) Table: Person

Attribute: MySJ_ID (PK), Name, NRIC, Address, Mobile_No, Email

2) Table: Registration

Attribute: Reg_ID (PK), MySJ_ID (FK), FirstDose_Date, SecondDose_Date, Method,


Reg_Status, Dose

3) Table: Vaccination

Attribute: Vaccination_ID (PK), MySJ_ID (FK), Reg_ID (FK), Vaccine_ID (FK),


FirstDose_DateTime, SecondDose_DateTime, Location, Vac_Status, Dose

4) Table: Vaccine

Attribute: Vaccine_ID (PK), Vac_Name, Manufac_Country, Distributor

b) Identify ALL relationships, cardinality, and/or participation for each identified entity.
 One person shall do one registration.
 One registration is to have one vaccination.
 One vaccination session has many vaccines.

c) Draw an Entity Relationship Diagram (ERD) by clearly stating the relationships between
entities, cardinalities and attributes with correct notation.

d) Based on ERD created in (c), convert it into relational schema. State the primary key and
foreign key for each relational schema (relations).
e) Create all relevant relations (tables) based on relational schema in (d). Choose appropriate
data types for each attribute. Indicate the primary key and foreign key in each relation
(table) created.

CREATE TABLE Person (

MYSJ_ID varchar(255) NOT NULL,

FULLNAME varchar(255) NOT NULL,

NRIC INT,

ADDRESS VARCHAR(255) NOT NULL,

MOBILE_NO INT,

EMAIL VARCHAR(255) NOT NULL,

PRIMARY KEY (MYSJ_ID)

);
SELECT * FROM PERSON;

CREATE TABLE Registration (

REG_ID varchar(255) NOT NULL,

MYSJ_ID varchar(255) NOT NULL,

METHOD TEXT NOT NULL,

REG_STATUS TEXT NOT NULL,

DOSE INT,

FIRSTDOSE_DATE DATE,

SECONDDOSE_DATE DATE,

PRIMARY KEY (REG_ID),

FOREIGN KEY (MYSJ_ID) REFERENCES Person(MYSJ_ID)

);

select * from registration;

drop table registration;

CREATE TABLE Vaccination (

VACCINATION_ID varchar(255) NOT NULL,

REG_ID varchar(255) NOT NULL,

MYSJ_ID varchar(255) NOT NULL,

VACCINE_ID varchar(255) NOT NULL,

FIRSTDOSE_DATETIME DATETIME,

SECONDDOSE_DATETIME DATE,

LOCATION VARCHAR(255) NOT NULL,

VAC_STATUS TEXT,

DOSE VARCHAR(50) NOT NULL,


PRIMARY KEY (VACCINATION_ID),

FOREIGN KEY (MYSJ_ID) REFERENCES Person(MYSJ_ID),

FOREIGN KEY (REG_ID) REFERENCES Registration(REG_ID),

FOREIGN KEY (VACCINE_ID) REFERENCES Vaccine(VACCINE_ID)

);

CREATE TABLE Vaccine (

VACCINE_ID varchar(255) NOT NULL,

VAC_NAME varchar(255) NOT NULL,

MANUFAC_COUNTRY TEXT,

DISTRIBUTOR varchar(255) NOT NULL,

PRIMARY KEY (VACCINE_ID)

f) Produce sample records for each relation (table) that observes the relational integrity
rules. FIVE records per relations are enough.

Insert record

Person table

insert into person values ('SJ01','Harry Potter','958011049899','LOT 48, TAMAN SRI WANGI, KUALA
LUMPUR','01189945003','harrypotter@gmail.com');

insert into person values ('SJ02','Chris Brown','9489200988349','LOT 50, TAMAN BUNGA RAYA,
KUALA LUMPUR','0198348433','cbrown98@gmail.com');

insert into person values ('SJ03','Ahmad Kamal','920032137899','LOT 90, TAMAN BUNGA ORKID,
KUALA LUMPUR','0158903450','a_kamalz@gmail.com');

insert into person values ('SJ04','Mira Filzah','960923108890','LOT 60, TAMAN BUNGA MATAHARI,
KUALA LUMPUR','0178904598','mfilzah@gmail.com');
insert into person values ('SJ05','Lee Chong Wu','900528068324','LOT 83, TAMAN SRI KEMBANGAN,
KUALA LUMPUR','0125468992','leechongwu@gmail.com');

Registration table

insert into registration values ('R01','SJ01','MY SEJAHTERA','SUCCESS','1','2021-07-05','0000-00-00');

insert into registration values ('R02','SJ02','MY SEJAHTERA','PENDING','2','2021-05-19','2021-06-14');

insert into registration values ('R03','SJ03','HOSPITAL FORM','SUCCESS','1','2021-05-05','0000-00-


00');

insert into registration values ('R04','SJ04','MY SEJAHTERA','SUCCESS','1','2021-06-01','0000-00-00');

insert into registration values ('R05','SJ05','MY SEJAHTERA','SUCCESS','1','2021-06-11','0000-00-00');

Vaccination table

insert into vaccination values ('V01','R01','SJ01','VAC_01','2021-07-21','0000-00-00','HOSPITAL


KUALA LUMPUR','SUCCESS','1');

insert into vaccination values ('V02','R02','SJ02','VAC_02','2021-05-31','0000-00-00','HOSPITAL


KUALA LUMPUR','PENDING','2');

insert into vaccination values ('V03','R03','SJ03','VAC_03','2021-05-24','0000-00-00','DEWAN


SERBAGUNA KUALA LUMPUR','NOT ATTEND','1');
insert into vaccination values ('V04','R04','SJ04','VAC_04','2021-06-27','0000-00-00','DEWAN
SERBAGUNA KUALA LUMPUR','NOT ATTEND','1');

insert into vaccination values ('V05','R05','SJ05','VAC_05','2021-06-30','0000-00-00','HOSPITAL


KUALA LUMPUR','NOT ATTEND','1');

Vaccine table

insert into vaccine values ('VAC_01','PFIZER','USA','KEMENTERIAN KESIHATAN');

insert into vaccine values ('VAC_02','SINOVAC','CHINA','KEMENTERIAN KESIHATAN');

insert into vaccine values ('VAC_03','ASTRAZENECA','RUSSIA','MY MEDICINE SDN. BHD.');

insert into vaccine values ('VAC_04','JOHNSON & JOHNSON','USA','HEALTH BIOTECH CO.');

insert into vaccine values ('VAC_05','OXFORD','USA','KEMENTERIAN KESIHATAN');

g) Then, produce FIVE SQL queries that can be used to manipulate the data from each
relation and show ALL the results from each of the queries. (The queries should include a
simple query, query for sorting results, aggregate function, sub-queries and query to alter
the existing tables.)
5 QUERIES

a) SIMPLE QUERY: SELECT * from vaccination where VAC_STATUS = 'SUCCESS';

b) QUERY FOR SORTING RESULTS: select * from person order by FULLNAME ASC;

c) AGGREGATE FUNCTION: select VACCINATION_ID,MYSJ_ID, MAX(FIRSTDOSE_DATETIME) from


vaccination;

d) Sub-Queries: select a.FULLNAME, a.MYSJ_ID, a.NRIC, b.REG_STATUS, b.FIRSTDOSE_DATE


from person a, registration b;
e) Query to alter existing table: alter table vaccine ADD STOCK_LEFT int;

Before:

After:

You might also like