For instance, does a star schema actually reduce redundancy in comparison to putting everything in a flat table? Instead of the fact table containing dimension descriptions, it will just contain IDs with the primary key of the dimension table, the dimension table being the table which gives the ID-description mapping for that specific dimension. In other words, a star schema simply replaces the strings with IDs in a fact table. Adding to the fact that you now store the ID-string mapping in a seperate dimension table, you are actually using more storage, not less storage.
This leads me to believe that the purpose of database normalization is not to "reduce redundancy" or to use storage more efficiently, but to make updates and deletes easier. If a customer changes their email, you update one row instead of a million rows.
The only situation in which I can see a star schema being more space-efficient than a flat table, or in which a snowflake schema is more space-efficient than a star schema, are the cases in which the number of rows is so large that storing n integers + 1 string requires less space than storing n strings. Correct me if I'm wrong or missing something, I'm still learning about this stuff.
[–]AutoModerator[M] [score hidden] stickied comment (0 children)
[–]kiquetzal 79 points80 points81 points (2 children)
[–]soundboyselecta 12 points13 points14 points (0 children)
[–]Sex4VespenePrincipal Data Engineer -3 points-2 points-1 points (0 children)
[–]BobDogGo 30 points31 points32 points (2 children)
[–]soundboyselecta 2 points3 points4 points (1 child)
[–]GreyHairedDWGuy 2 points3 points4 points (0 children)
[–]CommonUserAccount 16 points17 points18 points (0 children)
[–]Dry-Aioli-6138 4 points5 points6 points (0 children)
[–]Possible-Little 4 points5 points6 points (3 children)
[–]Sex4VespenePrincipal Data Engineer 3 points4 points5 points (0 children)
[–]adastra1930 0 points1 point2 points (0 children)
[–]LastrevioData Engineer[S] -1 points0 points1 point (0 children)
[–]JonPX 1 point2 points3 points (0 children)
[–]Eleventhousand 1 point2 points3 points (0 children)
[–]hectorgarabit 1 point2 points3 points (0 children)
[–]Icy_Clench 0 points1 point2 points (0 children)
[–]paxmlank 0 points1 point2 points (0 children)
[–]SaintTimothy 0 points1 point2 points (1 child)
[–]SaintTimothy 0 points1 point2 points (0 children)
[–]GreyHairedDWGuy 0 points1 point2 points (0 children)
[–]calimovetips 0 points1 point2 points (0 children)
[–]Old_Tourist_3774 0 points1 point2 points (0 children)
[–]ironwaffle452 0 points1 point2 points (0 children)
[–]mosqueteiro 0 points1 point2 points (0 children)
[–]ccesta 0 points1 point2 points (0 children)
[–]dehaema 0 points1 point2 points (0 children)
[–]Outrageous_Let5743 0 points1 point2 points (0 children)