Minggu, 18 November 2012

NORMALISASI



NORMALISASI

Ø  Normalisasi adalah proses untuk menciptakan suatu table (relasi) dalam basis data dengan tujuan untuk mengurangi kemubaziran.
Ø  Masalah-masalah yang timbul dalam pembuatan table yang disebut dengan anomali. Anomali adalah proses pada basis data yang mempunyai efek samping yang tidak diharapkan. Misal : ketidakkonsistenan data, suatu data hilang pada saat dihapus, dll.
Ø  Anomali ada 3 jenis yaitu :
a.       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.
b.       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


c.        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.

Tahapan  Normalisasi

            Bentuk Tidak Normal
                                    Menghilangkan perulangan group
            Bentuk Normal Pertama (1NF)
                                    Menghilangkan ketergantungan sebagian(dependensi parsial)
            Bentuk Normal Kedua (2NF)
                                    Menghilangkan ketergantungan transitif (dependensi transitif)
Bentuk Normal Ketiga (3NF)
                                    Menghilangkan anomali-anomali hasil dari
ketergantungan fungsional (menghilangkan ketergantungan yg penentunya bukan kunci kandidat)
            Bentuk Normal Boyce-Codd (BCNF)
                                    Menghilangkan Ketergantungan Multivalue
            Bentuk Normal Keempat (4NF)
                                      Menghilangkan anomali-anomali yang tersisa (mengatasi dependensi gabungan)
Bentuk Normal Kelima

Ø  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 :
a.       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
P1
Yogya
B2
5
P2
Jakarta
B1
4
P2
Jakarta
B2
7
P3
Solo
B3
6
P3
Solo
B4
6



Pembeli secara fungsional menentukan kota, sebab setiap pembeli yang sama  mempunyai kota yang sama, dengan demikian :   Pembeli               Kota 
contoh lain                      :  {Pembeli, Barang} Jumlah
Keterangan:
v  Bagian yang terletak disebelah kiri tanda panah biasa disebut DETERMINAN / PENENTU dan bagian yang terletak di sebelah kanan panah disebut DEPENDENSI / YANG TERGANTUNG.
v  Tanda {} biasanya digunakan untuk menentukan lebih dari satu atribut sebagai penentu atau sebagai yang tergantung.
b.       Dependensi fungsional sepenuhnya
Definisi : Suatu atribut Y mempunyai dependensi fungsional penuh terhadap X jika
v  Y mempunyai dependensi fungsional terhadap X dan/atau
v  Y tidak memiliki dependensi terhadap bagian dari X
Contoh :      
                  {Pembeli, Barang}              Jumlah
v  Intinya :  
Jumlah mempunyai dependensi fungsional terhadap gabungan Pembeli dan Barang, bukan pada bagian dari {pembeli,Barang}, sehingga jumlah memiliki dependensi fungsional sepenuhnya terhadap {Pembeli, Barang}
c.        Dependensi Total
Definisi : Suatu atribut Y mempunyai dependensi total terhadap atribut X jika
v  Y memiliki dependensi fungsional terhadap X dan
v  X memiliki dependensi fungsional terhadap Y
v  Notasi  :  X                 Y
v  Contoh : Tabel Pemasok
KodePemasok
NamaPemasok
Kota
K1
Kartika
Jakarta
C1
Citra
Bandung
C2
Candra
Jakarta





v  Pada kasus ini  KodePemasok                NamaPemasok, karena setiap kode tidak mempunyai nama yang sama.
d.       Dependensi Transitif
Definisi : Atribut Z mempunyai dependensi transitif terhadap X bila :
v Y memiliki dependensi fungsional terhadap X
v Z memiliki dependensi fungsional terhadap Y
                                               X à Y à Z          
Contoh : 
Kuliah
Ruang
Tempat
Waktu
Jarkom
Merbabu
Gedung Utara
Senin
Basis Data
Arjuna
Gedung Selatan
Selasa
Matematika
Merapi
Gedung Barat
Rabu
Fisika
Merbabu
Gedung Timur
Kamis










v Relasi : Kuliah            {Ruang, Waktu}   Ruang              Tempat
    Terlihat bahwa :    Kuliah         Ruang           Tempat
                     
v Dengan demikian Tempat mempunyai dependensi transitif terhadap kuliah

Ø  Diagram Dependensi Fungsional (Diagram DF)
Adalah diagram yang digunakan untuk menggabarkan dependensi fungsional. Diagram ini menunjukkan hubungan antara atribut yang menjadi penentu atribut lainnya, dengan hubungan yang dinyatakan dengan tanda panah. Seperti contoh diatas dapat digambarkan diagram DF sebagai berikut :

                                                                                        Kuliah
                                                                                        Ruang
                                                                                        Waktu
                                                                                        Tempat
 
Ø  Dekomposisi
Pada tahap normalisasi sering kali terjadi pemecahan table kedalam bentuk dua atau lebih relasi. Proses pemecahaan ini disebut dengan dekomposisi. Syarat : Tidak ada informasi yang hilang ketika suatu relasi dipecah menjadi relasi-relasi lain. Contoh : Terdapat suatu relasi awal sebagai berikut :


Nim
Nama
Program Studi
95001
Andi
Ekonomi
95002
Vira
Teknik
95003
Andi
Fisika

Akan dibentuk kedalam dekomposisi tak hilang menjadi :

Nim
Nama

Nim
Program Studi
95001
Andi

95001
Ekonomi
95002
Vira

95002
Teknik
95003
Andi

95003
Fisika

Pada relasi awal dapat diketahui informasi sebagai berikut : 95001 adalah ANDI program studi Ekonomi. Setelah proses dekomposisi tak hilang hasilnya adalah sama 95001 adalah ANDI dan 95001 program studi Ekonomi. Contoh dekomposisi hilang adalah                  
             
Nim
Nama

Nama
Program Studi
95001
Andi

Andi
Ekonomi
95002
Vira

Vira
Teknik
95003
Andi

Andi
Fisika

95001 bernama ANDI, tetapi ANDI dengan program studi Ekonomi atau Fisika?

Ø  Bentuk Normalisasi
1.       Bentuk normalisasi pertama (1NF)
Dikenakan pada tabel yang sama sekali belum ternomalisasi. Tabel yang belum ternomalisasi adalah tabel yang mempunyai atribut berulang. Contoh : terdapat suatu data sebagai berikut :
NIP
Nama
Jabatan
Keahlian
Lama Kerja
107
Ilham
Analis Senior
Cobol
6



Oracle
1
109
Ryan
Analis Junior
Cobol
2



C++
2
120
Fika
Programmer
Dbase
3



Sybase
1



Cobol
1

Pada contoh di atas, keahlian mempunyai atribut yang berulang. Untuk itu akan dibentuk ke normal 1NF. Syarat Normal 1NF adalah suatu relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai tunggal dalam satu baris.
NIP
Nama
Jabatan
Keahlian
Lama Kerja
107
Ilham
Analis Senior
Cobol
6
107
Ilham
Analis Senior
Oracle
1
109
Ryan
Analis Junior
Cobol
2
109
Ryan
Analis Junior
C++
2
120
Fika
Programmer
Dbase
3
120
Fika
Programmer
Sybase
1
120
Fika
Programmer
Cobol
1
Tabel d i atas sudah memenuhi bentuk normal 1NF
      
2.       Bentuk Normal 2NF
Bentuk ini didefinisikan berdasarkan dependensi fungsional dengan syarat adalah :
v  Berada pada bentuk normal pertama
v  Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap kunci primer
Cara mengkonversi bentuk normal pertama ke Bentuk normal kedua:
1.       Ubahlah setiap dependensi parsial menjadi sebuah relasi/tabel, dengan kunci primer adalah determinannya
2.       Ubahlah dependensi yang terkait langsung dengan kunci primer sebagai relasi tersendiri dan kunci primernya adalah kunci primer dalam relasi semula
Contoh :
v  Nama  dan jabatan mempunyai dependensi fungsional terhadap NIP
NIP à {Nama, Jabatan}
v  Lama mempunyai dependensi fungsional terhadap NIP dan keahlian
{NIP,Keahlian} à Lama Kerja
                                                                                    Keahlian
                                                                                       NIP
                                                                                     Nama
                                                                                  Lama kerja
                                                                                     Jabatan
 

v  Bentuk tabelnya adalah : NNJ (NIP, Nama, Jabatan) dan NKL (NIP, Keahlian, Lama Kerja)
NIP
Nama
Jabatan
107
Ilham
Analis Senior
109
Ryan
Analis Junior
120
Fika
Programmer

NIP
Keahlian
Lama Kerja
107
Cobol
6
107
Oracle
1
109
Cobol
2
109
C++
2
120
Dbase
3
120
Sybase
1
120
Cobol
1

       Latihan
       Normalisasikan tabel berikut ke bentuk normal 2NF

       Tabel PEGAWAI_KLIEN
NIP
Nama pegawai
No_klien
Nama klien
P1
Caca
K1
K2
K4
Rini
Rina
Fatwa
P2
Eca
K3
K1
Rio
Rini
P3
Rena
K5
Berta
P4
Cinta
K6
K8
Beni
Sasa


3.      
Syarat :
Bentuk Normal 3NF
v  Berada dalam bentuk normal 2 NF
v  Setiap atribut bukan kunci tidak memiliki dependensi transitif terhadap kunci primer
Contoh di atas sudah memenuhi normal 3NF karena : Tidak memiliki dependensi transitif, yaitu
NIP                  {Nama, Jabatan}
{NIP, Keahlian}                Lama Kerja
Cara mendekomposisi relasi yang mengandung dependensi transitif :
1.       Bentuk relasi yg memiliki dependensi fungsional yang tdk melibatkan kunci primer dalam relasi semula. Determinannya mjd kunci primer relasi yg dibentuk
2.       Bentuk relasi yang berisi kunci primer relasi semula.kemudian pindahkan semua atribut bukan-kunci primer yg bergantung pada kunci primer tetapi td bergantung pada determinan lain ke relasi tsb jadikan atribut yg menjadi kunci primer relasi semula sbg kunci primer relasi baru. Adapun atribut yang berasal dari determinan yg menjadi perantara dalam dependensi transitif akan bertindak sebagai kunci asing.
Contoh :
Mata Kuliah
Ruang
Tempat
Hari
Jam mulai
Jarkom
u-1
Gedung Utara
Senin
08.00
Basis Data
S-1
Gedung Selatan
Selasa
08.00
Matematika
B-1
Gedung Barat
Rabu
13.00
Fisika
B-2
Gedung Barat
Kamis
11.00








Mata kuliah à {ruang, tempat, hari, jam mulai}
Ruang à tempat
·         Sehingga : Mata kuliah à ruang à tempat (memiliki dependensi transitif)
·         Jika digambarkan diagram dependensi fungsional sbb:
                                                                                 Mata Kuliah
                                                                                 Ruang
                                                                                  hari
                                                                                 Tempat
                                                                                 Jam mulai



HASIL DEKOMPOSISI ke bentuk normal 3NF sbb:

MATA_KULIAH(Mata kuliah, Ruang,hari,jam mulai)
RUANG_KULIAH(Ruang, tempat)
scsblokociyyus.blogspot.com 

LATIHAN. NORMALISASIKAN KE BENTUK 3NF
1.       Tabel PESANAN_ITEM
2.       TABEL BARANG_PEMASOK
Kode_barang
Nama barang
Harga jual
Kode pemasok
Nama pemasok
kota
B1
TV ABC 14”
600.000
P2
PT CITRA
BOGOR
B2
TV ABC 21”
950.000
P2
PT CITRA
BOGOR
B3
TV DEC 14”
870.000
P1
PT AMAR
BANDUNG
B4
TV REI 29”
1.750.000
P3
PT KARTIKA
YOGYA
B5
TV KIR 14”
450.000
P4
PT NINDYA
TANGERANG

4.       Bentuk Normal boyce-codd (BCNF)
Bentuk ini dilakukan jika dan hanya jika semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik). BCNF merupakan perbaikan dari 3NF. Relasi yang memenuhi BCNF pasti memenuhi 3NF tetapi tidak sebaliknya. Contoh : Tabel SKT
Siswa
Kursus
Tutor
Anwar
Bhs. Perancis
Pierre
Anwar
Bhs. Inggris
Richard
Budi
Bhs. Perancis
Pierre
Cecep
Bhs. Inggris
Suzanne

Tabel di atas adalah suatu relasi yang memenuhi 3NF tetapi tidak memenuhi BCNF. Relasi diatas didasarkan oleh fakta :
v  Seorang siswa dapat mengambil sejumlah kursus
v  Setiap tutor hanya mengajar satu kursus bahasa
v  Setiap siswa dalam satu kursus diajar oleh satu tutor
v  Suatu kursus bis dipegang oleh beberapa tutor
Pada keadaan tersebut di atas dapat digambarkan sebagai berikut : Siswa & Kursus  dan Siswa & Tutor.
{Siswa, Kursus} àTutor
Tutorà Kursus
                                           Kursus
                                           Siswa
                                           Tutor

Memenuhi bentuk 3NF karena tidak ada dependensi transitif pada relasi tersebut. Tetapi tidak memenuhi BCNF karena adanya determinan Tutor yang tidak berdiri sebagai kunci kandidat. Realsi SKT menyebabkan anomali karena baris Cecep dihapus maka Suzane sebagai tutor jug akan terhapus. Cara konversi dari 3NF ke BCNF adalah :
v  Carilah semua penentu
v  Bila terdapat penentu yang bukan kunci kandidat, maka :
ü  Pisahkan relasi tersebut
ü  Buat penentu sebagai kunci primer
ü  Dekomposisi berupa : ST (Siswa, Tutor) dan TK (Tutor, Kursus)

Siswa
Tutor
Anwar
Pierre
Anwar
Richard
Budi
Pierre
Cece
Suzanne


Tutor
Kursus
Pierre
Bhs.Perancis
Richard
Bhs. Inggris
Suzanne
Bhs. Inggris

5.         Bentuk Normal 4NF
Ø  Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tidak mengandung lebih dari satu dependensi bernilai banyak (multivalued dependencies) yang bersifat independen
Ø  Untuk setiap multivalued dependencies (MVD)  harus merupakan functional dependencies 
Contoh:
Relasi MDB
Bentuk unnormalized  yang menunjukkan hubungan matakuliah, dosen dan isi:
 
Berdasar data aslinya, tampak bahwa satu nilai dalam matakuliah  berpasangan dengan lebih dari satu dosen dan  satu nilai mata kuliah berpasangan dengan memiliki lebih dari satu isi untuk mata kuliah tsb.
Relasi MDB mempunyai dua buah multivalued dependencies (MVD)  , yaitu:
Matakuliah->> dosen
Matakuliah->> isi
Yang perlu diperhatikan bahwa dosen dengan isi bersifat independen atau tdk saling ketergantungan
Matakuliah ->> dosen | isi
Teorema Fagin:
Bila R(A,B,C) merupakan suatu relasi dengan A, B, dan C adalah atribut-atributnya maka R dapat dipecah menjadi  (A,B) dan (A,C) jika R memenuhi MVD A ->> B|C
Sehingga Untuk kasus seperti ini tabel di-dekomposisi menjadi:
MATAKULIAH_DOSEN (Matakuliah, Dosen)
MATAKULIAH_ISI (Matakuliah, isi)


6.               Bentuk Normal 5NF
·         Suatu keadaan yg membuat relasi yang telah memenuhi bentuk normal keempat tidak dpt dekomposisi mjd relasi-relasi yang lebih kecil dengan kunci kandidat relasi-relasi pecahanya tsb tidak sama dengan kunci kandidat relasi
·         5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula
·         Contoh :
RELASI DDK
Memenuhi dependensi gabungan : Dealer Distributor, Distributor Kendaraan, Dealer Kendaraan

Agar memenuhi bentuk normal 5NF diDekomposisi  menjadi 3 relasi sbb:
DEALER_DISTRIBUTOR (dealer, distributor)
DISTRIBUTOR_KENDARAAN(Distributor, Kendaraan)
DEALER_KENDARAAN (Dealer, Kendaraan)

DEALER_DISTRIBUTOR                                                                DISTRIBUTOR_KENDARAAN
DEALER_KENDARAAN

JIKA DI JOIN (DIGABUNGKAN)
DEALER_DISTRIBUTOR







Dealer
Distributor
kendaraan
PT Sumber Jaya
Nissan
Truk Nissan
PT Sumber Jaya
Toyota
Toyota Kijang
PT Sumber Jaya
Toyota
Truk Dyna
PT Sumber Jaya
Nissan
Sedan Nissan
PT Asterindo
Nissan
Truk Nissan
PT Asterindo
Nissan
Sedan Nissan