Most active commenters
  • zeroCalories(3)

←back to thread

121 points b-man | 11 comments | | HN request time: 1.871s | source | bottom
1. AnonHP ◴[] No.44026428[source]
Seems like this article places too much emphasis on normalization, which is appropriate for many cases, but may be a huge cost and performance issue for requirements like reporting. You may probably need different kinds of schema and data storage structures for different requirements in the same application, which in turn may result in duplicated data, but results in acceptable trade offs.
replies(3): >>44026517 #>>44026552 #>>44026719 #
2. ◴[] No.44026517[source]
3. weinzierl ◴[] No.44026552[source]
" Every base relation should be in its highest normal form (3, 5 or 6th normal form). "

If I remember my database lessons correctly there is no strictly highest normal form. It progresses from 1NF to BCNF, but above that it is more choosing different trade-offs.

Even below it is always a trade-off with performance and that is why we most of the time aim for 3NF, and sometimes BCNF.

replies(2): >>44026702 #>>44027374 #
4. moi2388 ◴[] No.44026702[source]
That’s what I was taught as well. And even then I use it more as a rule of thumb
5. zeroCalories ◴[] No.44026719[source]
Putting aside performance implications, I get kinda irritated by having to do joins for basic queries all the time.
replies(2): >>44030411 #>>44030636 #
6. plank ◴[] No.44027374[source]
There are big disadvantages from choosing e g. 5th normal form: any changing in business requirements leads to a big rewrite and data conversion. Never seen successful projects choosing beyond 3rd/BCNF.
7. sgarland ◴[] No.44030411[source]
Then don't use a relational database. Sorry for being rude, but joins are an integral part of the relational model. If you want a KV store, you should use a KV store; if you want a Document DB, you should use a Document DB.
replies(1): >>44055232 #
8. datadrivenangel ◴[] No.44030636[source]
If you're doing reporting, create a reporting view that does all those joins once!
9. zeroCalories ◴[] No.44055232{3}[source]
Sometimes I just wanna do some adhoc analysis and I need to do like four joins because some monkey decided to split everything into it's own table without thinking about the people that would actually have to use the db.
replies(1): >>44056601 #
10. sgarland ◴[] No.44056601{4}[source]
Your one-off analysis doesn’t trump the normal OLTP workloads.
replies(1): >>44061852 #
11. zeroCalories ◴[] No.44061852{5}[source]
I regularly have to do queries. I'm trying to understand my non-trivial product to figure out what work items will have, or have had, impact. Sometimes I'm in a meeting and need to do some real time analysis. My ability to understand and use the data is actually more important than a slightly higher database bill. And I thought we were ignoring the poor performance of normalization?