CORRECTIONS: Expand this comment to see corrections. CONTENTS 0:00 What is database normalization? 3:55 First Normal Form (1NF) 10:24 Second Normal Form (2NF) 16:08 Third Normal Form (3NF) 20:29 Fourth Normal Form (4NF) 23:47 Fifth Normal Form (5NF) 26:41 Summary and review *** CORRECTIONS *** In the Fourth Normal Form (4NF) section, at 23:27 the primary key for the Model_Colors_Available table should appear as {Model, Color}; the primary key for the Model_Styles_Available table should appear as {Model, Style}. Also, the video's informal definition of 4NF - which states that multivalued dependencies on a non-key aren't allowed - is a little too simplistic. I should have said that what's forbidden are "non-trivial" multivalued dependencies on a non-key. "Trivial" multivalued dependencies on a non-key - like Model ->> Color in the case of the Model_Colors_Available table - are fine! A multivalued dependency is considered trivial if the attribute(s) on the left side of the arrow (in this case, Model) and the attribute(s) on the right side of the arrow (in this case, Color) together make up all the attributes in the table. In the First Normal Form (1NF) section, at 4:42, since the column heading in the query results is Beatle, the query itself should have been shown as selecting Beatle. (The query is erroneously shown as selecting "Member_Name".) In the Fifth Normal Form (5NF) section, the summary at 26:16 says that a table (call it T) violates 5NF if it can be "logically thought of as being the result of joining some other tables together." I should have clarified that it if those "other tables" all have the same key as the table T, then it doesn't count as a violation! For example, the fact that a table with columns ( Product_ID (PK), Product_Name ) joins to a table with columns ( Product_ID (PK), Product_Color ) to yield a table PRODUCT which has columns ( Product_ID (PK), Product_Name, Product_Color ) doesn't mean that PRODUCT violates 5NF. More generally, I now think there was a little too much looseness in my presentation of 5NF; I'll do a standalone 5NF video at some point that describes 5NF in a less question-begging way. The same goes for 4NF!
@@thomasst.martin2522 Hi, I talked about it at 19:11 and 27:40. Also I did an entire video on Boyce-Codd Normal Form: th-cam.com/video/VWnKUKH4tLg/w-d-xo.html
I agree that going up to 5th normal form is a good decision. 6NF is just bonkers and aside from very specific use cases can be ignored. Btw, does the following fall under 5NF or not?: Your skill rating value for players went from 1 to 9, but any type of numeric field used would allow for either less or more distinct values to be entered. '1 to 9' is a data set as well, and should have been captured in a separate table Skill_Levels. Does that step fall under 5NF? I feel it does. It's data, it should be in a table, not 'hard baked' into code.
Sometimes I hear explanations such as this and wonder how other people have such a difficult time expressing the same idea. Yours is so concise and well broken down, avoiding convoluted terms and making good use of analogies. Thank you Decomplexify.
Thanks, I appreciate that. I was doing everything I could to make it simple! Because it is simple (even if it often gets taught in a way that obscures the simplicity).
It's usually because the people explaining it didn't properly learn it themselves. The example used in this video ergonomically follows you on internalizing concepts that are purely theoretical. This is why I love practice so much.
@@adamesd3699 I think we misunderstood. It is fine, but my point was that after 20 years of experience, this kind of knowledge looks quite straightforward 🤠
@@siimkask14 don't need that negativity son. Maybe they were trying to find good ways to explain the concept, used to working to 3NF but not 5NF, who knows. Not everyone is out to get you mate.
What a gem you are!! 5 normalization rules in under 30 minutes, so clearly. Just WoW! Thanks a lot for making me understand all of it. You deserve 2.24million subscribers not 22.4K.
I've used SQL databases for longer than a quarter century. Even longer ago, I studied this as part of my CS education. I saw this video in my stream just now, and thought I'd refresh myself. I was very pleased as it confirmed what I've been doing in my professional career. I guess something stuck deep inside my neurons so many years ago! Excellent video, very well explained with very good examples! Great work!
I took some courses that long ago, but have really only been working with SQL for 16 years. And yes, I have apparently learned it well, as I key everything, to link across tables. Like Joe is Person ID 7, I can add Person ID 7 to records in other tables that I want associated with Joe. Join on key Person ID to match them up.
Have the same experience. I was taught this at Uni long time ago. I though I forgot it but still intuitivelly respecting up to 4thNF all principles. Sometimes even 5th. Great video. Thank you.
I have a similar story, as well. I don't actually ever remember learning the _terminology_ (let alone an explicit enumeration of the definitions) of these various normal forms, but I did develop (from my original SQL class, 30+ years ago? Or from picking it up on the job? Some of each? I don't remember) an intuitive sense for all the _concepts_ here... and I think I do alright at designing well-normalized databases, on the occasions when I have reason to do so... but this'll still help (in particular, knowing the terminology!)
After working with databases for a short period time and looking at some running examples I was at least at the 4th NF level. After I explored the topic 5th NF now seems natural. I often wonder why people struggle with the idea of data independence.
i didn't even know these concepts existed, and somehow my DB designs were at least 3NF... i don't understand why people don't sit down to think about the use cases of their designs, or try them with dummy data
This is the best explanation I have seen here. Salute, sir; this was an awesome teaching lesson. i want others to like my comment so each time i will be reminded to come back right here and watch it over and over. cheers
in all the other videos i have seen on normalization, they are only using complex terms and there is no explanation. THIS ONE IS THE BEST VIDEO ON NORMALIZATION. you earned a subscriber.
A very long time ago (1996ish) the two guys who did all of the non-AS400 report writing both quit at our company. They were friends of mine, and both told their managers that I at least knew how to code in BASIC, and as all the operations reporting was in VB (mostly excel, some Access), I replaced both. I used their old Excel-based reporting system for awhile, but HEAVILY gravitated to Access (we weren't IT, so "When all you have is a hammer..."). Seeing all this laid out like this is kind of refreshing to see. Normalization -- self-taught as I was -- eventually got so ingrained me that I randomly build databases to organize things at home. Thanks for this. It's good stuff.
using this videos for university... and it's clear htat you know the subject to perfection, otherwise you wouldnt be able to explain it so brightly clearly. Thank you very very much man.
I had to read a chapter on normalizations for my database class and I was just lost with the usage of its jargons. This video helped it alot! Simple and thorough.
Subscribed! I'm currently studying this subject because I've an exam in 2 days but, I've decided that I will continue watching your videos. The way you explain things is out of the ordinary. Thank you!
I've worked with Relational Databases since 1983 (when IBM released DB2) and this is one of the best and clearest explanations of normalization I've ever seen.
Seriously, I can't thank you enough for this, the database course in my university made this look like a convoluted mess and you just explain it so simply like that
I've done the LinkedIn Learning videos my university provided, nothing. I've powered through the reading materials left and right, still nothing. I've tried other TH-cam videos, and surprise, still nothing. Your video somehow makes it make sense. I've been struggling with these concepts for 2 weeks now. Thank you for putting it in basic terms!
I'm so glad my video helped you. When I made the video I was very conscious of wanting to make the explanations as simple as they could possibly be, so that anybody could understand them, so I tried very hard to do just that. For me that's what all teaching should strive for. It's really gratifying to read that the video has succeeded in giving you a good understanding of these concepts.
I thought I would need to wait several semesters until my uni course on databases to learn about normal forms, because I didn't find a good source online, but here you are - a great and easy to understand explanation to get me started. Excellent.
This was immensely useful as the rigorous, mathematical explanation given to me in university wasn't clear enough. Thank you! You've got a new subscriber, and I hope I get to enjoy your future content :)
I watched this show because I enjoy watching people use database programs and documents that could be used in microcomputers. I have been using Microsoft Access since 2002 with my first microcomputer and learned it all by myself. This show explains the acts of normalization and non-normalization concise, precise, and directly to the point that even a dumb man could understand this show. I will continue to use my relational Microsoft Access [2021] database, but the normalization lessons will work [nicely] in planning a database file.
Though not part of the normal forms, I would also add don't use something that might change as a primary key, such as player name if players are allowed to change their names. Then you have to update all the tables keyed by that player. Better to invent a player ID number, use that as key and store the (name,id) pairs in a table.
I really wish I were as eloquent as the creator of this brilliant video. Literally none of my questions pertaining to the subject are left unanswered. Thank you!
So clear explanation. Well done. I read this long time in university, but I have long since forgot the definitions. Thankfully I have always ended up fully normalized 3NF designs since it makes intuitive sense. Having met non-normalized designs at work, the pain those caused were enormous and stalled the development (eventually bankrupting the company)… FUBAR, it was.
Really awesome video. I'm taking a class on relational database design and the lecture I attended on this topic was very convoluted. Your presentation and examples cleared everything up for me, thank you.
My pleasure. It's one of those topics that somehow lends itself to poor and convoluted explanations, so I'm glad if I succeeded in getting it across clearly.
Firstly, this is a delightful and clear explanation - thank you! It makes me nostalgic for the time when I would regularly hear such formalisms discussed in corporate IT settings. One of the difficulties you must encounter when teaching these concepts in the current era is that contemporary thinking in software engineering encourages designers to think of databases as _merely_ "storage" or "persistence" for an individual application. An implementation detail, trivial in to the real work of the system. Whereas Ted Codd and Chris Date conceived of the database as the information system itself. It would enforce universal logic and consistency. It was the main event. Applications that made use of the data would come and go. And they would adapt themselves to its schema, and its declared and transparent logic. (Transparent in its original sense, not in the way it has come to means its opposite - a black box.) Codd didn't predict a world in which each application had its own database, and there was money to be made as an "enterprise data integration and migration consultant". My career thus far has brought me to the disheartening conclusion that a really useful information system in an organization of any size or scale takes so much time, effort, and co-ordination to build (and evolve) that before it has reached even a third of its potential, there are already multiple generational conflicts around its intent and purpose.
I glad you liked the explanation; and thank you for those astute, historically-informed observations, which I very much agree with! I regard a database as a kind of template for expressing meanings. A lot of other people don't see it that way at all: they see it as a sort of parking lot for data. & as far as your disheartening conclusion goes, I can't really disagree with it. There's always going to be a drive towards a sweeping, unified information system (or an EDW) - because people who rely on information really could benefit from one of those - but in my career to date I haven't yet seen such a thing work out in the way people hoped and imagined it would.
@@decomplexify Thanks! If I were to be a little bit less disheartening, I'd say that the potential of RDBMSes is not even close to being fully tapped. And that the difficulty is that management dreams that technology will solve all of their human problems. In reality, we have to solve the human problems first. It's only then that the technology can begin to deliver on the wonders it promised. 😁 Thanks for doing a first-rate job at solving one of the most difficult human problems - understanding and communication!
I find it useful to review this from time to time (super useful video; thanks!)... and yet, don't feel a need to go through the whole thing when I do, so, here are the summaries of the various forms -- for my own sake, and/or anyone else who might find this helpful: 1st NF: 10:00, 26:58; 2nd NF: 12:56, 27:16; 3rd NF: 18:47, 27:25 (related: Boyce-Codd Normal Form: 19:12, 27:37); 4th NF: 23:03, 27:49; 5th NF: 26:16, 28:00.
Seriously the best video explanation. Other youtube videos only cover a few cases. Or don't explain each normalization clearly. Great videos. I subscribed. I am a front-end dev expanding my skillset to more full stack. Databases are my weakest area. Really appreciate the in depth well thought out content!
Topics I am interested in: Underlying mechanisms behind database data storage (B+ trees, LSM SSTables Bloom Filters, compaction, write ahead logs, error recovery, etc...), data modeling in noSQL DBs (Is there anything like normalization / best practices for GraphDBs, blob storage, etc... ), denormalization and examples, data processing pipeline, and when to chose each database type for a project. General DB knowledge is always appreciated as well. If you are looking for video ideas outside of the DB world, then I have been interested in pattern matching algorithms and data structures like aho-corasick automaton, Suffix trees with linear time construction (specifically the construction in linear time). Thanks!
@@tenthlegionstudios1343 Thanks, I really appreciate the comment, and out of the various topics you've mentioned, the one I'm most qualified to talk about is "denormalization and examples" - this is something I've been meaning to do a video about for some time. Stay tuned!
Definitely the best explanation ive seen for these normal forms!!! I learned this in school and after a while I forget the rules, I just know whats needed in a table. I'm glad to take this refresher and take note of them. I find after designing many tables, these rules tend to happen organically because if not you run into too many problems.
I remember learning this on a Systems Analysis course in 1985. Inefficient databases could have a real impact on performance whereas today poor database design can be masked by more powerful hardware.
Man, i wish this video had been uploaded around 6 years ago, at the time when i was in second year with shitty 3-hour lecture about normalization. This is the clearest explanation I've ever seen so far on youtube
There are too many bad explanations out there, which is why I figured it was worth putting in the effort to come up with a good one. Wish I'd been there for you 6 years ago but, well - better late than never.
This was so helpful! Broke down this topic without using too much technical jargon, had great examples, great explanations and nice drawings! Thank you so, so much!!! I like how you gave a rule-of-thumb for each 1NF, 2NF, 3NF, 4NF, 5NF and the summary! Superb video!
So much better than the explanation given in my Database Systems class. They explained everything with alpha's and beta's in set notation. Thank you for this!
This is EXCELLENT! So easy understand without unnecessary mathematical rigor for us mortals ;-). Thank you Mr. Decomplexify for those awesome explanations.
The whole thing made so little sense to me when i learned it from the books and i spent hours. So i intiutively chose „break down to avoid redundancy“ style in so many cases. Now, with 25 min video i finally learned it properly. Thank you :)
This video is so great. I am a relatively new business analyst and have been struggling with a non-normalized legacy database that has been causing a lot of headache at my job. Can't wait to get in there and get it fixed up after watching this! Thank you Decomplexify
This is awesome. Much appreciated 🙏 Edit: would love to see a similar decomplexify centred on the models used in reports created via data analytics? How to approach creating the optimum data set in terms of structure, such as a star model versus other options whose names I haven't yet looked up 😊
There are so many blog posts trying to explain this concept, and yet nothing made me understand which frustrates me so much. This one is the silver lining to me.
Great video! I would say the issue of repeating groups in 1NF isn't clear about the repeating group. A repeating group is more than a multivalued attribute. It is a repeating group because, in your example, the quantity and the item belong together. In the first row, player jdog21 isn't just associated with multiple quantities and multiple items. The quantity and the item are associated (e.g., 2 with amulet and 4 with ring are correct, while 4 with amulet and 2 with ring would be incorrect). A multivalued attribute should be separated into a different table, as you showed. But, if the quantity and item were not related, then a three table design would be better {(player), (player, item), (player, quantity)} so the 4NF problem isn't created. What makes it a repeating group is that the association of the first value of quantity with the first value of item, the second value of quantity with the second value of item must be maintained.
i think this is the best explanation of database normalization. especially for the beginners like me. i saw so many tutorials and read a chapter of this topic but couldn't be able to get this steps so easily. but this tutorial helped me to understand those steps so smoothly.
Normalization your gateway to “left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on”
Mhm. I think it's always good to start by striving for 5NF... and then work backwards from there, denormalizing with extreme care to optimize for specific cases. I'll violate BCNF and stick an attribute in there that doesn't depend on the key, knowing it increases write complexity, if it improves read performance on a table where reads are occurring thousands of times more frequently than writes do. But I ALWAYS start by designing the fully normalized schema. In other words: sometimes DEnormalize, NEVER *fail* to normalize.
Good spot! Sorry about that, the primary key for the Model_Colors_Available table should have been shown on that screen as {Model, Color}; the primary key for the Model_Styles_Available table should have been shown as {Model, Style}. I'll see if I can add an annotation to the video that corrects this.
Thanks for this! Like others, I'm studying for a databases exam and needed a fresh explanation of normalisation. This video helped me refine my notes and cement it more in my brain.
Watch my Denormalization video if you want some insight into cases where relaxing the normalization requirement might be desirable: th-cam.com/video/4bTq0GdSeQs/w-d-xo.html
I'm very glad to see someone able to articulate this somewhat esoteric topic so eloquently and succinctly! My initial foray into DB started at home on a PC with a copy of IBM's DB2 for DOS that a dad of one of my mates... ahem... acquired for me. This lead to an entire lifetime of love for and a career in databases and data integrity, starting with teaching database theory and design at my university as a postgrad to finally running my own IT school where I teach database theory to the advanced highschoolers. Educative content such as this is so valuable to those coming after us... Keep up the top notch work!
Not that esoteric, I'm learning this in my first year CIT diploma. It's extremely frustrating that the same problem of all other STEM field and academia in general is here too, with such esoteric language and confusing explanations, but the internet makes that a much easier thing to combat nowadays at least.
Good explanations! One criticism: I was confused what First Normal Form (INF) meant until I realised that the letter I was a digit 1. It might be better to use a font that makes these two characters more easily distinguished.
Heroes don't need to have some magic superpower, explaining to others this topic and other topics clearly is a great superpower to have. I don't know how to reward you enough for the explanations!
THANK YOU! You explain this in a way that is practical and easy to follow. I much prefer this method of learning (visually and with examples) to memorizing a bunch of formal definitions. I understand learning about theory is good, but to really GET it I think you need someone to explain concepts like you do.
I have spent half afternoon studying the DB normal forms, and wish I had found this video before all the others I have watched. This was in fact the only worth watching, so far.
Thank you for this. I leant relational database practically (using tools like Airtable etc) but never leant it theoretically. This is is so easy explanation who wants to know the basics.
I took the mandatory database course as part of my CS degree I didn't like one minute of it. What a the course failed to explain - in a sensible way - over 10 lectures, on how to model your tables and the relations between attributes you've summarized perfectly in 30 minutes. Oh how I wished this video was made 10 years ago. Great stuff
you are amazing English wasn't my first language so when in university they teach with big fancy words it gets me confused and I feel stupid for not understanding but when you explain it in non formal definitions it makes it simple and easy to understand thanks
Thanks so much for your comment. I'm really happy that the video helped you, I am always trying to find ways of making my explanations as easy to understand as possible. If I've managed to help you understand the material in ways that other instructors haven't, that's mission accomplished from my point of view!
CORRECTIONS: Expand this comment to see corrections.
CONTENTS
0:00 What is database normalization?
3:55 First Normal Form (1NF)
10:24 Second Normal Form (2NF)
16:08 Third Normal Form (3NF)
20:29 Fourth Normal Form (4NF)
23:47 Fifth Normal Form (5NF)
26:41 Summary and review
*** CORRECTIONS ***
In the Fourth Normal Form (4NF) section, at 23:27 the primary key for the Model_Colors_Available table should appear as {Model, Color}; the primary key for the Model_Styles_Available table should appear as {Model, Style}. Also, the video's informal definition of 4NF - which states that multivalued dependencies on a non-key aren't allowed - is a little too simplistic. I should have said that what's forbidden are "non-trivial" multivalued dependencies on a non-key. "Trivial" multivalued dependencies on a non-key - like Model ->> Color in the case of the Model_Colors_Available table - are fine! A multivalued dependency is considered trivial if the attribute(s) on the left side of the arrow (in this case, Model) and the attribute(s) on the right side of the arrow (in this case, Color) together make up all the attributes in the table.
In the First Normal Form (1NF) section, at 4:42, since the column heading in the query results is Beatle, the query itself should have been shown as selecting Beatle. (The query is erroneously shown as selecting "Member_Name".)
In the Fifth Normal Form (5NF) section, the summary at 26:16 says that a table (call it T) violates 5NF if it can be "logically thought of as being the result of joining some other tables together." I should have clarified that it if those "other tables" all have the same key as the table T, then it doesn't count as a violation! For example, the fact that a table with columns ( Product_ID (PK), Product_Name ) joins to a table with columns ( Product_ID (PK), Product_Color ) to yield a table PRODUCT which has columns ( Product_ID (PK), Product_Name, Product_Color ) doesn't mean that PRODUCT violates 5NF. More generally, I now think there was a little too much looseness in my presentation of 5NF; I'll do a standalone 5NF video at some point that describes 5NF in a less question-begging way. The same goes for 4NF!
4:42
You're selecting "Member_Name" column, but in the result drawing the column name is "Beatle".
@@ScorpioHR You're the first person who's noticed that! Thanks, I'll include a correction in the pinned comment.
How come you didn’t include Boyce-Codd between 3rd and 4th?
@@thomasst.martin2522 Hi, I talked about it at 19:11 and 27:40. Also I did an entire video on Boyce-Codd Normal Form: th-cam.com/video/VWnKUKH4tLg/w-d-xo.html
I agree that going up to 5th normal form is a good decision. 6NF is just bonkers and aside from very specific use cases can be ignored.
Btw, does the following fall under 5NF or not?:
Your skill rating value for players went from 1 to 9, but any type of numeric field used would allow for either less or more distinct values to be entered.
'1 to 9' is a data set as well, and should have been captured in a separate table Skill_Levels. Does that step fall under 5NF? I feel it does. It's data, it should be in a table, not 'hard baked' into code.
Working with DBs 25 years (since SQL6.5). This is one of the most complete and clear explanation I have seen
in my first proper job, the content of these 30 minutes was basically all i needed to know to be a "specialist in database design" :D
Sometimes I hear explanations such as this and wonder how other people have such a difficult time expressing the same idea. Yours is so concise and well broken down, avoiding convoluted terms and making good use of analogies. Thank you Decomplexify.
Thanks, I appreciate that. I was doing everything I could to make it simple! Because it is simple (even if it often gets taught in a way that obscures the simplicity).
@@decomplexify This is an excellent video. Thanks.
It's usually because the people explaining it didn't properly learn it themselves. The example used in this video ergonomically follows you on internalizing concepts that are purely theoretical. This is why I love practice so much.
Totally agreed!
hard to call the video concise when he brings up atleast 1381938 different analogies throught the video
I’ve been building databases for over 20 years and this is one of the simplest and clearest explanations I’ve ever seen.
Why did you watch this if you have been working for 20 years with DB? 😄
@@HubertoomIt’s even worse than that. I’m re-enjoying cartoons I last watched as a child. 🤓
@@adamesd3699 I think we misunderstood. It is fine, but my point was that after 20 years of experience, this kind of knowledge looks quite straightforward 🤠
@@Hubertoomits because hes lying
@@siimkask14 don't need that negativity son. Maybe they were trying to find good ways to explain the concept, used to working to 3NF but not 5NF, who knows. Not everyone is out to get you mate.
this is the clearest explanation about database normalization so far. You have my gratitude
This guys is great, I wish he had more videos
If you needed a stupid video on yutube to explain a complex topic you were an idiot to start and nothing will help you.
😮this guys explanation is amazing
bro did a resume of more then 3 years of me studying databases xD university programs are trash fr
You summarized 2 whole days worth of lectures into 20 mins, thank you!!!
Someone give this guy a teacher's award - One of the best breakdowns of a difficult subject I have seen
What a gem you are!! 5 normalization rules in under 30 minutes, so clearly. Just WoW! Thanks a lot for making me understand all of it. You deserve 2.24million subscribers not 22.4K.
I've used SQL databases for longer than a quarter century. Even longer ago, I studied this as part of my CS education. I saw this video in my stream just now, and thought I'd refresh myself. I was very pleased as it confirmed what I've been doing in my professional career. I guess something stuck deep inside my neurons so many years ago!
Excellent video, very well explained with very good examples! Great work!
Thank you, I appreciate that!
I took some courses that long ago, but have really only been working with SQL for 16 years. And yes, I have apparently learned it well, as I key everything, to link across tables. Like Joe is Person ID 7, I can add Person ID 7 to records in other tables that I want associated with Joe. Join on key Person ID to match them up.
Have the same experience. I was taught this at Uni long time ago. I though I forgot it but still intuitivelly respecting up to 4thNF all principles. Sometimes even 5th.
Great video. Thank you.
I have a similar story, as well. I don't actually ever remember learning the _terminology_ (let alone an explicit enumeration of the definitions) of these various normal forms, but I did develop (from my original SQL class, 30+ years ago? Or from picking it up on the job? Some of each? I don't remember) an intuitive sense for all the _concepts_ here... and I think I do alright at designing well-normalized databases, on the occasions when I have reason to do so... but this'll still help (in particular, knowing the terminology!)
A lot of these normalisation forms once you've learnt them just seem so natural that it's hard to imagine not doing them.
After working with databases for a short period time and looking at some running examples I was at least at the 4th NF level. After I explored the topic 5th NF now seems natural. I often wonder why people struggle with the idea of data independence.
i didn't even know these concepts existed, and somehow my DB designs were at least 3NF... i don't understand why people don't sit down to think about the use cases of their designs, or try them with dummy data
@@Mr0rris0 what is blud talking bout
And in modern erp normal forms are not even take into account....
Columnar + in memory + compressed...to exploit performances they are less than 3nf
@@AlbertoSimeoni-wi9wj👀🤔
This is the best explanation I have seen here. Salute, sir; this was an awesome teaching lesson. i want others to like my comment so each time i will be reminded to come back right here and watch it over and over. cheers
in all the other videos i have seen on normalization, they are only using complex terms and there is no explanation.
THIS ONE IS THE BEST VIDEO ON NORMALIZATION.
you earned a subscriber.
There does not exist a better video that explains normalization with such clarity and simplicity.
A very long time ago (1996ish) the two guys who did all of the non-AS400 report writing both quit at our company. They were friends of mine, and both told their managers that I at least knew how to code in BASIC, and as all the operations reporting was in VB (mostly excel, some Access), I replaced both. I used their old Excel-based reporting system for awhile, but HEAVILY gravitated to Access (we weren't IT, so "When all you have is a hammer..."). Seeing all this laid out like this is kind of refreshing to see. Normalization -- self-taught as I was -- eventually got so ingrained me that I randomly build databases to organize things at home. Thanks for this. It's good stuff.
Stuff I’ve known for years, but never explained so concisely - kudos to you great work 👌
its honestly criminal that you dont have more subs. i wish I could find a video this well done on every topic I struggle with
using this videos for university... and it's clear htat you know the subject to perfection, otherwise you wouldnt be able to explain it so brightly clearly. Thank you very very much man.
I had to read a chapter on normalizations for my database class and I was just lost with the usage of its jargons. This video helped it alot! Simple and thorough.
Subscribed! I'm currently studying this subject because I've an exam in 2 days but, I've decided that I will continue watching your videos. The way you explain things is out of the ordinary. Thank you!
perfect pacing, no bloat. Highly appreciated; intro's and padding are the bane of self learners through youtube
That's without a doubt the clearest explanation I ever heard about database normalisation forms. Your videos are incredibly good. TY
I've worked with Relational Databases since 1983 (when IBM released DB2) and this is one of the best and clearest explanations of normalization I've ever seen.
how is that even possible ?
Seriously, I can't thank you enough for this, the database course in my university made this look like a convoluted mess and you just explain it so simply like that
"I hope you find this video helpful" - I find this video way too helpful. Thank you so much for making things so clear to understand. great job.
I've done the LinkedIn Learning videos my university provided, nothing.
I've powered through the reading materials left and right, still nothing.
I've tried other TH-cam videos, and surprise, still nothing.
Your video somehow makes it make sense. I've been struggling with these concepts for 2 weeks now. Thank you for putting it in basic terms!
I'm so glad my video helped you. When I made the video I was very conscious of wanting to make the explanations as simple as they could possibly be, so that anybody could understand them, so I tried very hard to do just that. For me that's what all teaching should strive for. It's really gratifying to read that the video has succeeded in giving you a good understanding of these concepts.
i have been working in Dbs for more than 789 years , this is the best explanation i have ever seen
One of the more clear normalization explanations here! Good job!
I thought I would need to wait several semesters until my uni course on databases to learn about normal forms, because I didn't find a good source online, but here you are - a great and easy to understand explanation to get me started. Excellent.
This was immensely useful as the rigorous, mathematical explanation given to me in university wasn't clear enough. Thank you! You've got a new subscriber, and I hope I get to enjoy your future content :)
I watched this show because I enjoy watching people use database programs and documents that could be used in microcomputers. I have been using Microsoft Access since 2002 with my first microcomputer and learned it all by myself. This show explains the acts of normalization and non-normalization concise, precise, and directly to the point that even a dumb man could understand this show. I will continue to use my relational Microsoft Access [2021] database, but the normalization lessons will work [nicely] in planning a database file.
Though not part of the normal forms, I would also add don't use something that might change as a primary key, such as player name if players are allowed to change their names. Then you have to update all the tables keyed by that player. Better to invent a player ID number, use that as key and store the (name,id) pairs in a table.
I really wish I were as eloquent as the creator of this brilliant video. Literally none of my questions pertaining to the subject are left unanswered. Thank you!
So clear explanation. Well done. I read this long time in university, but I have long since forgot the definitions. Thankfully I have always ended up fully normalized 3NF designs since it makes intuitive sense. Having met non-normalized designs at work, the pain those caused were enormous and stalled the development (eventually bankrupting the company)… FUBAR, it was.
You're a wonderful instructor, and there are many leaners in the the world who need you..Thank-you
I’ve been a database engineer for 25 years and this stuff is still super useful. Thank you
Serious? I hope that was a joke.
@@2greenify no joke. Sorry, genius
Exceptionally well explained with real world scenarios and minimum jargon. Hats off.
Really awesome video. I'm taking a class on relational database design and the lecture I attended on this topic was very convoluted. Your presentation and examples cleared everything up for me, thank you.
My pleasure. It's one of those topics that somehow lends itself to poor and convoluted explanations, so I'm glad if I succeeded in getting it across clearly.
I don't know how many books and articles I've read that don't explain this, but you did. Keep up the good work!
By far the best explanation on Normalization I have been able to find! Keep up the great work!!
What memories. It’s nearly 30 years since I looked at normalisation. This video bought back many memories.
This is a gem. Please make uploads more consistently. Thank you.
Firstly, this is a delightful and clear explanation - thank you!
It makes me nostalgic for the time when I would regularly hear such formalisms discussed in corporate IT settings.
One of the difficulties you must encounter when teaching these concepts in the current era is that contemporary thinking in software engineering encourages designers to think of databases as _merely_ "storage" or "persistence" for an individual application. An implementation detail, trivial in to the real work of the system.
Whereas Ted Codd and Chris Date conceived of the database as the information system itself. It would enforce universal logic and consistency. It was the main event. Applications that made use of the data would come and go. And they would adapt themselves to its schema, and its declared and transparent logic. (Transparent in its original sense, not in the way it has come to means its opposite - a black box.) Codd didn't predict a world in which each application had its own database, and there was money to be made as an "enterprise data integration and migration consultant".
My career thus far has brought me to the disheartening conclusion that a really useful information system in an organization of any size or scale takes so much time, effort, and co-ordination to build (and evolve) that before it has reached even a third of its potential, there are already multiple generational conflicts around its intent and purpose.
I glad you liked the explanation; and thank you for those astute, historically-informed observations, which I very much agree with! I regard a database as a kind of template for expressing meanings. A lot of other people don't see it that way at all: they see it as a sort of parking lot for data. & as far as your disheartening conclusion goes, I can't really disagree with it. There's always going to be a drive towards a sweeping, unified information system (or an EDW) - because people who rely on information really could benefit from one of those - but in my career to date I haven't yet seen such a thing work out in the way people hoped and imagined it would.
@@decomplexify Thanks! If I were to be a little bit less disheartening, I'd say that the potential of RDBMSes is not even close to being fully tapped. And that the difficulty is that management dreams that technology will solve all of their human problems. In reality, we have to solve the human problems first. It's only then that the technology can begin to deliver on the wonders it promised. 😁
Thanks for doing a first-rate job at solving one of the most difficult human problems - understanding and communication!
One of the best session on normalization I have seen. To the point with practical example. Thank you for this video. 🙏
Concise, well illustrated, yet densely well organized video structure. 10/10 Thank you will repost!
I find it useful to review this from time to time (super useful video; thanks!)... and yet, don't feel a need to go through the whole thing when I do, so, here are the summaries of the various forms -- for my own sake, and/or anyone else who might find this helpful:
1st NF: 10:00, 26:58; 2nd NF: 12:56, 27:16; 3rd NF: 18:47, 27:25 (related: Boyce-Codd Normal Form: 19:12, 27:37); 4th NF: 23:03, 27:49; 5th NF: 26:16, 28:00.
Seriously the best video explanation. Other youtube videos only cover a few cases. Or don't explain each normalization clearly. Great videos. I subscribed. I am a front-end dev expanding my skillset to more full stack. Databases are my weakest area. Really appreciate the in depth well thought out content!
Topics I am interested in: Underlying mechanisms behind database data storage (B+ trees, LSM SSTables Bloom Filters, compaction, write ahead logs, error recovery, etc...), data modeling in noSQL DBs (Is there anything like normalization / best practices for GraphDBs, blob storage, etc... ), denormalization and examples, data processing pipeline, and when to chose each database type for a project. General DB knowledge is always appreciated as well. If you are looking for video ideas outside of the DB world, then I have been interested in pattern matching algorithms and data structures like aho-corasick automaton, Suffix trees with linear time construction (specifically the construction in linear time). Thanks!
@@tenthlegionstudios1343 Thanks, I really appreciate the comment, and out of the various topics you've mentioned, the one I'm most qualified to talk about is "denormalization and examples" - this is something I've been meaning to do a video about for some time. Stay tuned!
Definitely the best explanation ive seen for these normal forms!!! I learned this in school and after a while I forget the rules, I just know whats needed in a table. I'm glad to take this refresher and take note of them. I find after designing many tables, these rules tend to happen organically because if not you run into too many problems.
I remember learning this on a Systems Analysis course in 1985. Inefficient databases could have a real impact on performance whereas today poor database design can be masked by more powerful hardware.
Were you working with dBase then? I remember dBase II and dBase III being taught around that time.
Man, i wish this video had been uploaded around 6 years ago, at the time when i was in second year with shitty 3-hour lecture about normalization. This is the clearest explanation I've ever seen so far on youtube
There are too many bad explanations out there, which is why I figured it was worth putting in the effort to come up with a good one. Wish I'd been there for you 6 years ago but, well - better late than never.
Excellent presentation of normalized forms. Given so much noSQL databases these days, it's nice to be reminded of data safety concerns...
This was so helpful! Broke down this topic without using too much technical jargon, had great examples, great explanations and nice drawings! Thank you so, so much!!! I like how you gave a rule-of-thumb for each 1NF, 2NF, 3NF, 4NF, 5NF and the summary! Superb video!
This is a great video! I think that a video on different keys and what they are would be really helpful as well!
Thanks! I've been working on a keys video so stay tuned for that...
In a few years' time this video is bound to have milions of views. Congratulations on such an amazing (and simple) explanation!
7 months later and almost 2mm views and growing...
Thank you!
You obviously have a knack for explaining things.
The animation is really nice and helps with the subject. Can't wait for more.
Perfect, I learned all this stuff in high school over 20 years ago.
After watching this everything was clear again
Nice work Decomplexify!
Easy and clear, one of the best explanations that I have ever watched.
Wow. Of all the videos about database relationships in youtube. Yours is the only one that is complete in details. Thank you.
dam my db already failing 1NF
At least you’ve got a schema, I can’t keep changing schema every day
😂
you monkey !
Bro u a real one 😂
🤣🤣🤣🤣🤣🤣
So much better than the explanation given in my Database Systems class. They explained everything with alpha's and beta's in set notation. Thank you for this!
This is EXCELLENT! So easy understand without unnecessary mathematical rigor for us mortals ;-). Thank you Mr. Decomplexify for those awesome explanations.
Best Video on the internet to explain Normal Forms in easiest way.. landed here after skipping many confusing videos. thank you !
You're great, keep up doing the amazing stuff. You'll be getting what you deserve ultimately.
The whole thing made so little sense to me when i learned it from the books and i spent hours. So i intiutively chose „break down to avoid redundancy“ style in so many cases. Now, with 25 min video i finally learned it properly. Thank you :)
Bro.. thanks! You made it so simple.
I scoured so many database normalization videos in my undergraduate 4yr ago and none of them come near this one. My college self is finally happy
Seriously the best explanation ever ! Thanks a lot Sir. 😍
This video is so great. I am a relatively new business analyst and have been struggling with a non-normalized legacy database that has been causing a lot of headache at my job. Can't wait to get in there and get it fixed up after watching this! Thank you Decomplexify
This is awesome.
Much appreciated 🙏
Edit: would love to see a similar decomplexify centred on the models used in reports created via data analytics?
How to approach creating the optimum data set in terms of structure, such as a star model versus other options whose names I haven't yet looked up 😊
This has been by far the most clear, concise & practical explanation. Thanks!
This video actually is really very helpful. I dk why you have so less views. You deserve more.
it is so great to finally understand what and why I was doing what I was doing, while following youtubers who don't explain anything.
Well done mate! Your explanations were absolutely brilliant!! Keep up the good work and Thank you !!
There are so many blog posts trying to explain this concept, and yet nothing made me understand which frustrates me so much. This one is the silver lining to me.
Great video! I would say the issue of repeating groups in 1NF isn't clear about the repeating group. A repeating group is more than a multivalued attribute. It is a repeating group because, in your example, the quantity and the item belong together. In the first row, player jdog21 isn't just associated with multiple quantities and multiple items. The quantity and the item are associated (e.g., 2 with amulet and 4 with ring are correct, while 4 with amulet and 2 with ring would be incorrect). A multivalued attribute should be separated into a different table, as you showed. But, if the quantity and item were not related, then a three table design would be better {(player), (player, item), (player, quantity)} so the 4NF problem isn't created. What makes it a repeating group is that the association of the first value of quantity with the first value of item, the second value of quantity with the second value of item must be maintained.
Thanks, I was wondering about that part!
i think this is the best explanation of database normalization. especially for the beginners like me. i saw so many tutorials and read a chapter of this topic but couldn't be able to get this steps so easily. but this tutorial helped me to understand those steps so smoothly.
Normalization your gateway to “left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on left join on”
Mhm. I think it's always good to start by striving for 5NF... and then work backwards from there, denormalizing with extreme care to optimize for specific cases. I'll violate BCNF and stick an attribute in there that doesn't depend on the key, knowing it increases write complexity, if it improves read performance on a table where reads are occurring thousands of times more frequently than writes do. But I ALWAYS start by designing the fully normalized schema. In other words: sometimes DEnormalize, NEVER *fail* to normalize.
This has been hugely helpful! I was completely lost with Normalization but not anymore. Thank you
Best video I have seen on this topic. But just a little concern is that at 23:27 why model column can have duplicate values? Isn't it primary key?
Good spot! Sorry about that, the primary key for the Model_Colors_Available table should have been shown on that screen as {Model, Color}; the primary key for the Model_Styles_Available table should have been shown as {Model, Style}. I'll see if I can add an annotation to the video that corrects this.
Thanks for this! Like others, I'm studying for a databases exam and needed a fresh explanation of normalisation. This video helped me refine my notes and cement it more in my brain.
0:11 And what bad things can happen if you do too much?
Watch my Denormalization video if you want some insight into cases where relaxing the normalization requirement might be desirable: th-cam.com/video/4bTq0GdSeQs/w-d-xo.html
The database becomes a pain to work with. SQL queries become more complex.
I'm very glad to see someone able to articulate this somewhat esoteric topic so eloquently and succinctly!
My initial foray into DB started at home on a PC with a copy of IBM's DB2 for DOS that a dad of one of my mates... ahem... acquired for me. This lead to an entire lifetime of love for and a career in databases and data integrity, starting with teaching database theory and design at my university as a postgrad to finally running my own IT school where I teach database theory to the advanced highschoolers.
Educative content such as this is so valuable to those coming after us... Keep up the top notch work!
Not that esoteric, I'm learning this in my first year CIT diploma. It's extremely frustrating that the same problem of all other STEM field and academia in general is here too, with such esoteric language and confusing explanations, but the internet makes that a much easier thing to combat nowadays at least.
Good explanations! One criticism: I was confused what First Normal Form (INF) meant until I realised that the letter I was a digit 1. It might be better to use a font that makes these two characters more easily distinguished.
This video helped me solve the constant urge to slap a json list in a database whemever i have a list of things (inventory example)
Thanks!!
imagine yapping for 8 hours about this just to be outplayed by a random guy on youtube in 28 minutes
This was the most beautifully executed normalization explanation. Thank you for doing the necessary abstraction for us.
Heroes don't need to have some magic superpower, explaining to others this topic and other topics clearly is a great superpower to have. I don't know how to reward you enough for the explanations!
THANK YOU! You explain this in a way that is practical and easy to follow. I much prefer this method of learning (visually and with examples) to memorizing a bunch of formal definitions. I understand learning about theory is good, but to really GET it I think you need someone to explain concepts like you do.
You did a great job, it's very clear. Now look back at the university powerpoint, I still don't understand what the prof said.
The most concise explanation of Database Normalization Form ever read!
I have spent half afternoon studying the DB normal forms, and wish I had found this video before all the others I have watched. This was in fact the only worth watching, so far.
by far the best video on TH-cam on normalization , I'm writing this on my day of exam and you have made my life easy hats off to you !
Thank you! Glad I could help.
You are the best teacher. Thank you so much!
This is so concise and precise. Absolute goldmine!
Absolutely loved this video. Learned a lot about normalization, but also communication and teaching. Thank you.
The best tutorial for a topic I have ever watched on youtube.
Thank you for this. I leant relational database practically (using tools like Airtable etc) but never leant it theoretically. This is is so easy explanation who wants to know the basics.
I took the mandatory database course as part of my CS degree I didn't like one minute of it. What a the course failed to explain - in a sensible way - over 10 lectures, on how to model your tables and the relations between attributes you've summarized perfectly in 30 minutes. Oh how I wished this video was made 10 years ago. Great stuff
This is phenomenally well explained and invaluable - this has made my life SO much easier! Thank you!
You're welcome - I'm glad it's helped!
you are amazing English wasn't my first language so when in university they teach with big fancy words it gets me confused and I feel stupid for not understanding but when you explain it in non formal definitions it makes it simple and easy to understand thanks
Thanks so much for your comment. I'm really happy that the video helped you, I am always trying to find ways of making my explanations as easy to understand as possible. If I've managed to help you understand the material in ways that other instructors haven't, that's mission accomplished from my point of view!