Normalisasi mengoptimalkan tabel dalam sistem manajemen basis data (DBMS) untuk memenuhi bentuk normal, yaitu serangkaian aturan yang mengatur penataan atribut dalam tabel. Aturan ini sebagian besar didasarkan pada hubungan antar atribut (kolom), termasuk kunci yang digunakan untuk mengidentifikasi baris secara unik.
Pada dasarnya, normalisasi basis data—kadang-kadang disebut normalisasi data—membantu bisnis dan lembaga untuk mengorganisir, mengakses, dan memelihara volume besar data yang kompleks, saling terkait, dan dinamis dengan lebih efektif. Meskipun perusahaan saat ini menghasilkan dan menyimpan data dalam skala yang belum pernah terjadi sebelumnya, kebutuhan akan normalisasi basis data bukanlah hal yang baru. Ini mendahului penyimpanan cloud dan bahkan penemuan gudang data.
Sejak 1960-an, perusahaan telah berjuang untuk mengelola kumpulan data besar. Pada tahun 1970-an, Edgar F. Codd, ahli matematika IBM® yang terkenal dengan makalahnya yang terkenal dengan memperkenalkan basis data relasional, mengusulkan bahwa normalisasi basis data dapat menghindari ketergantungan yang "tidak diinginkan" antara atribut (kolom) dan masalah yang dapat mereka buat.
Dengan kata lain, ketika rekaman data saling terkait dalam struktur basis data, perubahan pada satu nilai atau baris dalam tabel yang besar dan rumit dapat menimbulkan konsekuensi yang tidak diinginkan—seperti ketidakkonsistenan atau hilangnya data. Normalisasi basis data dirancang untuk meminimalkan risiko tersebut.
Manfaat normalisasi basis data meliputi:
Ketika tabel yang lebih besar dan kompleks dibagi (atau dipecah) menjadi tabel-tabel yang lebih kecil dan sederhana, proses modifikasi basis data menjadi lebih mudah dan kurang rentan terhadap kesalahan, serta membatasi perubahan hanya pada tabel-tabel yang lebih kecil yang berisi data terkait.
Meskipun redundansi data yang disengaja dapat membantu meningkatkan kualitas data, keamanan dan ketersediaan, redundansi data yang tidak disengaja adalah akibat dari sistem yang secara tidak sengaja menciptakan data duplikat, yang mengakibatkan ketidak efisienan.
Mengurangi duplikasi data melalui normalisasi basis data dapat menurunkan biaya penyimpanan data. Ini sangat penting untuk lingkungan cloud yang penetapan harganya sering didasarkan pada volume penyimpanan data yang digunakan.
Redundansi data yang lebih sedikit akibat normalisasi juga dapat mempercepat kueri, karena redundansi rendah biasanya memerlukan lebih sedikit pemrosesan data selama pencarian.
Normalisasi struktur data dapat mencegah tiga jenis utama anomali:
Anomali penyisipan: Anomali penyisipan terjadi ketika sebuah catatan data tidak dapat disisipkan ke dalam tabel karena missing values yang diperlukan oleh satu atau lebih kolom dalam tabel tersebut tidak tersedia.
Anomali penghapusan: Anomali penghapusan terjadi ketika penghapusan suatu catatan secara tidak sengaja menghilangkan data penting yang terdapat di dalamnya.
Pembaruan anomali: Pembaruan anomali terjadi ketika suatu instance data diperbarui di satu lokasi dalam basis data tetapi tidak diperbarui di lokasi lain di mana nilai data tersebut juga disimpan, sehingga menyebabkan ketidakkonsistenan data.
Dalam basis data relasional, kunci adalah kolom atau kumpulan kolom yang terurut yang digunakan untuk mengidentifikasi baris data dalam sebuah tabel. Kunci dalam model relasional juga membentuk asosiasi antara tabel terkait. Kemampuan ini mendukung kueri basis data SQL yang sukses dan efisien. Kunci yang menonjol dalam aturan normalisasi basis data meliputi:
Kunci primer adalah kolom atau kolom dalam tabel basis data dengan nilai yang berfungsi sebagai pengidentifikasi unik untuk setiap baris atau catatan. Misalnya, kolom ID siswa dapat menjadi kunci utama dalam tabel informasi siswa. Ciri-ciri utama dari kunci utama (primary key) adalah sebagai berikut: tidak boleh mengandung nilai null, tidak boleh memiliki nilai yang sama, dan dapat terdiri dari satu kolom atau beberapa kolom.
Kunci yang terdiri atas dua kolom atau lebih disebut kunci komposit. Ketika kunci utama adalah kunci komposit, keduanya dapat disebut kunci primer komposit.
Kunci kandidat adalah kolom atau gabungan kolom yang memiliki karakteristik kunci utama namun belum ditetapkan sebagai kunci utama.
Kunci asing dalam satu tabel mengacu pada kunci primer tertentu di tabel lain untuk mendefinisikan hubungan antar tabel. Ketika tabel yang lebih besar dibagi menjadi tabel yang lebih kecil selama normalisasi, kunci asing dan kunci utama membentuk hubungan antara tabel baru.
Kunci super, meskipun mirip dengan kunci utama komposit, terdiri atas lebih banyak kolom daripada yang diperlukan untuk mengidentifikasi catatan secara unik.
Beberapa batasan normalisasi basis data didasarkan pada hubungan (juga dikenal sebagai ketergantungan) antara kunci utama dan kolom yang bukan kunci utama maupun kandidat kunci. Yang terakhir ini dikenal sebagai atribut non-kunci atau atribut non-utama.
Hubungan antara atribut dalam basis data di mana satu atribut (penentu) menentukan nilai atribut lain dikenal sebagai ketergantungan fungsional. Hubungan antara atribut dalam basis data, di mana satu atribut (penentu) menentukan nilai atribut lain, dikenal sebagai ketergantungan fungsional. Hubungan-hubungan ini paling baik dipahami ketika dibahas dalam konteks kumpulan aturan normalisasi yang relevan, atau bentuk normal.
Normalisasi model data melibatkan perancangan tabel agar sesuai dengan satu atau lebih tingkat normalisasi, yang juga dikenal sebagai bentuk normal. Bentuk-bentuk umum meliputi:
Bentuk normal pertama (first normal form), kriteria normalisasi basis data yang paling dasar, mensyaratkan bahwa skema tabel basis data harus mencakup kunci utama (primary key) sambil menghilangkan pengulangan kolom. Untuk lebih spesifik, tabel dalam bentuk normal pertama seharusnya tidak memiliki bidang dengan array nilai—misalnya, satu sel dengan tiga nama berbeda di dalamnya—juga tidak boleh menyertakan grup berulang, yang merupakan kolom berbeda yang menyimpan jenis data yang sama.
Untuk memahami bentuk normal pertama dengan lebih baik, mari kita gunakan kumpulan kolom berikut sebagai contoh:1
rec_num | lname | fname | bdate | anniv | child1 | child2 | child3 |
Kolom-kolom tersebut berada dalam tabel yang memuat data sekelompok orang tua, termasuk nama, tanggal lahir, hari pernikahan, alamat email, dan nama anak-anak mereka.
Tabel ini melanggar bentuk normal pertama karena memiliki tiga kolom terpisah yang menyimpan informasi yang sama, yaitu nama anak. Dalam kasus ini, struktur tabel dapat menimbulkan risiko kesalahan penyisipan. Misalnya, di dunia nyata banyak orang tua memiliki kurang dari tiga anak.
Dalam tabel contoh kami, tidak mungkin menambahkan catatan orang tua tersebut ke tabel. Selain itu, pencarian nama anak pada tabel ini menjadi tidak efisien karena harus memeriksa tiga kolom berbeda di setiap baris.
Mencapai bentuk normal pertama pada data dalam tabel memerlukan pemisahan tabel asli menjadi dua. Satu tabel akan memuat sebagian besar atribut dari tabel asli, sementara tabel lainnya akan berfokus pada data anak-anak.
TABEL 1
rec_num | lname | fname | bdate | anniv |
TABEL 2
rec_num child_name
Dalam contoh ini, tabel baru tetap terhubung melalui kolom "rec_num", yang menjadi kunci utama di Tabel 1 dan dirujuk sebagai kunci asing oleh kolom "rec_num" di Tabel 2.
Meskipun memenuhi bentuk normal pertama mungkin tidak menghilangkan data berulang (nilai "rec_num" akan muncul di beberapa baris Tabel 2 jika orang tua memiliki lebih dari satu anak), penghapusan kelompok berulang dapat menyederhanakan kueri.
Dalam bentuk normal kedua, tidak ada atribut non-kunci yang memiliki ketergantungan parsial pada kunci utama tabel. Dengan kata lain, jika kunci utama adalah kunci gabungan, atribut non-kunci harus bergantung pada setiap kolom dalam kunci gabungan tersebut.
Misalnya, pertimbangkan tabel inventaris yang mencatat jumlah bagian tertentu yang disimpan di gudang tertentu. Gambar berikut menunjukkan atribut dari entitas inventaris.2
bagian | warehouse | kuantitas | warehouse_address |
Dalam contoh ini, kolom “part” dan “warehouse” membentuk kunci utama komposit. Namun, atribut "warehouse_address" hanya bergantung pada nilai "warehouse", sehingga tabel melanggar bentuk normal kedua.
Tabel ini juga rentan terhadap redundansi data, karena nilai untuk warehouse_address tercantum setiap kali catatan untuk bagian dari gudang yang sama muncul dalam tabel. Hal ini meningkatkan risiko kesalahan pembaruan jika alamat diperbarui dalam satu baris dan tidak di baris lain. Kesalahan penghapusan juga dapat terjadi jika salah satu gudang berhenti toko bagian-bagian—jika catatan bagian tersebut dihapus, alamat toko akan dihapus.
Untuk memenuhi bentuk normal kedua dan mengurangi kemungkinan kesalahan, data dapat didistribusikan antara dua tabel baru:
TABEL 1
bagian | warehouse | kuantitas |
TABEL 2
gudang warehouse_address
Tabel dalam bentuk normal ketiga memenuhi bentuk normal pertama dan kedua, serta menghindari atribut non-kunci bergantung pada atribut non-kunci lain alih-alih pada kunci utama. Ketika atribut non-kunci bergantung pada atribut non-kunci lain, hal ini disebut ketergantungan transitif—melanggar bentuk normal ketiga.
Pertimbangkan tabel informasi karyawan berikut:3
emp_num | emp_fname | emp_lname | dept_num | dept_name |
0200 | David | Brown | D11 | Sistem Manufaktur |
0320 | Ramlal | Mehta | E21 | Dukungan Perangkat Lunak |
0220 | Jennifer | Lutz | D11 | Sistem Manufaktur |
Dalam tabel ini, kunci utama adalah kolom “emp_num”. Namun, kolom “dept_name” bergantung pada kolom “dept_num”, atribut non-kunci. Oleh karena itu, tabel ini tidak memenuhi bentuk normal ketiga dan meningkatkan risiko kesalahan seperti anomali pembaruan—jika nama departemen, misalnya "sistem manufaktur," diubah, maka perubahan tersebut harus diperbarui di lebih dari satu baris dalam skema tabel saat ini.
Mengatur data ke dalam bentuk normal ketiga dalam basis data yang dinormalisasi dapat mencegah kesalahan tersebut. Dalam hal ini, proses ini akan melibatkan pengelompokan data ke dalam tiga tabel terpisah: EMPLOYEE, DEPARTMENT, dan EMPLOYEE_DEPARTMENT 4
Tabel KARYAWAN
emp_num | emp_fname | emp_lname |
0200 | David | Brown |
0320 | Ramlal | Mehta |
0220 | Jennifer | Lutz |
Tabel DEPARTMENT
dept_num | dept_name |
D11 | Sistem Manufaktur |
E21 | Dukungan Perangkat Lunak |
Tabel EMPLOYEE_DEPARTMENT
dept_num | emp_num |
D11 | 0200 |
D11 | 0220 |
E21 | 0320 |
Bentuk Normal Boyce-Codd (BCNF) adalah bentuk normal yang merupakan versi lebih ketat atau lebih kuat dari bentuk normal ketiga. BCNF mensyaratkan penggunaan kunci super.
Sebuah tabel berada dalam bentuk normal keempat jika tidak memiliki dependensi multi-nilai. Ketergantungan multi-nilai terjadi ketika nilai dari dua atau lebih kolom saling independen dan hanya bergantung pada kunci utama.
Contoh yang umum dikutip dalam tutorial berpusat pada tabel karyawan yang mencantumkan keterampilan dan bahasa. Seorang karyawan dapat memiliki beberapa keterampilan dan berbicara banyak bahasa. Ada dua hubungan: satu antara karyawan dan keterampilan dan satu antara karyawan dan bahasa.
Suatu tabel tidak berada dalam bentuk normal keempat jika tabel tersebut merepresentasikan kedua hubungan tersebut. Mengubah data ke bentuk normal keempat memerlukan pemisahan data ke dalam dua tabel—satu untuk keterampilan karyawan dan satu untuk bahasa.
Umumnya dianggap sebagai tingkat normalisasi tertinggi, bentuk normal kelima adalah kriteria yang berpusat pada ketergantungan bergabung. Dalam ketergantungan join, setelah sebuah tabel dibagi menjadi tabel-tabel yang lebih kecil, dimungkinkan untuk merekonstruksi tabel asli dengan menggabungkan kembali tabel-tabel baru tersebut—tanpa kehilangan data apa pun atau secara tidak sengaja menciptakan baris data baru. Hal ini dapat diibaratkan seperti puzzle yang sudah selesai disusun, yang ketika dipisahkan, dapat disusun kembali menjadi bentuk aslinya.
Dalam bentuk normal kelima, tabel harus dibagi menjadi tabel yang lebih kecil hanya ketika ketergantungan bergabung dapat dicapai. Jika, bagaimanapun, upaya untuk merekonstruksi tabel asli dari tabel-tabel yang lebih kecil secara tidak sengaja mengakibatkan pembentukan tabel yang sedikit berbeda, maka dekomposisi tabel asli tidak boleh dilakukan. Kembali ke analogi puzzle jigsaw, hal ini mirip dengan menyusun kembali puzzle, hanya saja kali ini kita menemukan bahwa ada potongan yang hilang atau potongan tambahan yang tiba-tiba muncul.
Meski bermanfaat, normalisasi basis data memiliki trade-off. Misalnya, sebelum normalisasi, pengguna yang mencari data tertentu mungkin hanya perlu melakukan kueri pada satu tabel. Namun, jika basis data memiliki lebih banyak tabel setelah normalisasi, pengguna mungkin harus mengkueri beberapa tabel—yang bisa menjadi proses lebih lambat dan mahal.
Selain itu, meskipun normalisasi membuat tabel individu menjadi lebih sederhana, hal ini dapat meningkatkan kompleksitas basis data secara keseluruhan, sehingga memerlukan keahlian yang signifikan dari para perancang dan administrator basis data untuk memastikan implementasi yang tepat.
Buat dan kelola pipeline data streaming cerdas melalui antarmuka grafis yang intuitif, yang memfasilitasi integrasi data tanpa batas di seluruh lingkungan hybrid dan multicloud.
watsonx.data memungkinkan Anda untuk menskalakan analitik dan AI dengan semua data Anda, di mana pun data berada, melalui penyimpanan data yang terbuka, hybrid, dan diatur.
Buka nilai data perusahaan dengan IBM Consulting, membangun organisasi berbasis insight yang memberikan keuntungan bisnis.
1 “First Normal Form.” IBM® Documentation, Informix Server. 19 November 2024.
2, 3, 4 “Normalization in database design.” IBM® Documentation, Db2 for z/OS. 22 Januari 2025.