Normalisasi database
Normalisasi pada data base
· Definisi/pengertian Normalisasi
Istilah Normalisasi berasal dari E. F.Codd, salah seorang perintis teknologi basis data. selain dipakai sebagai metodologi tersendiri untuk menciptakan struktur tabel 9relasi) dalam basis data (dengan tujuan utnuk mengurangi kemubaziran data) , normalisasi terkadang hanya diipakai sebagai perangkat verifikasi terhadap tabel-tabel yang dihasilkan oleh metodologi lain ( misalnya E-R). Normalisasi memberikan panduan yang sangat membantu bagi pengembang untuk mencegah penciptaan struktur tabel yang kurang fleksibel atau mengurangi keflekxibelan.
Kroenke mendefinisikan normalisasi sbagai proses untuk mengubah suatu relasi yang memiliki masalah tertentu ke dalam dua buah relasi atau lebih yang tida memiliki masalah tersebut. Masalah yang dimaksud oleh kroenke ini sering disebut dengan istilah anomali.
Normalisasi adalah proses pengelompokan atribute-atribute dari suatu relasi sehingga membentuk WELL STRUCTURE RELATION.
Keuntungan dari normalisasi, yaitu :
1. Meminimalkan ukuran penyimpanan yang diperlukan untuk menyimpan data.
2. Meminimalkan resiko inkonsistensi data pada basis data
3. Meminimalkan kemungkinan anomali pembaruan
4. Memaksimalkan stabilitas struktur data
WELL STRUCTURE RELATION adalah sebuah relasi yang jumlah kerangkapan datanya sedikit (minimum Amount Of Redundancy), serta memberikan kemungkinan bagi user untuk melakukan INSERT, DELETE, dan MODIFY terhadap baris-baris data pada relation tersebut, yang tidak berakibat terjadinya ERROR atau INKONSESTENSI DATA, yang disebabkan oleh operasi –operasi tersebut.
· Anomali
Anomali adalah proses pada basis data yang memberikan efek samping yang tidak diharapkan ( misalnya menyebabkan ketidakonsistenan data atau membuat suatu data menjadi hilang ketika data dihapus)
Macam Anomali terdiri dari
- Anomali peremajaan,
- Anomali Penghapusan, dan
- Anomali penyisipan
Anomali peremajaan
Anomali ini terjadi bila ada perubahan pada sejumlah data yang mubazir, tetapi tidak seluruhnya diubah. Contoh : Tabel Pesanan
Pemasok |
Kota |
Barang |
Jumlah |
Kartika |
Jakarta |
Mouse |
5 |
Citra |
Bandung |
Monitor |
2 |
Yudi |
Medan |
CPU |
2 |
Citra |
Bandung |
Printer |
1 |
Seandainya Citra dengan kota Bandung pindah ke Bogor maka pengubahan data hanya dilakukan pada data pertama menjadi : Tabel Pesanan
Pemasok |
Kota |
Barang |
Jumlah |
Kartika |
Jakarta |
Mouse |
5 |
Citra |
Bogor |
Monitor |
2 |
Yudi |
Medan |
CPU |
2 |
Citra |
Bandung |
Printer |
1 |
Di sini terlihat bahwa data tentang pemasok Citra tidak sama yang menyebabkan ketidakkonsistenan data.
Anomali Penyisipan
Anomali ini terjadi pada saat penambahan data ternyata ada elemen yang kosong dan elemen tsb justru menjadi key. Contoh : Tabel Kursus
NoSiswa |
Kursus |
Biaya |
10 |
Bhs.Inggris |
60000 |
10 |
Bhs.Perancis |
80000 |
10 |
Bhs.Jepang |
70000 |
15 |
Bhs.Inggris |
60000 |
20 |
Bhs.Jepang |
70000 |
Misalnya akan dibuka kursus baru yaitu Bhs.Jerman dengan biaya 75000 akan tetapi belum ada seorangpun yang ikut kursus ini, shg data menjadi : Tabel Kursus
NoSiswa |
Kursus |
Biaya |
10 |
Bhs.Inggris |
60000 |
10 |
Bhs.Perancis |
80000 |
10 |
Bhs.Jepang |
70000 |
15 |
Bhs.Inggris |
60000 |
20 |
Bhs.Jepang |
70000 |
Bhs.Jerman |
75000 |
Anomali penghapusan
Anomali ini terjadi apabila dalam satu baris/ tuple ada data yang akan dihapus sehingga akibatnya terdapat data lain yang hilang. Contoh pada table kursus data NoSiswa 20 akan dihapus karena sudah tidak ikut kursus lagi sehingga akibatnya data kursus bhs jepang dan biaya 70000 akan ikut terhapus.
· Jenis-Jenis Kunci (Key)
Key atau kunci adalah suatu field yang dapat mewakili dari suatu record. Misal : nobp
merupakan field kunci dari entity mahasiswa, sehingga setiap melakukan pencarian atas entity
mahasiswa cukup menyebutkan nobp saja, maka field nama, jurusan dan alamat dapat
diketahui. Syarat utama pemilihan suatu field kunci dari entity adalah field tersebut harus unik dan tidak boleh bernilai NULL.
Ada 4 jenis dari key ini :
a) Candidate Key (Kunci Calon)
Sebuah attribute atau lebih yang secara unit mengidentifikasi sebuat record, disebut candidate key. Attribute ini mempunyai nilai yang unik pada hampir setiap recordnya. Fungsi dari candidate key ini adalah sebagai calon primary key. Misal : Entity dosen dalam database akademik :
Kode Dosen |
NIP |
Nama_Dosen |
Alamt |
Pendidikan |
01 |
12345678 |
Rahmawaty Naki SE.Ak, M.si |
Gorontalo |
S2 |
02 |
23456789 |
Anwar Thalib S.T |
Gorontalo |
S1 |
03 |
34567890 |
Nurlela Mohammad S.Ag |
Gorontalo |
S1 |
04 |
45678901 |
Dhindra Mokodongan S.H, M.Hum |
Gorontalo |
S2 |
Tabel dosen
Dalam kasus ini, field KodeDosen dan NIP merupakan Candidate Key karena masing-masing bersifat unik dan tidak boleh ada yang sama atau bernilai Null.
b) Primary Key (Kunci Utama)
Merupakan candidate key yang telah dipilih untuk mengidentifikasi setiap record secara unik. Primary key harus merupakan field yang benar-benar unik dan tidak boleh ada nilai NULL. Misal : Perhatikan kembali entity dosen di atas, yaitu mempunyai dua Candidate Key, maka anda dapat mengambil field KodeDosen sebagai Primary Key, Karena lebih sederhana dalam jumlah digit dan unik. Boleh juga menggunakan NIP sebagai Primary Key-nya, hal ini tergantung kepada si perancang database itu sendiri.
c) Alternate Key (Kunci Alternatif)
Adalah candidate key yang tidak terpilih. Misal : dalam suatu entity terdapat dua field yang bisa dijadikan sebagai kunci. Sementara yang boleh dijadikan kunci hanya satu, maka anda harus memilih salah satu. Field yang anda pilih, disebut primary key, sedangkan field yang tidak dipilih disebut dengan alternate key. Misal : Kembali ke kasus entity dosen diatas, jika anda pilih field KodeDosen sebagai Primary Key, maka otomatis field NIP menjadi Alternate Key-nya, begitu juga sebaliknya.
d) Foreign Key (kunci Tamu)
Jika sebuah primary key terhubungan ke table/entity lain, maka keberadaan primary key pada entity tersebut di sebut sebagai foreign key. Misal : Primary Key KodeDosen dari entity Dosen digunakan juga pada field entity KRS, maka keberadaan field KodeDosen pada entity KRS disebut sebagai foreign key.
· Bentuk Normalisasi
Aturan-aturan normalisasi dinyatakan dalam istilah bentuk normal. Bentuk normal adalah suatu aturan yang dikenakan pada entity-entity dalam database dan harus dipenuhi oleh entity-entity tersebut sehingga tercapai normalisasi. Suatu entity dikatakan dalam bentuk normal apabila entity tersebut memenuhi aturan pada bentuk normal tersebut. Proses normalisasi dilakukan secara bertingkat. Pada tingkat ketiga (Third Normal Form, 3NF) sebenarnya telah dapat menghasilkan suatu rancangan database yang baik.
Aturan-aturan dalam masing-masing bentuk normalisasi tersebut adalah sebagai berikut (Abdul Kadir, 2002: 54) :
a. Bentuk tidak normal
Bentuk ini merupakan kumpulan data yang akan disimpan, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi dan data dikumpulkan apa adanya.
b. Bentuk normal pertama
Suatu tabel dikatakan dalam bentuk normal pertama (1NF) bila setiap kolom bernilai tunggal untuk setiap baris. Ini berarti bahwa nama kolom yang berulang cukup diwakili oleh sebuah nama kolom (tidak perlu ada indeks dalam memberi nama kolom).
c. Bentuk normal kedua
Suatu tabel berada dalam bentuk normal kedua (2NF) jika tabel berada dalam bentuk normal pertama, semua kolom bukan kunci primer tergantung sepenuhnya terhadap kunci primer. Suatu kolom disebut tergantung sepenuhnya terhadap kunci primer jika nilai pada suatu kolom selalu bernilai sama untuk suatu nilai kunci primer yang sama.
d. Bentuk normal ketiga
Suatu tabel berada dalam bentuk normal ketiga (3NF) jika tabel berada dalam bentuk normal kedua, setiap kolom bukan kunci primer tidak memiliki ketergantungan secara transitif terhadap kunci primer.
· Dependensi (Ketergantungan)
Konsep dasar pada tahap normalisasi yang menjelaskan hubungan atribut atau secara lebih khusus menjelaskan nilai suatu atribut yang menentukan atribut lainnya.
Macam-macam dependensi, yaitu :
üDependensi fungsional
Definisi : Suatu atribut Y mempunyai dependensi fungsional terhadap atribut X jika dan hanya jika setiap nilai X berhubungan dengan sebuah nilai Y.
Notasi : X –> Y (X secara fungsional menentukan Y)
Contoh : Tabel Pesanan
Pembeli |
Kota |
Barang |
Jumlah |
P1 |
Yogya |
B1 |
10 |
|