Skip to main content

Menempatkan Database dalam Bentuk Normal Pertama

04 Normalisasi 1NF (Mungkin 2024)

04 Normalisasi 1NF (Mungkin 2024)
Anonim

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

  • Hilangkan kolom duplikatif dari tabel yang sama.
  • Buat tabel terpisah untuk setiap kelompok data terkait dan identifikasi setiap baris dengan kolom unik (kunci primer).

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

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:

  • Manajer
  • Bawahan1
  • Bawahan2
  • Bawahan3
  • Bawahan4

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:

  • Manajer
  • Bawahan

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:

  • Manajer
  • Bawahan

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

Identifikasi Kunci Utama

Sekarang, bagaimana dengan aturan kedua: identifikasikan setiap baris dengan kolom unik atau kumpulan kolom (kunci primer). 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:

  • ID Manajer
  • ID bawahan

Sekarang, meja kami dalam bentuk normal pertama! Di luar ini, ada pilihan untuk menempatkan database Anda dalam Bentuk Normal Kedua serta Bentuk Normal Ketiga jika Anda bersemangat tentang organisasi bahkan lebih.