Normalisasi Database (Langkah Dan Contoh)


Normalisasi Database (Langkah Dan Contoh) – Pada pembahasan kali ini kami berikan materi seputar normalisasi database. Apa itu normalisasi database?

Normalisasi database adalah upaya untuk mendapatkan sebuah basis data dengan struktur yang baik. Caranya adalah dengan menerapkan beberapa aturan pada tiap-tiap tabel supaya ruang penyimpanan efisien. Normalisasi juga bisa disederhanakan menjadi memecah relasi menjadi beberapa tabel untuk memperoleh database yang optimal.

Normalisasi database umumnya jarang dilakukan dalam database skala kecil. Sehingga hal ini dianggap tidak diperlukan pada penggunaan personal. Hanya saja seiring dengan berjalannya waktu dan berkembangnya informasi yang disimpan dalam database, proses normalisasi menjadi sangat diperlukan karena bisa membantu dalam menghemat ruang yang dipakai oleh setiap tabel di dalamnya, sekaligus mempercepat proses permintaan data.

Secara sederhana normalisasi model data bisa disingkat dalam tiga proses. Antara lain menemukan entitas-entitas utama dalam model data, menemukan hubungan antara setiap entitas dan menentukan atribut yang dimiliki masing-masing entitas.

Baca juga: Cara Membuat Foreign Key Di MySQL

Langkah Normalisasi Database

Bentuk Normal Pertama (1NF)

Suatu model data bisa disebut memenuhi bentuk normal pertama jika setiap atribut yang dimilikinya mempunyai satu nilai saja. Jika ada yang mempunyai nilai lebih dari satu atribut tersebut menjadi kandidat untuk menjadi entitas tersendiri.

Sebagai contoh entitas utama dari database tugas mata kuliah adalah tugas mata kuliah. Berikut sebian atribut yang dimiliki entitas tersebut.

Atribut Nama Kelas memuat kelas-kelas di mana tugas tersebut berlaku. Jika pendaftar untuk suatu mata kuliah melebihi kapasitas ruangan yang dimiliki oleh suatu fakultas, biasanya Kepala Program Studi akan membagi kegiatan perkuliahan untuk mata kuliah tersebut menjadi beberapa kelas.

Oleh karenanya atribut tersebut rentan mempunyai nilai jamak. Sehingga atribut tersebut lebih sesuai menjadi entitas baru atau atribut dari entitas lain.

Sementara kita buat entitas baru Kelas di mana sebagian atributnya berasal dari Tugas Matakuliah yang lebih sesuai menjadi atribut entitas ini. Jika diamati hampir semua atribut entitas Tugas Matakuliah selain Nama Kelas mempunyai nilai tunggal. Dengan catatan setiap matakuliah diampu oleh satu dosen.

Relasi Antas-Entitas dan Identifier

Tugas kita sekarang adalah menghubungkan Tugas Matakuliah dengan Kelas. Satu tugas bisa diberikan pada beberapa kelas yang berbeda. Dalam terminologi pemodelan data, kondisi tersebut menandakan bahwa entitas Tugas Matakuliah dan entitas Kelas mempunyai relasi 1:N atau 1-N untuk nilai N lebih dari satu.

Untuk menghubungkan kedua entitas tersebut bisa dengan menyertakan identitas satu entitas sebagai atribut entitas lain. Identitas sebuah entitas harus unik agar tidak terjadi ambiguitas ketika akan merujuk pada satu objek khusus dari entitas tersebut.

Entitas Tugas Matakuliah akan memakai pengidentifikasi arbitrer berupa angka yang berbeda antara satu objek Tugas Matakuliah dengan objek objek Tugas Matakuliah lain. Entitas Kelas bisa diidentifikasi dengan matakuliah dan kode kelas yang bersangkutan. Sehingga kita perlu menambahkan atribut pengidentifikasi atau identifier dalam kedua entitas.

Entitas tersebut berikut seluruh atribut baru dan hubungannya dengan Tugas Matakuliah diperlihatkan dalam Gambar 2, dengan memakai notasi relasi crows foot atau simbol kaki gagak yang menunjuk pada entitas jamak.

Jika diperhatikan tidak ada atribut entitas yang mempunyai nilai lebih dari satu. Sehingga dapat dikatakan bahwa model di atas memenuhi bentuk normal pertama.

Bentuk Normal Kedua (2NF)

Model data bisa dikatakan memenuhi bentuk normal kedua jika memenuhi bentuk pertama dan setiap atribut non-identifier suatu entitas bergantung sepenuhnya hanya pada seluruh identifier entitas tersebut.

Jika mencermati contoh model data di atas, Anda bisa mengetahui bahwa atribut dari entitas Kelas tidak sepenuhnya bergantung pada identitas unik Kelas. Seorang dosen akan tetap ada walaupun kelas matakuliah yang dosen tersebut ampu sudah tidak ada lagi.

Sehingga dalam kasus tersebut dosen merupakan entitas tersendiri yang nantinya bisa dilekatkan pada entitas Fakultas atau Universitas jika kedua entitas tersebut perlu ada.

Identifier

Mungkin ada yang beranggapan bahwa individu bisa diidentifikasi secara unik lewat namanya. Padahal bisa saja nama tersebut juga dimiliki orang lain, sekalipun satu rangkaian nama lengkap.

Maka dari itu pemodelan data yang melibatkan informasi tentang individu jarang memakai nama individu sebagai satu-satunya pengidentifikasi. Implementasi RDBMS tertentu juga akan lebih cepat memproses query atas suatu tabel jika tabel itu diindeks oleh nilai integer unik dibandingkan jika memakai indeks karakter. Sebab rangkaian karakter perlu diumpankan ke fungsi hash supaya bisa dipakai sebagai indeks tabel, berbeda dengan integer unik.

Untuk itu entitas Dosen pada model data di atas akan menggunakan pengidentifikasi arbitrer berupa Nomor Induk Pegawai. Dalam notasi crows foot, relasi non-identifying digambarkan dengan garis-putus-putus.

Sesudah atribut-atribut dari seluruh entitas dalam sebuah model data hanya bergantung pada seluruh pengidentifikasi entitas yang memilikinya, model data itu bisa disebut memenuhi bentuk normal kedua.

Bentuk Normal Ketiga (3NF)

Model data bisa dikatakan memenuhi bentuk normal ketiga jika memenuhi bentuk normal kedua dan tidak ada satupun atribut non-identifying yang bergantung pada atribut non-identifying lain. Jika ada, maka kita bisa memisahkan salah satu atribut tersebut menjadi entitas baru, dan atribut yang bergantung padanya menjadi atribut dari entitas baru tersebut.

Berdasarkan model data di atas, tidak ada atribut non-identifying yang bergantun gpada atribut non-identifying lain. Maka dari itu kita misalkan entitas Dosen mempunyai atribut informasi tentang Alamat Rumah dan Nomor Telepon.

Keduanya tidak bisa mengidentifikasi objek tertentu dari entitas Dosen secara unik. Akan tetapi keduanya saling bergantung. Seperti langkah-langkah normalisasi sebelumnya, jenis kebergantungan ini bisa dihilangkan dengan membuat entitas baru lagi.

Model terakhir yang kita dapat tersebut sudah memenuhi bentuk normal ketiga, sehingga siap untuk dikonversi menjadi tabel.

Baca juga: Cara Membuat Database Di MySQL

Menerjemahkan Model Data

Saat model data siap untuk diubah menjadi database fisik, maka langkah berikutnya adalah menerjemahkan model data tersebut. Langkah-langkahnya adalah sebagai berikut:

  1. Setiap entitas menjadi tabel tersendiri
  2. Masing-masing atribut menjadi kolom-kolom tabel tersebut, dengan tipe data yang disesuaikan
  3. Identifier entitas menjadi kolom ID yang tidak boleh kosong dan berisi indeks unik. ID unik tersebut dinamakan primary key
  4. Relasi diterjemahkan menjadi foreign key

Perintah SQL untuk menciptakan ketiga tabel tersebut adalah sebagai berikut:

Skrip SQL di atas memakai tipe data dan konfigurasi tabel yang didukung MySQL. Jangan lupa untuk mengatur deklarasi TYPE=InnoDB untuk setiap tabel agar MySQL bisa memakai InnoDB yang mendukung pemakaian foreign key.

Foreign Key

Ada beberapa hal yang perlu diingat tentang penerjemahan relasi menjadi foreign key, di antaranya:

  1. Relasi 1-1 diterjemahkan menjadi identifier salah satu tabel menjadi foreign key dalam tabel lain. Keputusan tentang tabel mana yang harus menerima identifier tabel lain bisa diambil sesuai keinginan. Akan tetapi seringkali pertimbangan praktis yang akan menentukan tabel mana yang berisi foreign key.
  2. Khusus untuk MySQL, dalam beberapa versi hanya storage engine InnoDB yang mendukung penggunaan foreign key. Sedangkan mesin penyimpanan lain seperti MyISAM atau BDB tidak mendukung konfigurasi foreign key dalam perintah SQL CREATE TABLE. Sehingga akan diabaikan jika menjumpai kondisi tersebut.


Loading...

Leave a Comment