INTERMEDIATE · 12 MIN · FREE LESSON
Normalization 1NF to BCNF
Explore normalization 1nf to bcnf through a visual, step-by-step model.
Loading interactive lesson…
INTERMEDIATE · 12 MIN · FREE LESSON
Explore normalization 1nf to bcnf through a visual, step-by-step model.
Loading interactive lesson…
Uppercase attribute symbols and asserted functional dependencies. The model computes closures, every minimal candidate key, prime attributes and normal-form violations. Dependencies are domain rules, not inferred from a tiny sample. atomicCells controls the explicit 1NF assumption. It demonstrates one lossless BCNF split, not a complete automatic schema designer.
Loading architecture diagram…
Functional dependencies are asserted domain invariants. Repeated sample values alone do not prove them.
A ≤ 8 attributes, F ≤ 16 asserted functional dependencies. Candidate-key enumeration is exponential; this is not a large-schema optimizer.
Dependency applicability checks, seed 42. Plotted sample sizes respect each lesson’s explicit input limits.
Keyboard: Space play/pause · ←/→ step · R restart · 1–5 speed. Reduced motion disables transitions.
A repeated customer address is an update problem; normal forms express the dependencies behind it.
Inspect the relation or dependency state, then follow each validated decision. Use presets first; custom JSON preserves the displayed schema and bounds.
Start with atomic domains for 1NF. Compute attribute closure by repeatedly applying asserted functional dependencies. Enumerate all minimal candidate keys, then mark every attribute that appears in a candidate key as prime. 2NF forbids non-prime attributes depending on a proper subset of a candidate key. 3NF permits a nontrivial dependency when its determinant is a superkey or the dependent attribute is prime. BCNF requires a superkey determinant for every nontrivial dependency.
Use AB → C and C → B on relation ABC. Candidate keys AB and AC make every attribute prime: 3NF holds, but C is not a superkey, so BCNF fails. Compare A → B and B → C, then inspect the first lossless split. Predict the next constraint, match or dependency decision before advancing.
The player names its measured operation and reports the core model cost. Separate fixture construction and index maintenance from the operation being measured; the displayed assumptions name each bound. These are teaching algorithms, not real database latency benchmarks.
Four language references implement the core mechanism over validated example data. The reference containers illustrate the declared model scope; real persistence, distributed coordination, recovery and provider limits require their own implementation. The interactive prose identifies baseline references or additional player experiments explicitly.
Reducing insertion, deletion and update anomalies while choosing an appropriate integrity/performance trade-off.
Dependencies are domain rules, not coincidences in sample rows. A lossless BCNF split need not preserve every dependency locally. The player demonstrates one split and its shared-determinant lossless condition; it does not claim a complete dependency-preserving decomposition.
Explain a valid result, name the governing invariant and distinguish logical semantics from a physical implementation.
MAKE IT STICK
Progress saves on this device and merges with your account after sign-in.
0 / 5000 · Saved on this device; synced when signed in.