EDUVOS (PTY) LTD
School of Information Technology
MODULE NAME: Database Design Concepts
MODULE CODE: ITDCA0-44
PROJECT TITLE: Flight Booking System
STUDENT NAME: Ntokozo Mchunu
STUDENT NUMBER:EDUV10936826
LECTURER NAME: Edwin Matshipa
DATE OF SUBMISSION: 11/7/2026
DECLARATION
I, Ntokozo Mchunu, hereby declare that this project is my own original work.
All sources have been properly acknowledged.
I understand that plagiarism will result in disciplinary action and possible loss of marks.
Table of Contents
EDUVOS (PTY) LTD......................................................................................................................1
1. Introduction................................................................................................................................3
2. Problem Summary.....................................................................................................................3
Normalisation.................................................................................................................................4
0NF (Unnormalised Form).........................................................................................................4
1NF (First Normal Form)............................................................................................................4
2NF (Second Normal Form).......................................................................................................5
3NF (Third Normal Form)...........................................................................................................7
ER Diagram from 3NF...................................................................................................................9
Mapping from ERD to Tables.......................................................................................................11
References..................................................................................................................................14
1. Introduction
This project is about creating a database for a South African Flight Booking Agency. The system
will let customers view flights and, if registered, book tickets online. Customers can search for
flights using dates, times, prices, and destinations.
The database will be designed by identifying entities, defining relationships, normalising data
from 0NF to 3NF, creating an ER diagram, and mapping the entities to tables. This will make
sure the system is accurate, organised, and easy to manage.
2. Problem Summary
Currently, the flight booking process is done manually, which causes errors and delays.
Customers cannot easily see flight availability or book tickets online.
To solve these problems, the proposed system will:
Allow registered customers to make bookings and unregistered users to view flights.
Record essential customer details such as ID/passport number, name, contact
information, and optional postal address.
Manage flight details such as flight number, name, date, class, capacity, and
availability.
Support three flight classes:
o 1st Class (Executive)
o 2nd Class (Business)
o 3rd Class (Economy)
Allow bookings for additional passengers without requiring registration.
Apply discounts for minors (under 16) and seniors (over 65) based on ID numbers.
This database will serve as the foundation for an online booking system, enabling fast,
accurate, and secure flight management.
Normalisation
0NF (Unnormalised Form)
At this stage, the data is not organised and contains repeating groups and redundancy. The
tables are “raw” and hard to manage.
Example of 0NF table for Flight Booking System:
CustomerI Nam Email FlightNumb FlightDat Class PassengerNam
D e er e e
1 John john@[Link] SA101 2025-11- Econom Sarah, Mike
10 y
2 Mary mary@[Link] SA102 2025-11- Busines Tom
m 11 s
3 Peter peter@[Link] SA103 2025-11- Econom Alice, Bob, John
m 12 y
Problems in 0NF:
1. Repeating groups – the PassengerName column contains multiple names in a single
cell.
2. Redundant data – flight and customer information repeats for each passenger.
3. Hard to maintain – adding or removing passengers or flights is prone to errors.
4. Difficult to query – searching for a specific passenger or flight is not easy.
This is why normalisation is needed: to organise data into atomic values, reduce redundancy,
and make the database efficient and easy to manage.
1NF (First Normal Form)
In 1NF, all data must be atomic, meaning no column should contain multiple values. Each field
holds only one piece of information, and repeating groups are removed.
Example of 1NF for Flight Booking System:
Customer Table (basic info)
CustomerI Nam Email
D e
1 John john@[Link]
2 Mary mary@[Link]
3 Peter peter@[Link]
Passenger Table (each passenger in a separate row)
PassengerI CustomerI FlightNumbe FlightDate Class PassengerNam
D D r e
1 1 SA101 2025-11-10 Economy Sarah
2 1 SA101 2025-11-10 Economy Mike
3 2 SA102 2025-11-11 Business Tom
4 3 SA103 2025-11-12 Economy Alice
5 3 SA103 2025-11-12 Economy Bob
6 3 SA103 2025-11-12 Economy John
Changes from 0NF to 1NF:
1. Each PassengerName now occupies one row per passenger.
2. Repeating groups are removed.
3. All data is now atomic.
4. Easier to add, delete, or search for passengers or flights.
At this stage, the table is still not fully normalised, because flight information and customer
info is still repeated. This will be fixed in 2NF.
2NF (Second Normal Form)
In 2NF, the table must first be in 1NF, and all non-key attributes must depend on the whole
primary key. Any partial dependencies are removed by creating separate tables.
Step 1 – Separate tables to remove partial dependencies
Customer Table
CustomerI Nam Email Phone PostalAddres
D e s
1 John john@[Link] 0821234567 12 Main St
2 Mary mary@[Link] 0839876543 45 Oak Rd
3 Peter peter@[Link] 0815556789 89 Pine Ave
Flight Table
FlightI FlightNumbe FlightDate DeparturePoin ArrivalPoint
D r t
1 SA101 2025-11-10 Johannesburg Cape Town
2 SA102 2025-11-11 Durban Johannesburg
3 SA103 2025-11-12 Pretoria Durban
Booking Table
BookingI CustomerI FlightI Class BookingDat TotalPassenger
D D D e s
1 1 1 Economy 2025-10-01 2
2 2 2 Business 2025-10-02 1
3 3 3 Economy 2025-10-03 3
Passenger Table
PassengerI BookingI Nam Ag IsMino IsSenio
D D e e r r
1 1 Sarah 14 Yes No
2 1 Mike 30 No No
3 2 Tom 45 No No
4 3 Alice 10 Yes No
5 3 Bob 70 No Yes
6 3 John 50 No No
Changes from 1NF to 2NF:
1. Flight info and customer info are now in separate tables.
2. Each table has a single primary key and attributes depend only on that key.
3. Redundancy is reduced.
4. Easier to update flight or customer information without affecting other data.
At this stage, the database is in 2NF, but there may still be transitive dependencies which will
be fixed in 3NF.
3NF (Third Normal Form)
In 3NF, the table must already be in 2NF, and all non-key attributes must depend only on the
primary key, not on another non-key attribute. This removes transitive dependencies and
further reduces redundancy.
Customer Table
CustomerI Nam Email Phone PostalAddres
D e s
1 John john@[Link] 0821234567 12 Main St
2 Mary mary@[Link] 0839876543 45 Oak Rd
3 Peter peter@[Link] 0815556789 89 Pine Ave
Flight Table
FlightI FlightNumbe FlightDate DeparturePoin ArrivalPoint
D r t
1 SA101 2025-11-10 Johannesburg Cape Town
2 SA102 2025-11-11 Durban Johannesburg
3 SA103 2025-11-12 Pretoria Durban
FlightClass Table
ClassI ClassNam
D e
1 Economy
2 Business
3 Executive
Booking Table
BookingI Customer FlightI ClassI BookingDa TotalPasseng DiscountAppli
D ID D D te ers ed
1 1 1 1 2025-10-01 2 Yes
2 2 2 2 2025-10-02 1 No
3 3 3 1 2025-10-03 3 Yes
Passenger Table
PassengerI BookingI Nam Ag IsMino IsSenio
D D e e r r
1 1 Sarah 14 Yes No
2 1 Mike 30 No No
3 2 Tom 45 No No
4 3 Alice 10 Yes No
5 3 Bob 70 No Yes
6 3 John 50 No No
FlightCapacity Table
CapacityI FlightI ClassI TotalSeat SeatsBooke
D D D s d
1 1 1 100 50
2 1 2 50 30
3 1 3 200 180
Key Points About 3NF
1. All tables are now fully normalised.
2. Each attribute depends only on its table’s primary key.
3. Redundancy is minimised and data integrity is ensured.
4. Makes updates, deletions, and inserts safer and easier.
The database is now ready for creating the ERD and mapping to actual tables.
ER Diagram from 3NF
This ER Diagram shows the main tables (entities) and how they are linked in the Flight Booking
System.
It is based on the database after it was normalised to Third Normal Form (3NF).
Entities and Attributes
Customer
CustomerID (PK)
Name
Email
Phone
BookingStatus
Flight
FlightNo (PK)
FlightName
Date
Destination
ClassID (FK)
Capacity
Availability
Class
ClassID (PK)
ClassName
Description
Booking
BookingID (PK)
CustomerID (FK)
FlightNo (FK)
PassengerName
DiscountID (FK)
Discount
DiscountID (PK)
Type
Description
Relationships
One Customer can make many Bookings (1–M)
One Flight can have many Bookings (1–M)
One Class can be used by many Flights (1–M)
One Discount can apply to many Bookings (1–M)
ERD Diagram
Make sure:
Each table is clearly labelled
PK = Primary Key
FK = Foreign Key
Use lines or crow’s foot notation to show the 1–M relationships
Mapping from ERD to Tables
After creating the ERD, the entities are changed into database tables. Each table has a Primary
Key (PK) that identifies each record and Foreign Keys (FK) that link tables together.
1. Customer Table
Description:
This table keeps information about customers who make flight bookings.
Primary Key: CustomerID
CREATE TABLE Customer (
CustomerID INT PRIMARY KEY,
Name VARCHAR(50),
Email VARCHAR(50),
Phone VARCHAR(20),
PostalAddress VARCHAR(100)
);
2. FlightClass Table
Description:
This table shows the different flight classes, such as Economy, Business, or First Class.
Primary Key: ClassID
CREATE TABLE FlightClass (
ClassID INT PRIMARY KEY,
ClassName VARCHAR(30)
);
3. Flight Table
Description:
This table stores details about each flight, including the flight number, date, and route.
Primary Key: FlightID
CREATE TABLE Flight (
FlightID INT PRIMARY KEY,
FlightNumber VARCHAR(10),
FlightDate DATE,
DeparturePoint VARCHAR(50),
ArrivalPoint VARCHAR(50)
);
4. Booking Table
Description:
This table stores all booking details made by customers for specific flights and classes.
Primary Key: BookingID
Foreign Keys: CustomerID → Customer, FlightID → Flight, ClassID → FlightClass
CREATE TABLE Booking (
BookingID INT PRIMARY KEY,
CustomerID INT,
FlightID INT,
ClassID INT,
BookingDate DATE,
TotalPassengers INT,
DiscountApplied BOOLEAN,
FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID),
FOREIGN KEY (FlightID) REFERENCES Flight(FlightID),
FOREIGN KEY (ClassID) REFERENCES FlightClass(ClassID)
);
5. Passenger Table
Description:
This table keeps information about all passengers for a booking, including their age and if they
are minors or seniors.
Primary Key: PassengerID
Foreign Key: BookingID → Booking
CREATE TABLE Passenger (
PassengerID INT PRIMARY KEY,
BookingID INT,
Name VARCHAR(50),
Age INT,
IsMinor BOOLEAN,
IsSenior BOOLEAN,
FOREIGN KEY (BookingID) REFERENCES Booking(BookingID)
);
6. FlightCapacity Table
Description:
This table manages how many seats are available for each flight and class, and how many have
been booked.
Primary Key: CapacityID
Foreign Keys: FlightID → Flight, ClassID → FlightClass
CREATE TABLE FlightCapacity (
CapacityID INT PRIMARY KEY,
FlightID INT,
ClassID INT,
TotalSeats INT,
SeatsBooked INT,
FOREIGN KEY (FlightID) REFERENCES Flight(FlightID),
FOREIGN KEY (ClassID) REFERENCES FlightClass(ClassID)
);
References
1. Eduvos. (2024). Database Management Systems Study Guide. Eduvos Learning
Management System (LMS). Retrieved from [Link]
2. Eduvos. (2024). Practical Assessment Task (PAT) Guidelines for Information Systems.
Eduvos Academic Resources.
3. Connolly, T., & Begg, C. (2019). Database Systems: A Practical Approach to Design,
Implementation, and Management (7th ed.). Pearson Education.
4. Coronel, C., & Morris, S. (2018). Database Systems: Design, Implementation, and
Management (13th ed.). Cengage Learning.
5. Oracle Academy. (2023). Database Design and SQL Fundamentals. Oracle Education
Foundation.
6. W3Schools. (2024). SQL Tutorial. Retrieved from [Link]
7. TutorialsPoint. (2024). Database Normalization. Retrieved from
[Link]