Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF


Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database”, kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan di atas atau di link ini. Posting tulisan ini akan memberi contoh step-by-step dengan ilustrasi yang lebih aktual bagaimana melakukan normalisasi mulai dari UNF (atau Unnormalized Form) – 1NF – 2NF – dan 3NF.

Dari form tradisional ke tabel/relasi UNF

Kadang-kadang kita membuat relasi mulai dari 1NF tetapi terkadang juga dari UNF. Contoh disini akan kita mulai dari UNF saja supaya terlihat lebih lengkap. Perhatikan gambar form tradisional berikut:
Contoh form tradisional yang akan dikonversi menjadi bentuk tabel berbentuk kolom dan baris
Tabel hasil konversi dari form tradisional sebelumnya (tabel yang belum dinormalisasi)
Gambar tabel di atas tersebut adalah dalam bentuk unnormalized table, atau tabel/relasi yang belum dilakukan normalisasi. Dalam contoh tersebut, nama relasi/tabel adalah 'ClientRental'. Dan klien dengan clientNo CR76 yang bernama John Kay, sudah pernah bertransaksi dua kali dari hasil observasi form tersebut. Sehingga klien dengan clientNo CR76 yang bernama John Kay memiliki bagian yang berulang (perhatikam atribut-atribut porpertyNo, pAddress, rentStart, rentFinish, rent, ownerNo, oName) untuk klien yang sama. Sehingga data tentang clientNo dan cName terlihat kosong atau tidak dituliskan pada transaksi yang kedua, karena akan berisi data yang sama (berulang). Demikian juga untuk klien dengan clientNo CR56 yang bernama Aline Stewart. Jadi tabel tersebut disebut dalam kondisi UNF (atau unnormalized form) apabila tabel tersebut berisi satu atau lebih bagian yang berulang. Tabel semacam itu biasanya dihasilkan dari proses mengonversi form tradisional menjadi suatu tabel dalam bentuk kolom dan baris.


Dari UNF ke 1NF

Untuk mengonversi tabel dari UNF ke 1NF (normal bentuk pertama), yang perlu kita lakukan adalah: 1) menunjuk satu atau beberapa atribut untuk dijadikan sebagai ‘key’ dalam tabel UNF tersebut, 2) kemudian mengidentifikasi bagian yang berulang dalam tabel UNF tersebut, 3) dan setelah mengidentifikasi bagian yang berulang, kita perlu menghilangkan bagian yang berulang tersebut.

  1. Dengan mengisi data yang benar ke kolom/baris yang kosong yang berisi data yang berulang. Cara ini disebut dengan “flattening”. 
  2. Memisahkan data yang berulang bersama dengan ‘copy’ atribut yang kita tunjuk sebagai ‘key’ ke relasi/tabel yang lain. 
Contoh dari cara yang pertama adalah seperti dalam gambar berikut:
UNF ke 1NF dengan menggunakan cara pertama atau "flattening"
UNF ke 1NF dengan cara yang kedua, memisahkan bagian yang berulang ke tabel/relasi baru beserta 'copy' dari 'key' nya
Hasil relasi dari UNF ke 1NF dengan cara yang kedua. Yang digarisbawah adalah atribut yang menjadi 'key'

Dari 1NF ke 2NF

Untuk mengonversi dari 1NF ke 2NF kita akan menggunakan contoh tabel/relasi ‘ClientRental’ pada gambar di atas (lihat gambar tabel 'ClientRental' di atas). Kemudian yang kita lakukan adalah mengidentifikasi semua ketergatungan fungsional (functional dependencies). Berikutnya, untuk mengonversi dari 1NF-ke-2NF, fokus perhatian kita adalah pada ada atau tidaknya ketergantungan parsial/sebagian (partial dependency). Apabila kita menemukan adanya ketergantungan parsial/sebagian (partial dependency), maka kita harus menghilangkan ketergantungan parsial/sebagian tersebut. Cara menghilangkan ‘partial dependency' adalah dengan memindahkan atribut yang bergantung secara parsial tersebut menjadi relasi yang baru beserta copy dari atribut atau determinant yang menjadi bagian dari primary key pada relasi asalnya. Bila semua relasi sudah tidak mengandung ‘partial dependency’ maka semua relasi sudah berada dalam kondisi 2NF (atau bentuk normal kedua). Selengkapnya tentang konsep ketergantungan antar atribut dalam relasi bisa dipelajari dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database”.


Proses identifikasi ketergantungan fungsional (functional dependencies) pada tabel/relasi 'ClientRental'
Hasil identifikasi berbagai ketergantungan fungsional (functional dependencies) antar atribut dalam tabel/relasi 'ClientRental'
Gambar tabel-tabel hasil proses normalisasi 1NF ke 2NF
Gambar relasi-relasi hasil proses normalisasi 1NF ke 2NF (garisbawah adalah primary key)
Jadi setelah mengalami pemecahan/pemisahan, ketiga relasi di atas tersebut sudah dalam keadaan 2NF (bentuk normal kedua), karena tidak ada ketergantungan parsial antar atribut dalam suatu tabel/relasi. Apabila dalam tabel/relasi yang kita analisa tidak terdapat ketergantungan parsial (partial dependency) sejak awal, berarti tabel/relasi tersebut sudah berada pada keadaan 2NF.

Dari 2NF ke 3NF

Untuk mengonversi dari 2NF dari ke 3NF (bentuk normal ketiga), caranya adalah sama dengan langkah di atas (dari 1NF ke 2NF). Hanya saja yang harus kita identifikasi adalah ada atau tidaknya ketergantungan transitif (transitive dependency) antar atribut dalam suatu relasi. Kita akan analisa dan identifikasi dari ketiga tabel/relasi yang sudah berada dalam 2NF di atas, yaitu tabel/relasi ‘Client’, ‘Rental’, dan ‘PropertyOwner’. Hasil proses identifikasi adalah seperti gambar di bawah berikut:
Proses identifikasi ketergantungan fungsional pada relasi 'Client', 'Rental', dan 'PropertyOwner'

Dari hasil identifikasi di atas, ternyata kita temukan adanya ketergantungan transitif (transitive dependency), yaitu pada fd4 (perhatikan pada tabel PropertyOwner). Jadi untuk mengonversi ke keadaan 3NF, kita harus menghilangkan ketergantungan transitif (transitive dependency) tersebut. Cara menghilangkan ketergantungan transitif sama seperti langkah sebelumnya, yaitu atribut-atribut yang berada dalam ketergantungan transitif (transitive dependency) dipindahkan ke tabel/relasi yang baru beserta ‘copy’ dari atribut yang menjadi ‘determinant’ pada tabel/relasi aslinya.

Hasil dari pemecahan/pemindahan atribut yang menjadi ketergantungan transitif tersebut adalah seperti berikut di bawah ini:
Hasil pemecahan/normalisasi 2NF ke 3NF dari tabel 'PropertyOwner' menjadi tabel 'PropertyForRent' dan 'Owner'
Hasil relasi proses normalisasi 2NF ke 3NF pada relasi 'PropertyOwner' menjadi 'PropertyForRent' dan 'Owner'

Hasil akhir tabel-tabel setelah proses normalisasi dari 1NF-2NF-dan-3NF

Hasil akhir relasi-relasi setelah proses normalisasi dari 1NF-2NF-dan-3NF (garis bawah adalah primary key)
Tahap demi tahap pemecahan tabel/relasi mulai dari 1NF-2NF-dan-3NF

0 Response to "Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel