4 MySQL - Normalisasi Basisdata/Database
Ketika membuat sebuah basisdata, tidak semua data yang dirancang akan langsung berada pada tempat yang tepat.
Karena hal itu diperlukan untuk melakukan normalisasi. Normalisasi merupakan langkah yang dilakukan dalam perancangan database untuk membentuk entitas yang sederhana, mengihalangkan atau mencegah terjadinya pengulangan data (redudansi), meningkatkan fleksibelitas dan efisiensi serta membuat database dapat digunakan dalam rentang waktu yang panjeng (mudah beradaptasi) Database yang belum di normalisasi dapat menyebabkan terjadinya anomali baik itu dalam proses Insert, Update maupun Delete
Anomali Normalisasi
Insert Anomali: Anomali yang terjadi ketika memasukan data kedalam sebuah tabel, hal biasa yang ditemukan adalah field yang kosong atau tidak terisi karena tidak ada data
Delete Anomali: Anomali yang terjadi ketika menghapus data didalam sebuah tabel, hal ini bisa terjadi karena field yang memiliki ketergantungan secara penuh dengan sebuah field yang ada di tabel lain, maka jika kita menghapus sebuah data di tabel maka data di tabel lain akan ikut terhapus
Update Anomali: Anomali yang terjadi ketika mengubah data yang sudah ada, misalnya tidak ada primary key dan foreign key di setiap tabel, artinya ketika kita mengupdate data di sebuah tabel data yang terkait di tabel lain harus dirubah secara manual karena tidak adanya foreign key dan primary key
Tahap Normalisasi
Dalam melakukan normalisasi, kita akan melalui 7 tahapan, dimana pada kejadian umumnya normalisasi dilakukan sampai dengan tahap normal 3, tetapi masih bisa dilanjutkan ketika ada field atau tabel yang masih belum normal
1) Bentuk tidak normal
Bentuk tidak normal merupakan kumpulan data yang didapatkan dari sumber data, tidak ada format tertentu untuk melakukan penulisan data yang didapat, data dapat saja data tidak lengkap atau terduplikasi.
Data yang dikumpulkan sesuai dengan saat data tersebut diinput. Penulisan data pada sumber dalam bentuk tidak normal adalah sebagai berikut:
Dapat diketahui pada Gambar 1 semua data dimasukan sesuai dengan apa adanya, tidak ada ketentuan yang mengikat untuk menuliskan normal pertama ini.
2) Normal Pertama (1NF)
Pembentukan normal pertama menggunakan beberapa syaratar yang harus dipenuhi. Syarat normal pertama (1-NF) adalah sebagai berikut:
a. setiap data dibentuk dalam flat file, data dibentuk dalam satu record demi satu record nilai dari field berupa “atomic value”.
b. tidak ada set atribut yang berulang atau bernilai ganda.
c. telah ditentukannya primary key untuk tabel / relasi tersebut.
d. tiap atribut hanya memiliki satu pengertian.
Pada Gambar 2 semua data dimasukan kedalam tabel agar memenuhi semua kolom tabel yang ada.
3) Normal Kedua (2NF)
Bentuk normal kedua didasari atas konsep full functional dependency (ketergantungan fungsional sepenuhnya) yang dapat didefinisikan sebagai berikut.
Jika A adalah atribut-atribut dari suatu relasi, B dikatakan full functional dependency (memiliki ketergantungan fungsional terhadap A, tetapi tidak secara tepat memiliki ketergantungan fungsional dari subset (himpunan bagian) dari A. Syarat normal kedua (2-NF) sebagai berikut:
a. Bentuk data telah memenuhi kriteria bentuk normal kesatu.
b. Atribute bukan kunci (non-key) haruslah memiliki ketergantungan fungsional sepenuhnya (fully functional dependency) pada kunci utama / primary key.
Gambar 3 Tabel tb_suplier merupakan tampilan dari tabel tb_supplier yang berisikan data G01 untuk kode supplier dan Gobel nustra untuk nama suplier.
Gambar 4 merupakan tampilan dari tabel tb_barang yang berisikan tiga kolom yaitu kode barang, nama barang dan harga satuan.
Gambar 5 tb_faktur merupakan tampilan dari tabel faktur yang berisikan tujuh kolom yaitu No_faktur, kode_barang, kode_suplier, tanggal faktur, jatuh tempo, qty dan total
4) Normal Ketiga (3NF)
Walaupun relasi 2-NF memiliki redudansi yang lebih sedikit dari pada relasi 1-NF, namun relasi tersebut masih mungkin mengalami kendala bila terjadi anomaly peremajaan (update) terhadap relasi tersebut. Syarat normal ketiga (Third Normal Form / 3 NF) sebagai berikut:
a. Bentuk data telah memenuhi kriteria bentuk normal kedua.
b. Atribute bukan kunci (non-key) harus tidak memiliki ketergantungan transitif, dengan kata lain suatu atribut bukan kunci (non_key) tidak boleh memiliki ketergantungan fungsional (functional dependency) terhadap atribut bukan kunci lainnya, seluruh atribut bukan kunci pada suatu relasi hanya memiliki ketergantungan fungsional terhadap primary key di relasi itu saja.
c. Seluruh atribut non-primary key pada relasi Pelanggan dan Biaya di atas terlihat memiliki ketergantungan fungsional (functional dependency) terhadap primary key dari masing-masing tabel / relasi. Relasi/tabel Pelanggan dan Biaya di atas tidak memiliki ketergantungan transitif (transitive dependency), sehingga tabel tersebut telah memenuhi.
Gambar 6 tb_suplier merupakan tampilan dari tabel tb_suplier yang berisikan data G01 untuk kode_supplier dan Gobel_nustra untuk nama_suplier. Sama seperti pada normal kedua.
Gambar 7 tb_transaksi merupakan tampilan dari tabel tb_transaksi yang berisikan kolom kode barang, nomor faktur, qty dan harga.
Gambar 2.8 tb_faktur merupakan tampilan dari tabel tb_faktur yang berisikan kolom no faktur, kode suplier, tangggal faktur, jatuh tempo, total.
Gambar 2.9 tb_barang merupakan tampilan dari tabel tb_barang yang berisikan data kolom kode, nama_barang, Harga_satuan.
5) Boyce-Code Normal Form (BCNF)
Suatu relasi disebut memenuhi bentuk normal Boyce-Codd jika dan hanya jika semua penentu (determinan) adalah candidate key (atribut yang bersifat unik).
BCNF merupakan bentuk normal sebagian perbaikan terhadap 3NF. Suatu relasi yang memenuhi BCNF selalu memenuhi 3NF, tetapi tidak untuk sebaliknya, Suatu relasi yang memenuhi 3NF belum tentu memenuhi BCNF.
Dalam banyak literatur disebutkan bahwa BCNF adalah perbaikan dari 3NF, karena bentuk normal ketigapun mungkin masih mengandung anomali sehingga masih perlu dinormalisasi lebih lanjut. BCNF memiliki ketentuan yaitu:
a. Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap Functional Dependency terhadap setiap atribut atau gabungan atribut dalam bentuk : X –> Y maka X adalah Super Key.
b. Tabel tersebut harus di dekomposisi berdasarkan Functional Dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi.
c. Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk Functional Dependency X –> A, BCNF tidak membolehkan A sebagai bagian dari primary key.
d. Properti penting BCNF adalah relasi tidak memiliki informasi yang redundan.
BCNF dengan normal 3NF memiliki perbedaan. Adapun perbedaan dari normal BCNF dengan normal 3NF adalah sebagai berikut :
a. Pada BCNF suatu atribut yang bergantung secara fungsional terhadap primary key , mungkin saja merupakan kunci primer bagi atribut yang lain.
b. Pada 3NF hal ini bisa saja terjadi dan tidak menjadi masalah.
6) Normal Keempat (4NF)
Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued attribute.
Setiap multivalued attribute (MVD) juga harus merupakan Functional Dependency.
7) Normal Kelima (5NF)
Bentuk normal 5NF terpenuhi jika memiliki sebuah loseloss decomposition menjadi tabel-tabel yang lebih kecil.
Jika 4 bentuk normal sebelumnya dibentuk berdasarkan Functional Dependency, 5NF dibentuk berdasarkan konsep Join Dependence.
Yakni apabila sebuah tabel telah di dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi untuk membentuk tabel semula.
Komentar
Posting Komentar