AS Level · Topic 8
Normalize a relational database
Use functional dependencies, keys, SQL, and transaction rules.
Lessons distinguish AS topics 1–12 from A Level topics 13–20. Examples include Cambridge pseudocode and Python.
Identify what determines each fact
A primary key identifies a row, while a functional dependency says that one set of attributes determines another. If OrderID determines CustomerID and CustomerID determines CustomerName, repeating the name in every order creates a transitive dependency.
Normalization separates related facts to reduce update, insertion, and deletion anomalies. Keep a key connecting the tables after decomposition. Splitting a table without preserving its relationships does not produce a useful design.
Ask SQL for the required result
SELECT retrieves data; JOIN relates tables; WHERE filters rows; GROUP BY forms groups for aggregates. The example counts orders per customer. Check whether customers with no orders should appear before choosing an inner or outer join.
A database management system also enforces constraints and manages concurrent changes. Related updates, such as reducing stock and recording a sale, should not leave an inconsistent partial result when one operation fails.
SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID;
Check yourself
Why move a customer's address out of repeated order rows?Show answer
It avoids updating many copies of the same fact and leaving inconsistent addresses.
References used to build these lessons
We used these official documents as references when building this course's lessons. They are the sources for the syllabus structure and course requirements.
Cambridge International · 9618 · Exams 2027–2029