Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

Database model: Database Model For Car Rental, sql_server

Database model documentation

1
Database model: Database Model For Car Rental, sql_server

Table of contents

1. Model details 4
2. Tables 5
1.1. Table Customers 5
1.2. Table Employees 5
1.3. Table EmployeeTypes 6
1.4. Table Promotions 6
1.5. Table Locations 6
1.6. Table Bookings 6
1.7. Table FuelLevels 7
1.8. Table Discounts 7
1.9. Table Invoices 7
1.10. Table Vehicles 8
1.11. Table Inventory 8
1.12. Table VehicleTypes 8
3. Views 9
2.1. View QUERY_1 9
2.2. View QUERY_2 9
2.3. View QUERY_3 9
2.4. View QUERY_4 10
2.5. View QUERY_5 10
2.6. View QUERY_6 10
2.7. View QUERY_7 11
2.8. View QUERY_8 11
2.9. View QUERY_9 11
4. References 13
3.1. Reference Employees_Customers 13
3.2. Reference Employees_EmployeeTypes 13
3.3. Reference Employees_Locations 13
3.4. Reference Inventory_Locations 13
3.5. Reference Vehicles_VehicleTypes 13
3.6. Reference Inventory_VehicleTypes 13
3.7. Reference Vehicles_Locations 13
3.8. Reference Invoices_VehicleTypes 13
3.9. Reference Invoices_Discounts 14
3.10. Reference Invoices_Bookings 14

2
Database model: Database Model For Car Rental, sql_server

3.11. Reference Bookings_FuelLevels 14


3.12. Reference Bookings_Vehicles 14
3.13. Reference Bookings_Customers 14
3.14. Reference Promotions_VehicleTypes 14
3.15. Reference Locations_Bookings 14
3.16. Reference Bookings_Locations 15

3
Database model: Database Model For Car Rental, sql_server

1. Model details
Model name:
Database Model For Car Rental
Version:
2.3
Database engine:
Microsoft SQL Server
Description:

4
Database model: Database Model For Car Rental, sql_server

2. Tables
2.1. Table Customers
2.1.1. Columns

Column name Type Properties Description


CustomerID int PK
IsEmployee bit
FirstName nvarchar(max)
LastName nvarchar(max)
Address text
PhoneNumber int
DriverLicense uniqueidentifier

2.1.2. Alternate keys

Key name Columns Description


DriverLicense DriverLicense

2.2. Table Employees


2.2.1. Columns

Column name Type Properties Description


EmployeeID int PK
EmployeeTypeID int
LocationID int
FirstName nvarchar(max)
LastName nvarchar(max)
Address text
PhoneN int
DriverLicense uniqueidentifier

2.2.2. Alternate keys

Key name Columns Description


DriverLicenses DriverLicense

5
Database model: Database Model For Car Rental, sql_server

2.3. Table EmployeeTypes


2.3.1. Columns

Column name Type Properties Description


EmployeeTypeID int PK
EmployeeTypeName varchar(25)

2.4. Table Promotions


2.4.1. Columns

Column name Type Properties Description


PromotionID int PK
VehicleClassID int
PromoRate decimal(2,2)
PromoStartDate date
PromoEndDate date

2.5. Table Locations


2.5.1. Columns

Column name Type Properties Description


LocationID int PK
LocationName nvarchar(max)
Street varchar(50)
City varchar(50)
State varchar(20)
ZipCode int

2.6. Table Bookings


2.6.1. Columns

Column name Type Properties Description


BookingID int PK
BookingDate date
ReturnDate date

6
Database model: Database Model For Car Rental, sql_server

BookingDuration int
CustomerID int
VehicleID int
PickLocationID int
DropLocationID int
OdometerBefore char(15)
OdometerAfter char(15)
FuelLevelID int

2.7. Table FuelLevels


2.7.1. Columns

Column name Type Properties Description


FuelLevelID int PK
FuelLevel char(15)

2.8. Table Discounts


2.8.1. Columns

Column name Type Properties Description


DiscountsID int PK
Duration date
DiscountRate decimal(5,8)

2.9. Table Invoices


2.9.1. Columns

Column name Type Properties Description


InvoiceID int PK
VehicleClassID int
DiscountID int null
BookingID int
TotalDaysRented date
DropOffLocation text
PickUpLocation text

7
Database model: Database Model For Car Rental, sql_server

TotalCharge money

2.10. Table Vehicles


2.10.1. Columns

Column name Type Properties Description


VehicleID int PK
VehicleClassID int
LocationID int
Make varchar(50)
Model varchar(20)
Year int
Color varchar(10)
PlateNumbers varchar(15)
Odometer varchar(15)

2.11. Table Inventory


2.11.1. Columns

Column name Type Properties Description


InventoryID int PK
LocationID int
VehicleClassID int
AvailableQuantit int
y

2.12. Table VehicleTypes


2.12.1. Columns

Column name Type Properties Description


VehicleClassID int PK
VehicleType varchar(10)
RentalCost money

8
Database model: Database Model For Car Rental, sql_server

3. Views
3.1. View QUERY_1
Description:
Provide the last name of all customers who are currently renting a car from the company.
SQL:
SELECT c.LastName
FROM Customers c
INNER JOIN Bookings b ON c.CustomerId = b.CustomerId
WHERE b.ReturnDate > GETDATE()
AND b.BookingDate <= GETDATE()
3.1.1. Columns

Column name Type Properties Description


LastName nvarchar(max)

3.2. View QUERY_2


Description:
Provide the make and color of all currently rented vehicles.
SQL:
SELECT v.Make, v.Color
FROM Vehicles v
INNER JOIN Bookings b ON b.VehicleId = v.VehicleId
WHERE b.ReturnDate > GETDATE()
AND b.BookingDate <= GETDATE()
3.2.1. Columns

Column name Type Properties Description


Make varchar(50)
Color varchar(10)

3.3. View QUERY_3


Description:
For each completed rental, provide the rental price and rental_id.
SQL:
SELECT inv.TotalCharge, inv.BookingID
FROM Invoices inv
INNER JOIN Bookings b ON b.BookingID = inv.BookingID
WHERE b.ReturnDate < GETDATE()

9
Database model: Database Model For Car Rental, sql_server

3.3.1. Columns

Column name Type Properties Description


TotalCharge money
BookingID int

3.4. View QUERY_4


Description:
List the last name of all managers.
SQL:
SELECT emp.LastName
FROM Employees emp
INNER JOIN Locations l ON l.LocationID = emp.LocationID
INNER JOIN EmployeeTypes et ON et.EmployeeTypeID =
emp.EmployeeTypeID
WHERE l.LocationName = 'HQ' OR et.EmployeeTypeName = 'Manager'
3.4.1. Columns

Column name Type Properties Description


LastName nvarchar(max)

3.5. View QUERY_5


Description:
List the last and first names of all customers
SQL:
SELECT LastName, FirstName FROM Customers
3.5.1. Columns

Column name Type Properties Description


LastName nvarchar(max)
FirstName nvarchar(max)

3.6. View QUERY_6


Description:
Provide any of our employee that are also our customers
SQL:
SELECT emp.EmployeeID, c.CustomerID
FROM Employees emp
INNER JOIN Customers c ON c.DriverLicense = emp.DriverLicense

10
Database model: Database Model For Car Rental, sql_server

3.6.1. Columns

Column name Type Properties Description


EmployeeID int
CustomerID int

3.7. View QUERY_7


Description:
Provide the rental_id of all of the shortest (completed) rentals
SQL:
SELECT BookingID
FROM Bookings
WHERE ReturnDate < GETDATE()
ORDER BY BookingDuration
3.7.1. Columns

Column name Type Properties Description


BookingID int
BookingDuration int

3.8. View QUERY_8


Description:
Find the value of the cheapest (completed) rental
SQL:
SELECT MIN(i.TotalCharge)
FROM Invoices i
JOIN Bookings b ON b.BookingID = i.BookingID
WHERE b.ReturnDate < GETDATE()
3.8.1. Columns

Column name Type Properties Description


TotalCharge money

3.9. View QUERY_9


Description:
Provide the makes of vehicles that have never been rented
SQL:
SELECT Make
FROM Vehicles

11
Database model: Database Model For Car Rental, sql_server

WHERE vehicleID NOT IN (SELECT VehicleID


FROM Bookings
WHERE ReturnDate < GETDATE())
3.9.1. Columns

Column name Type Properties Description


Make varchar(50)

12
Database model: Database Model For Car Rental, sql_server

4. References
4.1. Reference Employees_Customers
Customers 0..1 Employees
DriverLicense <-> DriverLicense

4.2. Reference Employees_EmployeeTypes


EmployeeTypes 1..* Employees
EmployeeTypeID <-> EmployeeTypeID

4.3. Reference Employees_Locations


Locations 1..* Employees
LocationID <-> LocationID

4.4. Reference Inventory_Locations


Locations 0..* Inventory
LocationID <-> LocationID

4.5. Reference Vehicles_VehicleTypes


VehicleTypes 0..* Vehicles
VehicleClassID <-> VehicleClassID

4.6. Reference Inventory_VehicleTypes


VehicleTypes 0..* Inventory
VehicleClassID <-> VehicleClassID

4.7. Reference Vehicles_Locations


Locations 0..* Vehicles
LocationID <-> LocationID

4.8. Reference Invoices_VehicleTypes

13
Database model: Database Model For Car Rental, sql_server

VehicleTypes 1..* Invoices


VehicleClassID <-> VehicleClassID

4.9. Reference Invoices_Discounts


Discounts 0..* Invoices
DiscountsID <-> DiscountID

4.10. Reference Invoices_Bookings


Bookings 1..1 Invoices
BookingID <-> BookingID

4.11. Reference Bookings_FuelLevels


FuelLevels 1..* Bookings
FuelLevelID <-> FuelLevelID

4.12. Reference Bookings_Vehicles


Vehicles 1..* Bookings
VehicleID <-> VehicleID

4.13. Reference Bookings_Customers


Customers 1..* Bookings
CustomerID <-> CustomerID

4.14. Reference Promotions_VehicleTypes


VehicleTypes 0..* Promotions
VehicleClassID <-> VehicleClassID

4.15. Reference Locations_Bookings


Locations 1..* Bookings
LocationID <-> PickLocationID

14
Database model: Database Model For Car Rental, sql_server

4.16. Reference Bookings_Locations


Locations 1..* Bookings
LocationID <-> DropLocationID

15

You might also like