0% found this document useful (0 votes)
8 views

Introduction To Database Systems

Uploaded by

Ricky Chen
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Introduction To Database Systems

Uploaded by

Ricky Chen
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Introduction to Database Mid-Term Answer Sheet

1. ANSI-SPARC Three-Level Architectures:

2. Illustration of Sales Invoice and Sales Person Instances


- Sales_Invoice Instance :
Invoice_Numbe Salesperson_I
Invoice_ID r Invoice_Date Car_ID Customer_ID D
CAR00
1 281032913 30/10/2021 CUS004 SAL002
INV001 5
CAR01
2 383032425 04/11/2021 CUS003 SAL001
INV002 0
CAR00
3 433032588 10/11/2021 CUS003 SAL001
INV003 4
CAR00
4 124732934 10/11/2020 CUS007 SAL003
INV004 6
CAR00
5 301432456 25/12/2020 CUS008 SAL003
INV005 8
Degree : 6; Cardinality : 5; Candidate key(s) :Invoice_ID, Invoice Number, Car_ID,
Customer_ID, Salesperson_ID; Alternate key(s) : Invoice Number, Car_ID, Customer_ID,
Salesperson_ID

- SalesPerson Instance :
Sales_Last_Nam Sales_First_Nam
Sales_ID e e
1 SAL001 Glenn Barry
2 SAL002 Torres Santino
3 SAL003 Simorangkir Gerry
Degree : 3; Cardinality : 3; Candidate key(s) : Sales_ID; Alternate key(s) : -

Link Video : https://youtu.be/8L-R8gFpBDM

3. SQL Statement for Creating Service Ticket Table

-- No. 3 Ujian Tengah Semester


create table [Service_Ticket] (
-- 3a.
Service_Ticket_ID char (6) primary key not null,
check (Service_Ticket_ID like 'SET[0-9][0-9][0-9]'),
Service_Ticket_Number varchar (9) not null,
-- 3b.
Car_ID char (6) foreign key references [Car](Car_ID)
on update cascade on delete cascade,
Customer_ID char (6) foreign key references Customer(Customer_ID)
on update cascade on delete cascade,
Date_Received date,
-- 3d.
Comments varchar (250) default 'N/A',
Date_Returned date,
)
-- 3c.
alter table [Service_Ticket]
Add constraint Check_Date check(Date_Received < Date_Returned)
4. SQL Statements to Add 3 records fore the Service Mechanic table
Insert into Service_Mechanic
values
('SEM001','SET001','SER001','MEC001','4','Car Polishing','80'),
('SEM002','SET002','SER001','MEC001','8','Car Polishing','80'),
('SEM003','SET003','SER003','MEC003','1','Car Battery Replacement','600')

5. SQL Statement for the question :


a. Show a list of Sales Invoice generated during 2020 and list on descending
order by Date
select *
from [Sales Invoice]
where Invoice_Date like '2020-%'
Order by Invoice_Date DESC

b. How long Customer gets the car back after service completed from the Date
Received? (or called Service Duration). Show Service_Ticket_ID, Car_ID,
Customer_ID, Service Duration and order by Service Duration on
descending order
select Service_Ticket_ID, Car_ID, Customer_ID, Service_Duration =
Convert(varchar, DATEDIFF(DAY, Date_Received,Date_Returned)) + ' Days'
from Service_Ticket
order by Service_Duration DESC

c. List Part_Used_ID and the Price with currency symbol “USD” (for example :
100 USD)
select Parts_Used_ID, Price = Convert(varchar,Price) + ' USD'
from Parts_Used

6. SQL statement to create a query for this question:


a. How many different Parts in the warehouse?
select [Total Parts] = count(Parts_ID), Description
from Parts
group by Description

b. Find number of Car in each Model. List on ascending order by the Model
(5%) Output : Model | Car_Count
select [Car_Count] = count(Model), Model
from Car
group by Model

c. For each Customer with more than 1 Service Order, find Car_ID and sum of
their Orders (10%) Output : Customer_ID | My Service Order Count
select Customer.Customer_ID, [My Service Order Count] =
count(Service_Ticket_ID)
from Customer join Service_Ticket on Customer.Customer_ID =
Service_Ticket.Customer_ID
group by Customer.Customer_ID
having count(Customer.Customer_ID) > 1

7. SQL statement to create a query for this question:


a. Give users Personnel and Director SELECT and UPDATE privileges on
column Rate of Service Mechanic
create login personnel
with password = 'personnel1to1'

create user personnel for login personnel

create login director


with password = 'directoronly'

Create user director for login director

Grant select, update (Rate)


on Service_Mechanic
to Personnel, Director

b. Typical Multi-user Computer Environment. Design Multi-user Computer


Environment for Car Dealership Company
Codingan SQL :

create database Car_Dealership

use Car_Dealership

create table [SalesPerson] (


Sales_ID char (6) primary key not null,
check (Sales_ID like 'SAL[0-9][0-9][0-9]'),
Sales_Last_Name varchar (50) not null,
Sales_First_Name varchar (50) not null,
)

create table [Mechanic] (


Mechanic_ID char (6) primary key not null,
check (Mechanic_ID like 'MEC[0-9][0-9][0-9]'),
Mechanic_Last_Name varchar (50) not null,
Mechanic_First_Name varchar (50) not null,
)

create table [Service] (


Service_ID char (6) primary key not null,
check (Service_ID like 'SER[0-9][0-9][0-9]'),
Services_Name varchar (50) not null,
Hourly_Rate int not null,
)

create table [Parts] (


Parts_ID char (6) primary key not null,
check (Parts_ID like 'PAR[0-9][0-9][0-9]'),
Part_Number int not null,
[Description] varchar (300) not null,
Purchase_Price int not null,
Retail_Price int not null,
check (Purchase_Price < Retail_Price ),
)

create table [Customer] (


Customer_ID char (6) primary key not null,
check (Customer_ID like 'CUS[0-9][0-9][0-9]'),
Customer_Last_Name varchar (50) not null,
Customer_First_Name varchar (50) not null,
Phone_Number varchar (15) not null,
Customer_Address varchar (150) not null,
City varchar (50) not null,
Customer_State_Or_Province varchar (50) not null,
Country varchar (50) not null,
Postal_Code varchar (5) not null,
)

create table [Car] (


Car_ID char (6) primary key not null,
check (Car_ID like 'CAR[0-9][0-9][0-9]'),
Serial_Number varchar (8) not null,
Make varchar (50) not null,
Model varchar (50) not null,
Colour varchar (50) not null,
Production_Year DATE not null,
Car_For_Sale varchar (3) not null,
check (Car_For_Sale in ('Yes','No')),
)

create table [Sales Invoice] (


Invoice_ID char (6) primary key not null,
check (Invoice_ID like 'INV[0-9][0-9][0-9]'),
Invoice_Number varchar (9) not null,
Invoice_Date date not null,
Car_ID char (6) foreign key references Car(Car_ID)
on update cascade on delete cascade,
Customer_ID char (6) foreign key references Customer(Customer_ID)
on update cascade on delete cascade,
Salesperson_ID char (6) foreign key references Salesperson(Sales_ID)
on update cascade on delete cascade,
)
create table [Parts_Used] (
Parts_Used_ID char (6) primary key not null,
check (Parts_Used_ID like 'USE[0-9][0-9][0-9]'),
Parts_ID char (6) foreign key references Parts(Parts_ID)
on update cascade on delete cascade,
Service_Ticket_ID char (6) foreign key references
Service_Ticket(Service_Ticket_ID)
on update cascade on delete cascade,
Number_Used int not null,
Price int not null,
)

create table [Service_Mechanic] (


Service_Mechanic_ID char (6) primary key not null,
check (Service_Mechanic_ID like 'SEM[0-9][0-9][0-9]'),
Service_Ticket_ID char (6) foreign key references
Service_Ticket(Service_Ticket_ID)
on update cascade on delete cascade,
Service_ID char (6) foreign key references [Service](Service_ID)
on update cascade on delete cascade,
Mechanic_ID char (6) foreign key references Mechanic(Mechanic_ID)
on update cascade on delete cascade,
Service_Hours int not null,
Comment varchar (250) not null,
Rate int not null,
)

-- No. 3 Ujian Tengah Semester


create table [Service_Ticket] (
-- 3a.
Service_Ticket_ID char (6) primary key not null,
check (Service_Ticket_ID like 'SET[0-9][0-9][0-9]'),
Service_Ticket_Number varchar (9) not null,
-- 3b.
Car_ID char (6) foreign key references [Car](Car_ID)
on update cascade on delete cascade,
Customer_ID char (6) foreign key references Customer(Customer_ID)
on update cascade on delete cascade,
Date_Received date,
-- 3d.
Comments varchar (250) default 'N/A',
Date_Returned date,
)
-- 3c.
alter table [Service_Ticket]
Add constraint Check_Date check(Date_Received < Date_Returned)

Insert into [Service_Ticket]


Values
('SET003','23238292','CAR002','CUS001','10/20/2021',Default,'10/24/2021'),
('SET001','38920342','CAR003','CUS003','10/14/2021',Default,'10/17/2021'),
('SET002','49342354','CAR001','CUS003','10/30/2021',Default,'11/02/2021')

Insert into [Service]


Values
('SER001','Car Polishing','80'),
('SER002','Piston Replacement','1000'),
('SER003','Car Battery Replacement','600')

Insert into [Mechanic]


Values
('MEC001','Gregorius','Bryan'),
('MEC002','Gen','Darryl'),
('MEC003','Sumarga','Benny')

Insert into [Car]


Values
('CAR001','B4551GA','Honda','Freed','White','2017','No'),
('CAR002','BG1251L','Toyota','Yaris','Silver','2015','No'),
('CAR003','AA462TL','Daihatsu','Terios','Silver','2015','No')

Insert into [Customer]


Values
('CUS001','Pradana','James','0892719383316','Jl. Kebayoran Baru III no.
34','Jakarta Barat','DKI Jakarta','Indonesia','11593'),
('CUS002','Britanny','Lisbeth','0817392301255','Jl. Tunas Muda IV Blok 5 no.
90','Bogor','Jawa Barat','Indonesia','16969'),
('CUS003','Martin','Ricky','0839829184511','Jl. Arjuna Langit XIV no.
19','Bekasi','Jawa Barat','Indonesia','17112')

select *
from Service_Ticket

-- No. 4 Ujian Tengah Semester

Insert into Service_Mechanic


values
('SEM001','SET001','SER001','MEC001','4','Car Polishing','80'),
('SEM002','SET002','SER001','MEC001','8','Car Polishing','80'),
('SEM003','SET003','SER003','MEC003','1','Car Battery Replacement','600')

Insert into Salesperson


Values
('SAL001','Glenn','Barry'),
('SAL002','Torres','Santino'),
('SAL003','Simorangkir','Gerry')

Insert into Car


Values
('CAR004','BL204HF','Honda','Freed','Black','2020','Yes'),
('CAR005','SI812DT','Daihatsu','Terios','Silver','2018','Yes'),
('CAR006','GR901SE','Suzuki','Ertiga','Grey','2019','Yes'),
('CAR007','RE779SE','Suzuki','Ertiga','Red','2017','No'),
('CAR008','GN111TY','Toyota','Yaris','Green','2021','Yes'),
('CAR009','WH482TA','Toyota','Avanza','White','2019','Yes'),
('CAR010','BL142HJ','Honda','Jazz','Blue','2018','Yes')

Insert into Customer


Values
('CUS004','Sitorus','Denny','0877492047923','Jl. Pratama VI no. 14','Jakarta
Utara','DKI Jakarta','Indonesia','11283'),
('CUS005','Situbondan','Firman','0857391048201','Jl. Diponegoro Baru no.
90','Cikeusik','Banten','Indonesia','12893'),
('CUS006','Kho','Teddy','0814931284729','Jl. Jelambar Jaya IX no. 6','Jakarta
Barat','DKI Jakarta','Indonesia','11469'),
('CUS007','Salim','Soni','085696087980','Jl. Beringin Timur V no. 9','Jakarta
Selatan','DKI Jakarta','Indonesia','12824'),
('CUS008','Sumargo','Fatih','0861398134013','Jl. Langit Senja Raya VII no.
19','Bogor','Jawa Barat','Indonesia','12302')

Insert into [Sales Invoice]


Values
('INV001','281032913','10/30/2021','CAR005','CUS004','SAL002'),
('INV002','383032425','11/04/2021','CAR010','CUS003','SAL001'),
('INV003','433032588','11/10/2021','CAR004','CUS003','SAL001'),
('INV004','124732934','11/10/2020','CAR006','CUS007','SAL003'),
('INV005','301432456','12/25/2020','CAR008','CUS008','SAL003')

-- No 5 Ujian Tengah Semester


-- 5a.
select *
from [Sales Invoice]
where Invoice_Date like '2020-%'
Order by Invoice_Date DESC

--5b.
select Service_Ticket_ID, Car_ID, Customer_ID, Service_Duration =
Convert(varchar, DATEDIFF(DAY, Date_Received,Date_Returned)) + ' Days'
from Service_Ticket
order by Service_Duration DESC

Insert into Parts


Values
('PAR001','150','Piston','600','800'),
('PAR002','200','Glass','500','650'),
('PAR003','300','Car Battery','375','500'),
('PAR004','100','Tire','550','650')

Insert into Parts_Used


Values
('USE001','PAR001','SET002','2','2000'),
('USE002','PAR003','SET003','1','600')

--5c.
select Parts_Used_ID, Price = Convert(varchar,Price) + ' USD'
from Parts_Used

-- No. 6 Ujian Tengah Semester

--6a.
select [Total Parts] = count(Parts_ID), Description
from Parts
group by Description

--6b.
select [Car_Count] = count(Model), Model
from Car
group by Model

--6c.
select Customer.Customer_ID, [My Service Order Count] =
count(Service_Ticket_ID)
from Customer join Service_Ticket on Customer.Customer_ID =
Service_Ticket.Customer_ID
group by Customer.Customer_ID
having count(Customer.Customer_ID) > 1

-- No. 7 Ujian Tengah Semester

-- 7a.
create login personnel
with password = 'personnel1to1'
create user personnel for login personnel

create login director


with password = 'directoronly'

Create user director for login director

Grant select, update (Rate)


on Service_Mechanic
to Personnel, Director

-- 7b.

You might also like