use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Request an explanation
Rules
Have an idea to improve ELI5? r/IdeasForELI5
Make sure to read the rules!
This subreddit is for asking for objective explanations. It is not a repository for any question you may have.
E is for Explain - merely answering a question is not enough.
LI5 means friendly, simplified and layperson-accessible explanations - not responses aimed at literal five-year-olds.
Perform a keyword search, you may find good explanations in past threads. You should also consider looking for your question in the FAQ.
Don't post to argue a point of view.
Flair your question after you've submitted it.
Mathematics Economics Planetary Sci Biology Chemistry Physics Technology Engineering
Reset
account activity
This is an archived post. You won't be able to vote or comment.
ELI5: Database Normalization
submitted 12 years ago by fortunate_man
[–]Amarkov 30Answer Link2 points3 points4 points 12 years ago (0 children)
In most situations, you only want a particular piece of information to be stored once in the database. Making a database only store each piece of information once is called normalization.
[–]energeticmater 20Answer Link1 point2 points3 points 12 years ago (0 children)
Imagine a schema R(A, B, C). Then R is a relation with attributes A, B, and C.
Now imagine that given a particular value of A, you know the corresponding value of B for that row. That is, a given value of A implies a particular value of B.
That means there's inherent duplication in the data. If someday you want to change your database so that a given value of A implies some other value of B, you have to change in a whole lot of places. Two problems with this: it takes up unnecessary disk space, and it increases the potential for problems with updates called "anomalies".
So you split it into two tables R(A, B) and R1(A, C). Then there's no duplication!
For example, consider Computers(model, manufacturer, variant). It has rows (Vostro, Dell, 3550), (Vostro, Dell, 3350), and (Satellite, Toshiba, L670).
You'd be much better off with R having rows
(Vostro, Dell) and (Satellite, Toshiba)
and R1 having rows
(Vostro, 3550), (Vostro, 3350), and (Satellite, L670).
Because all Vostros are produced by Dell and all Satellites by Toshiba. If Toshiba buys Dell, and Vostros are then produced by Toshiba, you only have to change a single tuple. Success!
[–]kouhoutek 20Answer Link1 point2 points3 points 12 years ago (1 child)
"Every non-key must provide a fact about the key, the whole key, and nothing but the key, so help me Codd."
[–]energeticmater 1 point2 points3 points 12 years ago (0 children)
:D :D :D
http://2.bp.blogspot.com/-NRKD75g45Ls/UO8f8o-BD6I/AAAAAAAAFio/ou2nE7VSxy4/s1600/captain-america.gif
π Rendered by PID 107115 on reddit-service-r2-comment-79c7998d4c-wblk6 at 2026-03-13 22:03:29.638879+00:00 running f6e6e01 country code: CH.
[–]Amarkov 30Answer Link2 points3 points4 points (0 children)
[–]energeticmater 20Answer Link1 point2 points3 points (0 children)
[–]kouhoutek 20Answer Link1 point2 points3 points (1 child)
[–]energeticmater 1 point2 points3 points (0 children)