Saya mencoba menjelaskan normalisasi dalam istilah awam di sini. Pertama, ini adalah sesuatu yang berlaku untuk database relasional (Oracle, Access, MySQL) sehingga tidak hanya untuk MySQL.
Normalisasi adalah tentang memastikan setiap tabel memiliki satu-satunya bidang minimal dan untuk menghilangkan ketergantungan. Bayangkan Anda memiliki catatan karyawan, dan setiap karyawan milik departemen. Jika Anda menyimpan departemen sebagai bidang bersama dengan data karyawan lainnya, Anda memiliki masalah - apa yang terjadi jika departemen dihapus? Anda harus memperbarui semua bidang departemen, dan ada peluang untuk kesalahan. Dan bagaimana jika beberapa karyawan tidak memiliki departemen (baru ditugaskan, mungkin?). Sekarang akan ada nilai nol.
Jadi normalisasi, singkatnya, adalah untuk menghindari bidang yang akan menjadi nol, dan memastikan bahwa semua bidang dalam tabel hanya milik satu domain data yang dijelaskan. Misalnya, di tabel karyawan, bidangnya bisa id, nama, nomor jaminan sosial, tetapi ketiga bidang itu tidak ada hubungannya dengan departemen. Hanya id karyawan yang menjelaskan departemen mana karyawan tersebut berada. Jadi ini menyiratkan bahwa di departemen mana seorang karyawan harus berada di tabel lain.
Berikut adalah proses normalisasi sederhana.
EMPLOYEE ( < employee_id >, name, social_security, department_name)
Ini tidak dinormalisasi, seperti yang dijelaskan. Bentuk yang dinormalisasi dapat terlihat seperti
EMPLOYEE ( < employee_id >, name, social_security)
Di sini, tabel Karyawan hanya bertanggung jawab untuk satu set data. Jadi di mana kita menyimpan departemen milik karyawan itu? Di tabel lain
EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )
Ini tidak optimal. Bagaimana jika nama departemen berubah? (itu terjadi di pemerintah AS sepanjang waktu). Karenanya lebih baik melakukan ini
EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )
Ada bentuk normal pertama, bentuk normal kedua, dan bentuk normal ketiga. Tetapi kecuali jika Anda mempelajari kursus DB, saya biasanya hanya menggunakan bentuk yang paling dinormalisasi yang dapat saya pahami.
Semoga membantu.