Normalisasi pada database
1. Pengertian normalisasi database
Normalisasi adalah suatu teknik untuk mengorganisasi data kedalam tabel-tabel untuk memenuhi kebutuhan pemakai didalam suatu organisasi.
Yang dimaksud dengan normalisasi pada database adalah proses pernormalan suatu database yang disusun agar menghindari terjadinya redudancy (kemubaziran data). Dalam melakukan normalisasi.
2. Tahapan-tahapan normalisasi
- Unnormalized
Pada tahap ini, kita mengambil seluruh data yang ada dan diperlukan dalam database itu sendiri. Misalnya pada contoh bon faktur di bawah ini,
Kita ambil data-data yang diperlukan pada database nantinya, sperti * Nama Supplier * Alamat Supplier * No. Telp. * No. Nota * Tanggal Transaksi * Kode Barang * Nama Barang * Harga * Quantity * Total * Subtotal * Pemberi * Penerima
- Normal Satu
Pada tahap ini, kita bagi seluruh data yang diperlukan menjadi beberapa bagian berdasarkan jenis data tersebut,
Supplier * Nama Supplier * Alamat * No. Telp.Transaksi * No. Nota * Kode Barang * Tanggal Transaksi * Nama Barang * Harga Barang * Satuan * Quantity * Total * Sub Total
- Normal Dua
Pada tahap ini, kita bagi berdasarkan jenis dan memberikan primary key pada masing-masing tabel,
Supplier * Kode Supplier * Nama Supplier * Alamat * No. Telp.Master Barang * Kode Barang * Nama Barang * Harga * Satuan Transaksi * No. Nota * Tanggal Transaksi * Kode Barang * Nama Barang * Harga * Satuan * Quantity * Pemberi * Penerima
- Normal Tiga
Pada tahap ini, kita bagi menjadi lebih terperinci untuk menghindari terjadinya redudancy,
Supplier * Tetap Master Barang * Tetap Transaksi Dibagi menjadi: Header Transaksi * No. Nota * Tanggal Transaksi * Kode Supplier * Pemberi * Penerima Detail Transaksi * No. Nota * Kode Barang * Quantity
3. Tujuan dari normalisasi
- Untuk menghilangkan kerangkapan data
- Untuk mengurangi kompleksitas
- Untuk mempermudah pemodifikasian data
4. Proses Normalisasi
- Data diuraikan dalam bentuk tabel, selanjutnya dianalisis berdasarkan persyaratan tertentu ke beberapa tingkat.
- Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai memenuhi bentuk yang optimal
5. Syarat perlunyya normalisasi:
- Fleksibilitas
Struktur database harus menunjang semua cara untuk menampilan data, sehingga ketika user menjalankan aplikasi dan meminta sesuatu dalam datbase, database harus dapat berjlan memenuhi permintaan user.
- integritas data
Semua data dalam database yang berkaitan harus terhubung dalam suatu relationship. Sehingga ketika suatu data berubah,maka semua data yang berkaitan dengan data tersebut harus dapat berubah secara otomatis.
- Efficiency
Pada database, ukuran suatu database merupakan hal yang penting. Maka dalam database, kita harus mengurangi redudansi data yang bisa menyebabkan ukuran databse membengkak.
- Menghindari modification anomaly
Desain database yang baik menyajikan suatu keyakinan bahwa ketika user melakukan perubahan dalam database, maka tidak terjadi hal yang tidak diinginkan.
6. Kapan tidak memakai normalisasi
- ketika kita ingin mempertahankan kesederhanaan database, sehingga user dapat melakukan query sendiri.
- jika tidak ingin melakukan query yang rumit. normalisasi biasanya akan membuat rumit query karena melibatkan banyak tabel.
- tidak selamanya normalisasi membuat baik, malah akan menyebabkan database semakin buruk
Normalisasi database biasanya jarang dilakukan dalam database skala kecil, dan dianggap tidak diperlukan pada penggunaan personal. Namun seiring dengan berkembangnya informasi yang dikandung dalam sebuah database, proses normalisasi akan sangat membantu dalam menghemat ruang yang digunakan oleh setiap tabel di dalamnya, sekaligus mempercepat proses permintaan data.
Proses normalisasi model data dapat diringkas sebagai berikut:
- Menemukan entitas-entitas utama dalam model data.
- Menemukan hubungan antara setiap entitas.
- Menentukan atribut yang dimiliki masing-masing entitas
7. Langkah-Langkah Normalisasi
- Bentuk Normal Pertama ( 1NF )
Sebuah model data dikatakan memenuhi bentuk normal pertama apabila setiap atribut yang dimilikinya memiliki satu dan hanya satu nilai. Apabila ada atribut yang memiliki nilai lebih dari satu, atribut tersebut adalah kandidat untuk menjadi entitas tersendiri.
- Bentuk Normal Kedua ( 2NF )
Bentuk normal 2NF terpenuhi dalam sebuah tabel jikatelah memenuhi bentuk 1NF, dan semua atribut selainprimary key, secara utuh memiliki Functional Dependency(Dependesi Fungsional) pada primary key.Sebuah tabel tidak memenuhi 2NF, jika ada atribut yangketergantungannya (Functional Dependency) hanyabersifat parsial saja (hanya tergantung pada sebagiandari primary key) –> HARUS DIBUANG.Setiap atribut non-kunci-primer memilikidependensi sepenuhnya terhadap kunci primer.Jika terdapat atribut yang tidak memiliki ketergantunganterhadap primary key, maka atribut tersebut harusdipindah atau dihilangkan
- .Bentuk Normal Ketiga (3NF)
Suatu relasi berada dalam bentuk normal ketigajika:
- Memenuhi bentuk normal kedua
- tidak ada dependensi transitif ( Y memiliki dependensi terhadap X dan Z memiliki dependensi terhadap Y)
- Bentuk Normal Tahap Keempat (4th Normal Form /4NF)
Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute. Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies
- Bentuk Normal Tahap Keempat (5th Normal Form /5NF)
Bentuk normal 5NF terpenuhi jika tidak dapat memiliki sebuah lossless decomposition menjadi tabel-tabel yg lebih kecil. Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah didekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula.