First thing's first - there are three of them - the normal forms. I will talk about the first form.
First form essentially means that entity in a table must represent relation, and if it already does - entity already is compliant with the first normal form.
First form imposes two conditions for database design to be compliant with it:
- All rows must be unique.
- All values must be atomic.
All rows must be unique
This is usually achieved through giving entity a unique Primary Key column. Unique identification of a row makes it different from row with the same values but different primary key. That's how a bag of data is turned to a set - a core database data structure.
All values must be atomic
This is achieved through storing exactly one piece of data in a single cell, not an array of data and not a string of different values separated by comma for example.
That's pretty simple, but for a non-native, digesting information from technical books can be pretty hard, so it makes sense to write down everything I learn.
Man can get anything he wants if he's willing to sacrifice for it. I suspect it was my greed for experience and money that got me a second job and I'm willing to sacrifice my free time for it. I mean, I don't have much to do anyway once I go home, and I'm notorious among my closest for doing programming both when I'm on work and off work. I'm not exactly a social person. I spend lots of time to learn how to communicate with people the proper way, but I never feel like I belong and I grew to become okay with that, and I'm young. I have the power and the time to improve myself in all the ways possible until I grow old and conservative and the spark in my eyes starts fading. So that kinda got me thinking - can I turn my free time for learning into a revenue? Turns out, I can.
I've been developing on .NET for three years, but, surprisingly enough, I have never got near raw SQL, always preferring existing ORM solutions. On the second job, it's crucial for me to perform well using T-SQL, and that sounds like a great push given to me, because I don't have to force myself to study anymore - something else does. And since I'm primarily working with .NET, and I want to be a good all-rounder, T-SQL sounds like a wonderful thing to learn and solidify my understanding of core DB and RDBMS principles.
So I started by getting myself "T-SQL Fundamentals" book. I'm ought to post things as I learn them to solidify and organize my knowledge by writing it down as a blog post. That's why I registered here in the first place :)
Cheers to anyone reading this.