A3.2.6 Construct a database normalized to 3NF for a range of real-world scenarios.
A3.2.6 Construct a database normalized to 3NF for a range of real-world scenarios.
• Examples may include library management, hospital management, e-commerce platforms, school management, employee management, inventory management, police crime reporting
Constructing a Database Normalized to Third Normal Form (3NF)
The Big Idea
To construct a database normalized to Third Normal Form (3NF) means to design a schema in which data is logically grouped, redundancy is eliminated, and integrity is enforced. This is done by applying normalization rules step by step—1NF, 2NF, and finally 3NF—to remove structural flaws like duplicate data, partial dependencies, and transitive dependencies.
In this article, we will:
Explain how to construct a 3NF database schema,
Walk through three real-world scenarios (library, school, and e-commerce),
Show how data is split across tables using primary, foreign, and composite keys,
Emphasize functional dependencies and the removal of anomalies.
Step-by-Step: How to Normalize a Database to 3NF
Step 1: Requirements Gathering
Identify entities (real-world objects like Book, Student, Order)
Identify attributes for each entity
Determine functional dependencies (which attributes depend on which keys)
Step 2: Apply First Normal Form (1NF)
Ensure atomicity: all attributes hold indivisible values.
Remove repeating groups: every field holds one value per record.
Step 3: Apply Second Normal Form (2NF)
Ensure the table is in 1NF.
Remove partial dependencies: non-key attributes must depend on the whole primary key (especially important if the key is composite).
Step 4: Apply Third Normal Form (3NF)
Ensure the table is in 2NF.
Remove transitive dependencies: non-key attributes must depend only on the primary key, not on another non-key attribute.
Multiple orders → duplicated customer and product data
3NF Schema:
Customers
customer_id
name
C1001
Maria Lopez
Products
product_id
name
price
P101
Headphones
89.99
Orders
order_id
customer_id
order_date
O5001
C1001
2025-05-25
OrderDetails
order_id
product_id
quantity
O5001
P101
2
Normalization Results:
Customer and product info stored once
Price is not duplicated; tied to product_id
Quantity and order relations are cleanly defined via a junction table
Great observation—and a fair question.
I prioritized three scenarios—library, school, and e-commerce—to provide distinct structural examples: lending systems, class-based enrollments, and transactional commerce. Each demonstrated different kinds of entity relationships, composite keys, and normalization challenges.
But you're absolutely right: police crime reporting is one of the listed scenarios in the specification, and it's rich with real-world normalization issues, especially involving multi-valued dependencies, event logging, and role-based relationships.
Here’s a full 3NF-normalized schema for a police crime reporting system:
Makes queries faster and more reliable by reducing unnecessary joins and duplicates.
Summary
To construct a 3NF database:
Start from real-world data
Identify entities and relationships
Normalize progressively from 1NF → 2NF → 3NF
Use primary keys to uniquely identify records and foreign keys to link related data
Eliminate partial and transitive dependencies
Real-world applications like library management, school systems, and e-commerce platforms benefit greatly from this structured, rule-based approach to schema design. A properly normalized database leads to improved consistency, scalability, and long-term maintainability.