1NF adalah yang paling dasar dari bentuk normal - setiap sel dalam tabel harus berisi hanya satu informasi, dan tidak boleh ada baris duplikat.
2NF dan 3NF semuanya bergantung pada kunci utama. Ingat bahwa kunci utama dapat terdiri dari beberapa kolom. Seperti yang dikatakan Chris dalam jawabannya:
Data tergantung pada kunci [1NF], seluruh kunci [2NF] dan tidak lain kecuali kunci [3NF] (jadi bantu saya Codd ).
2NF
Katakanlah Anda memiliki tabel yang berisi kursus yang diambil dalam semester tertentu, dan Anda memiliki data berikut:
|-----Primary Key----| uh oh |
V
CourseID | SemesterID | #Places | Course Name |
------------------------------------------------|
IT101 | 2009-1 | 100 | Programming |
IT101 | 2009-2 | 100 | Programming |
IT102 | 2009-1 | 200 | Databases |
IT102 | 2010-1 | 150 | Databases |
IT103 | 2009-2 | 120 | Web Design |
Ini bukan di 2NF , karena kolom keempat tidak bergantung pada seluruh kunci - tetapi hanya sebagian saja. Nama kursus tergantung pada ID Kursus, tetapi tidak ada hubungannya dengan semester yang diambil. Dengan demikian, seperti yang Anda lihat, kami memiliki informasi duplikat - beberapa baris memberitahu kami bahwa IT101 sedang pemrograman, dan IT102 adalah Database. Jadi kami memperbaikinya dengan memindahkan nama kursus ke tabel lain, di mana CourseID adalah kunci SELURUH.
Primary Key |
CourseID | Course Name |
---------------------------|
IT101 | Programming |
IT102 | Databases |
IT103 | Web Design |
Tidak ada redundansi!
3NF
Oke, jadi katakanlah kita juga menambahkan nama guru kursus, dan beberapa detail tentang mereka, ke dalam RDBMS:
|-----Primary Key----| uh oh |
V
Course | Semester | #Places | TeacherID | TeacherName |
---------------------------------------------------------------|
IT101 | 2009-1 | 100 | 332 | Mr Jones |
IT101 | 2009-2 | 100 | 332 | Mr Jones |
IT102 | 2009-1 | 200 | 495 | Mr Bentley |
IT102 | 2010-1 | 150 | 332 | Mr Jones |
IT103 | 2009-2 | 120 | 242 | Mrs Smith |
Mudah-mudahan sekarang jelas bahwa TeacherName tergantung pada TeacherID - jadi ini bukan di 3NF . Untuk memperbaikinya, kami melakukan hal yang sama seperti yang kami lakukan di 2NF - keluarkan bidang TeacherName dari tabel ini, dan letakkan di sendiri, yang memiliki TeacherID sebagai kuncinya.
Primary Key |
TeacherID | TeacherName |
---------------------------|
332 | Mr Jones |
495 | Mr Bentley |
242 | Mrs Smith |
Tidak ada redundansi !!
Satu hal penting untuk diingat adalah bahwa jika sesuatu tidak ada di 1NF, itu juga tidak ada di 2NF atau 3NF. Jadi setiap Formulir Normal tambahan membutuhkan semua yang dimiliki oleh bentuk normal bawah, ditambah beberapa kondisi tambahan, yang semuanya harus dipenuhi.
Saya tidak pernah memiliki memori yang baik untuk kata-kata yang tepat, tetapi di kelas basis data saya, saya pikir profesor selalu mengatakan sesuatu seperti:
sumber
The data depends on the key [1NF], nothing but the key [3NF]
? Tolong jangan membingungkan kami, karena 1 jawaban sentense tidak menjelaskan jawabannya tetapi membingungkan pengunjung!Berikut ini adalah respons cepat, yang diakui disembelih , tetapi dalam sebuah kalimat:
1NF: Tabel Anda disusun sebagai kumpulan data yang tidak teratur , dan tidak ada kolom berulang.
2NF: Anda tidak mengulangi data dalam satu kolom dari tabel Anda karena kolom lain.
3NF: Setiap kolom di tabel Anda hanya berhubungan dengan kunci tabel Anda - Anda tidak akan memiliki kolom di tabel yang menggambarkan kolom lain di tabel Anda yang bukan kuncinya.
Untuk detail lebih lanjut, lihat wikipedia ...
sumber
1NF: Hanya satu nilai per kolom
2NF: Semua kolom bukan kunci utama dalam tabel harus bergantung pada seluruh kunci utama.
3NF: Semua kolom non primary key dalam tabel harus bergantung LANGSUNG pada seluruh primary key.
Saya telah menulis artikel secara lebih rinci di sini
sumber