A denormalized Employee table stores each department's phone number redundantly on every row that references it — a textbook transitive dependency. This simulator renders that table in 3D next to its normalized 3NF equivalent (a separate Department table joined by foreign key) and lets you run the same insert, update and delete operations against both at once. Update a department's phone and only the first denormalized row gets rewritten, leaving the rest visibly stale in red; delete the last employee of a department and the denormalized copy loses the department's phone number outright, while the normalized Department row — never touched by an Employee delete — keeps it forever. Live counters track denormalized anomalies, data-loss events and redundant stored copies, while the normalized counters stay pinned at zero for the whole run.