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

Introduction To Database Systems

Uploaded by

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

Introduction To Database Systems

Uploaded by

Ricky Chen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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