Normalisasi Database Anda: Bentuk Normal Pertama

Kedua aturan sederhana ini akan membantu normalisasi database Anda

Formulir Normal Pertama (1NF) menetapkan aturan dasar untuk basis data terorganisir:

Apa yang dimaksud dengan aturan-aturan ini ketika merenungkan desain praktis dari sebuah database? Sebenarnya cukup sederhana.

1. Hilangkan Duplikasi

Aturan pertama menyatakan bahwa kita tidak boleh menggandakan data dalam baris yang sama dari sebuah tabel. Dalam komunitas basis data, konsep ini disebut sebagai atomicity meja. Tabel yang sesuai dengan aturan ini dikatakan atom. Mari kita telusuri prinsip ini dengan contoh klasik: tabel dalam database sumber daya manusia yang menyimpan hubungan manajer-bawahan. Untuk keperluan contoh kami, kami akan menerapkan aturan bisnis bahwa setiap manajer mungkin memiliki satu atau lebih bawahan sementara setiap bawahan mungkin hanya memiliki satu manajer.

Secara intuitif, saat membuat daftar atau spreadsheet untuk melacak informasi ini, kita dapat membuat tabel dengan bidang-bidang berikut:

Namun, ingat aturan pertama yang diberlakukan oleh 1NF: Hilangkan duplikasi kolom dari tabel yang sama. Jelas, kolom-kolom Subordinate1-Subordinate4 bersifat duplikasi. Luangkan waktu sejenak dan renungkan masalah yang diangkat oleh skenario ini. Jika seorang manajer hanya memiliki satu bawahan, kolom Subordinate2-Subordinate4 hanyalah ruang penyimpanan yang terbuang (komoditas basis data yang berharga). Lebih jauh, bayangkan kasus di mana seorang manajer sudah memiliki 4 bawahan - apa yang terjadi jika dia mengambil karyawan lain? Seluruh struktur tabel akan membutuhkan modifikasi.

Pada titik ini, ide cemerlang kedua biasanya terjadi pada pemula basis data: Kami tidak ingin memiliki lebih dari satu kolom dan kami ingin memungkinkan penyimpanan data yang fleksibel. Mari coba sesuatu seperti ini:

Dan bidang Bawahan akan berisi beberapa entri dalam bentuk "Mary, Bill, Joe."

Solusi ini lebih dekat, tetapi juga kurang dari sasaran. Kolom bawahan masih bersifat duplikasi dan non-atom. Apa yang terjadi ketika kita perlu menambah atau menghapus bawahan? Kita perlu membaca dan menulis seluruh isi tabel. Itu bukan masalah besar dalam situasi ini, tetapi bagaimana jika seorang manajer memiliki seratus karyawan? Juga, ini mempersulit proses pemilihan data dari database di pertanyaan masa depan.

Berikut adalah tabel yang memenuhi aturan pertama 1NF:

Dalam hal ini, setiap bawahan memiliki satu entri, tetapi manajer mungkin memiliki beberapa entri.

2. Identifikasi Kunci Utama

Sekarang, bagaimana dengan aturan kedua: mengidentifikasi setiap baris dengan kolom atau kumpulan kolom unik ( kunci utama )? Anda dapat melihat tabel di atas dan menyarankan penggunaan kolom bawahan sebagai kunci utama. Bahkan, kolom bawahan adalah kandidat yang baik untuk kunci utama karena fakta bahwa aturan bisnis kami menetapkan bahwa setiap bawahan mungkin hanya memiliki satu manajer. Namun, data yang kami pilih untuk disimpan di tabel kami menjadikan ini solusi yang kurang ideal. Apa yang terjadi jika kita mempekerjakan karyawan lain bernama Jim? Bagaimana kita menyimpan hubungan manajer-bawahannya dalam database?

Sebaiknya gunakan pengidentifikasi yang benar-benar unik (seperti ID karyawan) sebagai kunci utama . Tabel terakhir kami akan terlihat seperti ini:

Sekarang, meja kami dalam bentuk normal pertama! Jika Anda ingin terus belajar tentang normalisasi, baca artikel lain dalam seri ini: