MIT COLLEGE OF MANAGEMENT
MITADT UNIVERSITY, PUNE
CLASS : MCA I SEM II LAST DATE OF SUBMISSION : 30 March 2025
SUBJECT : DBMS SUBJECT TEACHER : Dr. Sangita Phunde
Marks : 50
Mini DBMS Group Project
1] Team Size: Maximum 2 students
2] Topic of Project :- HOTEL MANAGEMENT SYSTEM
3] Scope of Project
4] ER diagram of Project
5] Conversion of ER Diagram to Table design
6] Normalization up to 3NF
7] Minimum five report queries.
Scope of the Hotel Management System
Introduction
The Hotel Management System is a comprehensive database-driven application designed to
streamline hotel operations by managing employee records, room bookings, customer details, and
other essential services. This system automates various hotel management processes, ensuring
efficient resource utilization, improved customer service, and effective data management.
Objectives
To digitize hotel management operations for enhanced efficiency.
To provide a centralized database for storing and managing hotel-related information.
To facilitate room allocation, customer check-in/check-out tracking, and payment
processing.
To ensure seamless employee management, driver allocation, and departmental
budgeting.
To offer real-time data access and updates for better decision-making.
Scope of the System
1. User Management
Secure login authentication for admin access.
Role-based access for different users (e.g., Admin, Receptionist, Manager).
2. Employee Management
Storing employee details such as name, age, gender, job role, salary, contact information,
and identification details.
Tracking employee records and managing salaries.
3. Room Management
Maintaining records of room availability, cleaning status, pricing, and bed type.
Updating room status dynamically based on check-ins and check-outs.
4. Customer Management
Recording customer information including identity documents, name, gender, country,
room allocation, check-in time, and deposit.
Retrieving customer records for billing and future reservations.
5. Driver & Transportation Management
Storing driver details such as name, age, gender, company, brand, availability, and location.
Updating driver availability based on real-time demand.
6. Department Management
Keeping track of hotel departments and their respective budgets.
Managing financial records for different departments to optimize operational costs.
Here’s an ER (Entity-Relationship) Diagram for your Hotel Management System. It represents the
entities, their attributes, and the relationships between them.
Entities & Attributes:
1. Login
o username (PK)
o password
2. Employee
o name
o age
o gender
o job
o salary
o phone
o email
o aadhar (PK)
3. Room
o roomnumber (PK)
o availability
o cleaning_status
o price
o bed_type
4. Customer
o document
o number (PK)
o name
o gender
o country
o room (FK → Room.roomnumber)
o checkintime
o deposit
5. Driver
o name
o age
o gender
o company
o brand
o available
o location
6. Department
o department (PK)
o budget
Relationships:
Customer → Room (Many-to-One): A customer books a room, but a room can be assigned to
one customer at a time.
Employee → Department (Many-to-One): Multiple employees can work in the same
department.
Driver → Customer (One-to-Many): A driver can serve multiple customers.
Now, I'll generate the ER diagram for you.
Here’s the Conversion of the ER Diagram to Table Design in a tabular format:
Table Structure for Hotel Management System
Table Name Attributes Primary Key Foreign Key (FK) Description
(PK)
Login username username - Stores login
(VARCHAR(25)), credentials for
password authentication.
(VARCHAR(25))
Employee name (VARCHAR(25)), aadhar - Stores employee
age (VARCHAR(10)), details such as
gender (VARCHAR(15)), job role, salary,
job (VARCHAR(30)), and contact
salary (VARCHAR(15)), details.
phone (VARCHAR(15)),
email (VARCHAR(40)),
aadhar (VARCHAR(20))
Room roomnumber roomnumber - Manages hotel
(VARCHAR(10)), rooms,
availability availability
(VARCHAR(20)), status, and
cleaning_status pricing.
(VARCHAR(20)), price
(VARCHAR(20)),
bed_type
(VARCHAR(20))
Customer document number room → Stores customer
(VARCHAR(20)), Room(roomnumber) details, including
number room allocation
(VARCHAR(30)), name and check-in
(VARCHAR(30)), gender details.
(VARCHAR(15)),
country
(VARCHAR(20)), room
(VARCHAR(10)),
checkintime
(VARCHAR(80)), deposit
(VARCHAR(20))
Driver name (VARCHAR(20)), - - Stores
age (VARCHAR(10)), information
gender (VARCHAR(15)), about hotel-
company affiliated drivers.
(VARCHAR(20)), brand
(VARCHAR(20)),
available
(VARCHAR(20)),
location (VARCHAR(40))
Departmen department department - Stores hotel
t (VARCHAR(30)), budget department
(VARCHAR(30)) names and their
budgets.
Normalization of the Hotel Management System Database
Normalization is the process of structuring a database to eliminate redundancy and ensure data
integrity. Below, we will go through the four normalization forms (UNF, 1NF, 2NF, and 3NF) for the
Hotel Management System database.
🟠 UNF (Unnormalized Form)
Definition: Data is in raw format with repeating groups and multivalued attributes.
Issue: Data redundancy and anomalies.
Customer_ID Name Document_Type Document_No Phone Room_No Checkin_Time Deposit
Numbers
C101 John Passport P123456 9876543210, 101 10 AM 5000
9123456789
C102 Alice ID Card ID56789 9988776655 102 12 PM 4000
📌 Issues in UNF:
Repeating values (multiple phone numbers).
Multivalued attributes cause anomalies.
🟢 1NF (First Normal Form)
Definition:
o Each column has atomic values (no multivalued attributes).
o Each row has a unique identifier (Primary Key).
Solution: Split repeating values into separate rows.
Customer_ID Name Document_Type Document_No Phone Room_No Checkin_Time Deposit
Number
C101 John Passport P123456 9876543210 101 10 AM 5000
C101 John Passport P123456 9123456789 101 10 AM 5000
C102 Alice ID Card ID56789 9988776655 102 12 PM 4000
✅ Fixes Applied:
✔ Removed multivalued attributes by creating separate rows for each phone number.
✔ Ensured each column contains atomic values.
🟢 2NF (Second Normal Form)
Definition:
o Must be in 1NF.
o No partial dependencies (every non-key attribute should depend on the entire
primary key).
Issue: Partial dependency (Phone Number depends only on Customer_ID, not on
Room_No).
Solution: Split into two tables.
Table: Customer
Customer_I Name Document_Typ Document_No
D e
C101 John Passport P123456
C102 Alice ID Card ID56789
Table: Customer_Phone
Customer_ID Phone Number
C101 9876543210
C101 9123456789
C102 9988776655
Table: Customer_Booking
Customer_ID Room_No Checkin_Time Deposit
C101 101 10 AM 5000
C102 102 12 PM 4000
✅ Fixes Applied:
✔ Eliminated partial dependency by breaking down data into separate tables.
🟢 3NF (Third Normal Form)
Definition:
o Must be in 2NF.
o No transitive dependencies (Non-key columns should not depend on other non-key
columns).
Issue: Transitive dependency in Customer_Booking (Deposit depends on Room_No).
Solution: Separate room details into a Room table.
Table: Customer
Customer_I Name Document_Typ Document_No
D e
C101 John Passport P123456
C102 Alice ID Card ID56789
Table: Customer_Phone
Customer_ID Phone Number
C101 9876543210
C101 9123456789
C102 9988776655
Table: Customer_Booking
Customer_ID Room_No Checkin_Time
C101 101 10 AM
C102 102 12 PM
Table: Room
Room_N Price Availability
o
101 5000 Available
102 4000 Booked
✅ Fixes Applied:
✔ Eliminated transitive dependency by moving room details to a separate Room table.
✔ Ensured all non-key attributes depend only on the primary key.
🔥 Final Optimized Database Schema (After 3NF)
Table Name Attributes
Customer Customer_ID (PK), Name, Document_Type, Document_No
Customer_Phone Customer_ID (FK), Phone_Number
Customer_Booking Customer_ID (FK), Room_No (FK), Checkin_Time
Room Room_No (PK), Price, Availability
1. List of All Customers and Their Booked Rooms
This query retrieves a list of customers along with their booked rooms.
SELECT c.Customer_ID, c.Name, c.Document_Type, c.Document_No, cb.Room_No, cb.Checkin_Time
FROM Customer c
JOIN Customer_Booking cb ON c.Customer_ID = cb.Customer_ID
ORDER BY cb.Checkin_Time DESC;
📌 Use Case: Helps hotel management track room allocations and customer details.
2️ Report: Available Rooms with Price
Retrieves a list of all available rooms and their prices.
SELECT Room_No, Price, Availability
FROM Room
WHERE Availability = 'Available'
ORDER BY Price ASC;
📌 Use Case: Useful for front desk staff to quickly check available rooms for new customers.
3️ Report: Employee Details by Department
Lists employees working in a specific department.
SELECT e.Name, e.Job, e.Salary, d.Department
FROM Employee e
JOIN Department d ON e.Job = d.Department
ORDER BY d.Department;
📌 Use Case: Helps the HR department analyze employee distribution.
4️ Report: Total Revenue from Room Bookings
Calculates the total revenue generated from booked rooms.
SELECT SUM(r.Price) AS Total_Revenue
FROM Room r
JOIN Customer_Booking cb ON r.Room_No = cb.Room_No;
📌 Use Case: Provides financial insights on room revenue.
5️ Report: Most Frequently Booked Rooms
Shows which rooms are booked most often.
SELECT Room_No, COUNT(*) AS Booking_Count
FROM Customer_Booking
GROUP BY Room_No
ORDER BY Booking_Count DESC
LIMIT 5;
📌 Use Case: Helps the hotel management identify high-demand rooms.