Normalisasi

 This blog contains about Normalisasi



Normalisasi

Normalisasi merupakan sebuah teknik logical desain dalam sebuah basis data yang mengelompokkan atribut dari berbagai entitas dalam suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi/pengulangan data) serta sebagian besar ambiguity bisa dihilangkan.

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

Normalisasi database terdiri dari banyak bentuk, dalam ilmu basis data ada setidaknya 9 bentuk normalisasi yang ada yaitu 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, dan 6NF. 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.

Tujuan normalisasi database adalah untuk mengurangi pengulangan data, memastikan data berada di posisi yang tepat, tidak adanya sejumlah data yang masuk ke database, adanya penghapusan data yang tidak sesuai dan data yang diubah tidak sesuai keinginan. 

Ada beberapa tahapan normalisasi database yang perlu dilakukan agar hasilnya sesuai dan baik, yaitu:

  • Unnormalized Form (UNF). UNF adalah bentuk data yang tidak normal karena adanya pengulangan grup pada data, sehingga menjadi masalah saat akan manipulasi data.
  • First Normal Form (1NF). 1NF adalah bentuk normalisasi untuk mengelompokkan beberapa data sejenis untuk mengatasi masalah anomali. 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.
  • Second Normal Form (2NF). 2NF adalah bentuk kedua yang melakukan dekomposisi tabel untuk mencari kunci primer dari setiap tabel. Sebuah model data dikatakan memenuhi bentuk normal kedua apabila ia memenuhi bentuk normal pertama dan setiap atribut non-identifier sebuah entitas bergantung sepenuhnya hanya pada semua identifier entitas tersebut.
  • Third Normal Form (3NF). 3NF adalah bentuk normalisasi data yang tidak boleh ada atribut yang bergantung pada field lain dan bukan pada kunci primer, sehingga atribut itu harus dipisah ke tabel baru. Sebuah model data dikatakan memenuhi bentuk normal ketiga apabila ia memenuhi bentuk normal kedua dan tidak ada satupun atribut non-identifying (bukan pengidentifikasi unik) yang bergantung pada atribut non-identifying lain. Apabila ada, pisahkan salah satu atribut tersebut menjadi entitas baru, dan atribut yang bergantung padanya menjadi atribut entitas baru tersebut.
  • Code Normal Form (BCNF). BCNF adalah bentuk normalisasi yang bertujuan untuk mengatasi anomali dan over looping yang tidak bisa diatasi dalam bentuk 3NF.
  • Fifth Normal Form (5NF). 5NF adalah tahapan untuk mengatasi terjadinya joint dependent sehingga terjadi pemecahan relasi menjadi dua. 

Contoh normalisasi database

a.1NF (Bentuk Normal Pertama)

Misalkan kita memiliki sebuah tabel berikut ini yang berisi data pelanggan:

ID PelangganNama PelangganAlamatNomor Telepon
1John DoeJl. Sudirman 123081234567890
2Jane SmithJl. Gatot Subroto 456085678912345
3Bob LeeJl. Hayam Wuruk 789082345678901
4Alice JohnsonJl. Asia Afrika 101081234567890
Namun, tabel ini belum dalam bentuk normalisasi 1NF karena setiap baris masih berisi beberapa nilai. Ada beberapa kolom yang berisi beberapa nilai, seperti kolom "Alamat" dan "Nomor Telepon", dan ini melanggar aturan bahwa setiap sel di dalam tabel harus berisi satu nilai tunggal.

Untuk mengubah tabel ini ke dalam bentuk 1NF, kita perlu memecah nilai-nilai dalam kolom menjadi baris-baris terpisah, sehingga setiap sel hanya berisi satu nilai tunggal.
ID PelangganNama PelangganAlamatNomor Telepon
1John DoeJl. Sudirman 123081234567890
2Jane SmithJl. Gatot Subroto 456085678912345
3Bob LeeJl. Hayam Wuruk 789082345678901
4Alice JohnsonJl. Asia Afrika 101081234567890
Kita perlu membuat tabel baru untuk menyimpan data alamat pelanggan, sehingga setiap baris hanya berisi satu alamat.
ID PelangganNama PelangganAlamat
1John DoeJl. Sudirman 123
2Jane SmithJl. Gatot Subroto 456
3Bob LeeJl. Hayam Wuruk 789
4Alice JohnsonJl. Asia Afrika 101
Kita juga perlu membuat tabel baru untuk menyimpan data nomor telepon pelanggan, sehingga setiap baris hanya berisi satu nomor telepon.
ID PelangganNomor Telepon
1081234567890
2085678912345
3082345678901
4081234567890
Dengan melakukan normalisasi ke 1NF, kita telah memastikan bahwa setiap sel dalam tabel hanya berisi satu nilai tunggal. Hal ini memudahkan kita untuk melakukan manipulasi data dan menjaga integritas data pada basis data.

b. 2NF (Two Normal Form)

Berikut adalah contoh bentuk normal kedua dengan data dari 1NF dan kunci utama kolom tunggal yang tidak bergantung secara fungsional pada subset manapun dari relasi kunci kandidat dengan tabel baru untuk identitas member. 


c. 3NF (Three Normal Form)

Berikut adalah contoh bentuk normal ketiga dengan memisahkan tabel baru untuk panggilan. 


d. BCNF (Code Normal Form)

BCNF (Boyce-Codd Normal Form) adalah bentuk normalisasi database yang lebih ketat daripada bentuk normalisasi yang lebih rendah seperti 1NF, 2NF, dan 3NF. Untuk mengubah suatu tabel ke dalam BCNF, tabel tersebut harus memenuhi dua persyaratan yaitu:

  • Setiap atribut harus sepenuhnya bergantung pada kunci utama tabel, atau
  • Setiap atribut harus sepenuhnya bergantung pada kunci utama tabel, atau
Berikut ini adalah contoh normalisasi ke BCNF:

Misalkan kita memiliki tabel "produk" dengan atribut sebagai berikut:
Kode_ProdukNama_ProdukKategoriHargaStok
001SepatuFashion200.00010
002BukuBuku50.00020
003TopiFashion30.0005
004KemejaFashion100.00015
005MouseElektronik80.0008
Dalam tabel ini, Kode_Produk adalah kunci utama. Namun, atribut Kategori tidak sepenuhnya bergantung pada kunci utama, karena beberapa produk dapat masuk ke dalam kategori yang sama. Oleh karena itu, tabel ini tidak dalam BCNF.

Untuk mengubah tabel ini ke BCNF, kita perlu memisahkan atribut Kategori menjadi tabel tersendiri. Berikut ini adalah hasil normalisasi ke BCNF:

Tabel Produk:
Kode_ProdukNama_ProdukHargaStok
001Sepatu200.00010
002Buku50.00020
003Topi30.0005
004Kemeja100.00015
005Mouse80.0008
Tabel Kategori:
KategoriKode_Produk
Fashion001
Buku002
Fashion003
Fashion004
Elektronik005
Dalam hasil normalisasi ini, tabel Produk tidak lagi memiliki atribut Kategori dan telah memenuhi kriteria pertama BCNF. Sedangkan, tabel Kategori memiliki atribut Kategori yang saling independen satu sama lain dan telah memenuhi kriteria kedua BCNF.

e. 4NF (Fourth Normal Form)

4NF (Fourth Normal Form) adalah bentuk normalisasi database yang lebih ketat daripada bentuk normalisasi yang lebih rendah seperti 1NF, 2NF, dan 3NF. Untuk mengubah suatu tabel ke dalam 4NF, tabel tersebut harus memenuhi dua persyaratan yaitu:

  • Tabel harus sudah dalam bentuk 3NF
  • Tabel tersebut tidak memiliki ketergantungan multivalued yang tidak terdapat dalam kunci utama.

Berikut ini adalah contoh normalisasi ke 4NF:

Misalkan kita memiliki tabel "mahasiswa" dengan atribut sebagai berikut:
NIMNamaJurusanHobi
001AndiTeknikRenang, Musik
002BudiEkonomiMembaca, Futsal, Musik
003CiciTeknikBelanja, Renang
004DediHukumFutsal, Musik
Dalam tabel ini, NIM adalah kunci utama. Atribut Hobi memiliki lebih dari satu nilai untuk setiap mahasiswa dan tidak sepenuhnya bergantung pada kunci utama. Oleh karena itu, tabel ini tidak dalam 4NF.

Untuk mengubah tabel ini ke dalam 4NF, kita perlu memisahkan atribut Hobi menjadi tabel tersendiri dengan kunci utama NIM dan Hobi. Berikut ini adalah hasil normalisasi ke 4NF:

Tabel Mahasiswa:
NIMNamaJurusan
001AndiTeknik
002BudiEkonomi
003CiciTeknik
004DediHukum
Tabel Hobby:
NIMHobi
001Renang
001Musik
002Membaca
002Futsal
002Musik
003Belanja
003Renang
004Futsal
004Musik
Dalam hasil normalisasi ini, tabel Mahasiswa tidak lagi memiliki atribut Hobi dan telah memenuhi kriteria pertama 4NF. Sedangkan, tabel Hobi memiliki ketergantungan multivalued yang dapat ditempatkan pada tabel tersendiri dan telah memenuhi kriteria kedua 4NF.

e. 5NF (Fifth Normal Form)

Contoh normalisasi ke 5NF mungkin sulit ditemukan karena 5NF tidak selalu diperlukan dalam struktur basis data yang umum. Namun, mari kita lihat contoh hipotetis untuk melihat bagaimana sebuah basis data dapat dinormalisasi ke dalam 5NF.


Misalkan kita memiliki basis data untuk sebuah toko buku online yang berisi informasi tentang buku, penulis, dan penerbit. Saat ini, basis data kami terdiri dari satu tabel dengan kolom-kolom berikut:
IDJudul BukuNama PenulisPenerbitKota PenerbitNegara Penerbit
1Harry Potter dan Batu BertuahJ.K. RowlingGramediaJakartaIndonesia
2The Da Vinci CodeDan BrownGramediaJakartaIndonesia
3The Lord of The RingsJ.R.R. TolkienHarperCollinsLondonInggris
Namun, basis data ini tidak dalam bentuk 5NF karena ada redundansi data di dalamnya. Misalnya, ada beberapa buku yang diterbitkan oleh penerbit yang sama, dan oleh karena itu memiliki kota dan negara penerbit yang sama. Ini berarti bahwa informasi tentang kota dan negara penerbit disimpan berulang kali untuk buku yang sama.

Untuk mengatasi masalah ini, kami dapat membuat tiga tabel baru:

Tabel "Buku" yang berisi ID buku dan judul buku.
IDJudul Buku
1Harry Potter dan Batu Bertuah
2The Da Vinci Code
3The Lord of The Rings
Tabel "Penulis" yang berisi ID penulis dan nama penulis.
IDNama Penulis
1J.K. Rowling
2Dan Brown
3J.R.R. Tolkien
Tabel "Penerbit" yang berisi ID penerbit, nama penerbit, kota penerbit, dan negara penerbit.
IDNama PenerbitKota PenerbitNegara Penerbit
1GramediaJakartaIndonesia
2HarperCollinsLondonInggris
Selanjutnya, kita dapat membuat dua tabel tambahan untuk mengaitkan buku, penulis, dan penerbit.

Tabel "Buku_Penulis" yang mengaitkan buku dan penulis.
ID_BukuID_Penulis
11
22
33
Tabel "Buku_Penerbit" yang mengaitkan buku dan penerbit.
ID_BukuID_Penerbit
11
21
32
Dengan membuat tabel-tabel baru seperti ini, kita dapat menghindari redundansi data dan membentuk basis data dalam bentuk 5NF.

NAH... Itu dia contoh dan pembahasan tentang normalisasi.. Semoga teman-teman bisa memahaminya ya!! Jangan lupa explore lebih jauh dari ini
#SALAMBELAJAR!

Komentar

Postingan populer dari blog ini

PRAKTIKUM DATABASE

Field from Database structure

GIT