Normalisasi Database

Normalisasi Database


1. Pengertian Normalisasi Database

Apa Itu Normalisasi Database?

   Normalisasi database adalah proses pengelompokan atribut data yang membentuk entitas sederhana, nonredundant, fleksibel, dan mudah beradaptasi. Sehingga dapat dipastikan bahwa database yang dibuat berkualitas baik.

2. Tujuan Normalisasi Database

Tujuan utama dari normalisasi database adalah:

- Menghilangkan dan mengurangi redudansi data.
- Memastikan dependensi data (data berada pada tabel yang tepat).


Jika sebuah database belum dinormalisasi, kemungkinan terburuk yang akan merugikan sistem adalah:

a. INSERT Anomali

Situasi dimana tidak memungkinkan untuk memasukkan beberapa jenis data secara langsung di database.

b. UPDATE Anomali

Situasi dimana nilai yang diubah mengakibatkan ketidakkonsistenan database, artinya data yang diubah tidak sesuai dengan yang diinginkan.

c. DELETE Anomali

Penghapusan data tidak sesuai yang diharapkan, artinya data yang seharusnya tidak terhapus malah terhapus.

3. Database Seperti Apa Yang Bisa Dinormalisasi?

   Tidak semua database bisa dinormalisasi, hanya tipe “relational database” yang bisa dinormalisasi. Banyak vendor DBMS (Database Management System) diantaranya Oracle, MySQL, SQL Server, PostgreSQL, dll.

4. Bagaimana Cara Melakukan Normalisasi Database?

   Untuk melakukan normalisasi database kita harus mengidentifikasi data seperti apa yang akan disimpan.



Contoh data di atas merupakan data yang belum dinormalisasi, selanjutnya menuju tahap normalisasi 

1NF

   Suatu tabel dikatakan 1NF jika dan hanya jika setiap atribut dari data tersebut hanya memiliki nilai tunggal dalam satu baris.

Jadi, tabel yang belum dinormalisasi tadi perlu diubah, sehingga bentuk 1NF menjadi seperti ini



   Inti dari normalisasi 1NF adalah tidak boleh ada grouping data ataupun duplikasi data. Sekarang lanjut pada tahap normalisasi 2NF

2NF

   Syarat 2NF adalah tidak diperkenankan adanya partial “functional dependency” kepada primary key dalam sebuah tabel

Apa itu “functional dependency”?

   Functional dependency adalah setiap atribut yang bukan kunci (non key) bergantung secara fungsional terhadap primary key.

   Intinya adalah pada tahap normalisasi 2NF ini tabel tersebut harus dipecah berdasarkan primary key. Sehingga bentuk normalisasi 2NF dari tabel tersebut adalah sebagai berikut


3NF

Pada 3NF tidak diperkenankan adanya partial “transitive dependency” dalam sebuah tabel

Apa itu “transitive dependency”? Transitive dependency biasanya terjadi pada tabel hasil relasi, atau kondisi dimana terdapat tiga atribut A, B, C. Kondisinya adalah A ⇒ B dan B ⇒ C. Maka C dikatakan sebagai transitive dependency terhadap A melalui B.

Intinya pada 3NF ini, jika terdapat suatu atribut yang tidak bergantung pada primary key tapi bergantung pada field yang lain maka atribut-atribut tersebut perlu dipisah ke tabel baru.

Contohnya ada pada atribut qty, kolom tersebut tidak bergantung langsung pada primary key kode_faktur melainkan bergantung pada kolom kode_barang. Jadi setelah dinormalisasi 3NF akan menghasilkan tabel berikut:



    Dari gambar tabel di atas dapat dilihat pada tahap normalisasi 3NF menghasilkan 1 tabel baru dari hasil pemecahan tabel transaksi yaitu tabel detail barang yang isinya menampung barang-barang yang dibeli

   Kolom harga pada tabel detail barang digunakan untuk menyimpan harga barang pada saat proses transaksi. Jadi, meskipun kolom harga pada tabel barang berubah (naik/turun), harga barang yang ada pada tabel detail barang tidak ikut berubah (fixed). Bayangkan jika kita tidak menambahkan kolom harga pada pada tabel detail barang, maka yang terjadi total invoice dari transaksi akan berubah seiring berubahnya harga barang.

5. Kesimpulan

   Normalisasi database adalah proses pengaturan data agar tidak terjadi duplikasi dan ketergantungan yang salah, sehingga data menjadi lebih konsisten dan efisien. Proses ini dilakukan secara bertahap dengan memecah tabel agar setiap data hanya bergantung pada kunci utama, sehingga menghindari anomali saat memasukkan, mengubah, atau menghapus data.


Komentar

Postingan Populer