AS & A Level Computer Science (9618)

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