NORMALISASI Dekomposisi Dekomposisi memecah relasitabel menjadi relasitabel yang
NORMALISASI
Dekomposisi • Dekomposisi : memecah relasi/tabel menjadi relasi/tabel yang lebih kecil untuk mendapatkan skema yang tidak mengandung anomali dan redundansi.
Relasi (review) • Kumpulan atribut yang nilainya : – Setiap atribut harus berharga tunggal. – Semua harga pada suatu atribut harus mempunyai tipe yang sama – Setiap atribut harus mempunyai nama yang unik – Urutan atribut tidak penting – Tidak ada dua baris (tuple) dalam relasi yang isinya identik – Urutan baris (tuple) tidak penting tiosetyo@yahoo. com , setyoinator@gmail. com www. cerdas-pintar. blogspot. com
Proses Rancangan Database (review) • Mengumpulkan kebutuhan user/business • Mengembangkan E-R Model berdasarkan kebutuhan user/business • Konversikan E-R Model ke himpunan relasi (tabel) • Normalisasikan relasi untuk menghilangkan anomali • Implementasikan ke database dengan membuat tabel untuk setiap relasi yang sudah ternormalisasi
Normalisasi database (1) • Normalisasi adalah proses pembentukan struktur database sehingga sebagian besar ambiguity bisa dihilangkan. • Tahap Normalisasi dimulai dari tahap paling ringan (1 NF) hingga paling ketat (5 NF) • Biasanya hanya sampai pada tingkat 3 NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik.
Normalisasi database (2) • Mengapa dilakukan normalisasi ? – Optimalisasi struktur tabel – Meningkatkan kecepatan – Menghilangkan pemasukan data yang sama – Mengurangi redundansi – Lebih efisien dalam penggunaan media penyimpanan – Menghindari anomali (insertion anomalies, deletion anomalies, update anomalies). – Integritas data yang ditingkatkan
Normalisasi database (3) • Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb: 1. 2. 3. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless-Join Decomposition). Artinya, setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel baru bisa menghasilkan tabel semula dengan sama persis. Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation). Tidak melanggar Boyce-Code Normal Form (BCNF) • Jika kriteria ketiga tidak dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3 rd Normal Form / 3 NF).
Dependency / Ketergantungan • Dependency merupakan konsep yang mendasari normalisasi. Dependensi menjelaskan hubungan antar atribut, atau secara lebih khusus menjelaskan nilai suatu atribut yang menentukan nilai atribut lainnya. • Ada beberapa jenis Dependency / Ketergantungan: 1. Ketergantungan Fungsional / Functionally Dependency (FD) 2. Ketergantungan Fungsional Penuh / Full Functionally Dependency (FFD) 3. Ketergantungan Transitif / Transitive Dependency (TDF) 4. Ketergantungan Total /Total Dependency (TD)
1. Ketergantungan Fungsional • Ketergantungan Fungsional menggambarkan hubungan atribut dalam sebuah relasi. • Suatu atribut dikatakan Ketergantungan Fungsional pada yang lain, jika menggunakan harga atribut tersebut untuk menentukan harga atribut yang lain. • Simbol yang digunakan adalah (dibaca secara fungsional menentukan )
Lanjut. . • Notasi: X Y X dan Y adalah atribut dari sebuah tabel. Berarti X secara fungsional menentukan Y atau Y tergantung pada X, jika dan hanya jika ada dua baris data dengan nilai X yang sama, maka nilai Y juga sama • Notasi: X Y Adalah kebalikan dari notasi sebelumnya.
Contoh 1 • Relasi Pembeli No_Pembeli Nama_Pembeli P 01 Imam_x P 02 Yazix P 03 Hana Ketergantungan fungsional dari relasi Pembeli adalah : No_Pem → Nama_Pembeli ¡ Bagian sebelah kiri panah disebut penentu (determinan) dan sebelah kanan panah disebut yang tergantung (dependen). ¡ Tanda { } biasa digunakan kalau ada lebih dari satu atribut, baik pada penentu maupun yang tergantung.
Contoh 2 Functional Dependency: • NRP Nama • {Mata_Kuliah, NRP} Nilai Non Functional Dependency: • Mata_Kuliah NRP • NRP Nilai
Contoh 3 Pesan_Jual Kode_Jual P 1 P 2 P 2 P 3 Kota Yogya Solo Klaten Kode_Brg B 1 B 2 B 3 B 4 Jumlah 10 5 7 6 6 7 6 • Pada contoh ini, Kode_Jual secara fungsional menentukan Kota, sebab terlihat bahwa untuk Kode_Jual yang sama, Kota-nya juga sama. • Dengan demikian: Kode_Jual Kota contoh lain: {Kode_Jual, Kode_Brg} Jumlah {Kode_Jual, Kode_Brg} Kota {Kode_Jual, Kode_Brg} {Jumlah, Kota}
2. Ketergantungan Fungsional Penuh • Suatu atribut Y mempunyai ketergantungan fungsional penuh terhadap atribut X, jika – Y mempunyai ketergantungan funsional terhadap X – Y tidak memiliki ketergantungan terhadap bagian dari X – Notasi : X Y
Contoh contoh , terdapat relasi pelanggan: Pelanggan ( KODE_PELANGGAN, NAMA, KOTA, NOMOR_FAX ) Pada relasi ini: 1. {KODE_PELANGGAN, KOTA} NOMOR_FAX 2. KODE_PELANGGAN NOMOR_FAX KET: Pada (1) Nomor_Fax bergantung pada {KODE_PELANGGAN, KOTA} dan bergantung pada KODE_PELANGGAN (pada 2) yang tidak lain adalah bagian dari {KODE_PELANGGAN, KOTA}, maka Nomor_Fax hanya mempunyai dependensi fungsional sepenuhnya terhadap KODE_PELANGGAN
Contoh : Pembeli → Kota {Pembeli, Barang} → Kota mempunyai depedensi fungsional terhadap Pembeli atau {Pembeli, Barang} tapi kota mempunyai depedensi fungsional sepenuhnya terhadap pembeli bukan barang.
contoh Kebergantungan fungsional berikut: (1) IDPegawai -> tgl. Lahir maka benar juga menyatakan: (2) IDPegawai, nama. Pegawai -> tgl. Lahir Pada (2) sebenarnya nama. Pegawai tidak diperlukan untuk memperoleh tgl. Lahir. IDPegawai sudah mencukupi untuk memperoleh nilai tgl. Lahir. Jadi: (1) merupakan kebergantungan fungsional penuh (2) bukan kebergantungan fungsional penuh
3. Ketergantungan Transitif – Atribut Z mempunyai dependensi transitif terhadap X bila apabila Y tergantung pada X dan Z tergantung pada Y • X→Y→Z
Contoh Definisi : Atribut Z pada relasi R dikatakan tergantung transitif pada atribut X, jika atribut Y tergantung pada atribut X pada relasi R dan atribut Z tergantung pada atribut Y pada relasi R. ( X Y, Y Z, maka X Z ) Contoh : Ketergantungan transitif : No-pem Kode-kota No-pem Kode-kota Kota , maka Kota
Lanjut. . NIP Nama Gol_gaji Gaji_pokok 0001 Ian III A 600000 0002 Saputra III B 650000 0003 Rohim III A 600000 0004 Fani III B 650000 • Gol_gaji fungsional dependency pada NIP dan Gaji_pokok Fungsional Dependency pada Gol_gaji. • NIP sebagai X, Gol_gaji sebagai Y, dan Gaji_pokok sebagai Z • Jadi nilai-nilai rinci data pada atribut Gaji_pokok (Z) bergantung transitif terhadap NIP • X Y Z NIP Gol_gaji Gaji_pokok
4. Ketergantungan Total • Suatu atribut Y mempunyai ketergantungan total pada atribut X jika: – Y memiliki ketergantungan fungsi terhadap X – X memiliki ketergantungan fungsi terhadap Y – Notasi : X Y
Lanjut. . Contoh : PEGAWAI (NO-INDUK, NAMA, TMP-LAHIR, TG-LAHIR, ALAMAT) Dengan demikian notasi dapat ditulis: NO-INDUK NAMA
BENTUK NORMAL PERTAMA (First Normal Form - 1 NF) • Bentuk normal 1 NF terpenuhi jika sebuah tabel tidak memiliki atribut bernilai banyak (multivalued attribute), atribut composite atau kombinasinya dalam domain data yang sama. • Data dibentuk dalam satu record demi record dan nilai field adalah atomic value. • Tidak ada set atribut yang berulang / bernilai ganda)
Lanjut. . • Suatu relasi berada dalam bentuk normal pertama jika relasi tidak mengandung atribut yang bernilai ganda • Contoh : Atribut bernilai ganda
Lanjut. . § Pemecahannya • Buang atribut berganda • Caranya: Atur setiap kolom berisi satu nilai. - Bila isi suatu kolom untuk suatu baris berisi n nilai, maka pecahlah baris menjadi n baris Sekarang atribut berniali tunggal
Lanjut. .
Lanjut. .
Lanjut. .
BENTUK NORMAL KEDUA (Second Normal Form - 2 NF) • Bentuk normal 2 NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1 NF. • Normalisasi 2 NF: setiap atribut bukan kunci bergantung penuh pada kunci primer (primary key). Sehingga tidak ada atribut bukan kunci yang bergantung pada sebagian (parsial) kunci primer (primary key) • Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan.
SYARAT 2 NF • Memenuhi kriteria tabel 1 NF • Di dalam tabel tersebut tidak ada redudansi / pengulangan data dan Null Value • Field-field yang bukan PK (primary key) adalah Fully Functional Dependency (bergantung penuh) pada PK.
Contoh • Perhatikan tabel di bawah ini. Atribut mana yang bisa menjadi primary key, dan bagaimana ketergantungan fungsional semua atribut?
lanjut • Jika No dan Kursus dijadikan composite primary key, maka nama tidak tergantung fungsional penuh terhadap PK, perlu dipisahkan dari tabel.
contoh
PEMASOK-1 PEMASOK-2
Contoh INF
BENTUK NORMAL KETIGA (Third Normal Form - 3 NF) • Bentuk normal 3 NF terpenuhi jika telah memenuhi bentuk 2 NF. • Jika tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lainnya (ketergantungan transitif).
Contoh (1) • Tabel mahasis berikut ini memenuhi syarat 2 NF, tetapi tidak memenuhi 3 NF • Karena masih terdapat atribut non primary key (yakni Kota dan Provinsi) yang memiliki ketergantungan terhadap atribut non primary key yang lain (yakni Kode. Pos) : Kode. Pos {Kota, Provinsi}
Contoh (2) • Sehingga tabel tersebut perlu didekomposisi menjadi : – Mahasiswa (NIM, Nama. Mhs, Jalan, Kode. Pos) – Kode. Pos (Kode. Pos, Provinsi, Kota)
Mahasiswa NIM NAMAMHS JALAN KODEPOS Kode. Pos KODEPOS PROVINSI KOTA
Boyce-Codd Normal Form (BCNF) • 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. • Tabel tersebut harus di-dekomposisi berdasarkan functional dependency yang ada, sehingga X menjadi super key dari tabel hasil dekomposisi. • Setiap tabel dalam BCNF merupakan 3 NF. Akan tetapi setiap 3 NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency X A, BCNF tidak membolehkan A sebagai bagian dari primary key.
Bentuk. Normal Tahap. Keempat(4 th Normal Form /4 NF) • Bentuk normal 4 NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute. • Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies.
Bentuk. Normal Tahap. Keempat(5 th Normal Form /5 NF) • Bentuk normal 5 NF terpenuhi jika tidak dapat memiliki sebuah loss less decomposition menjadi tabel-tabel yg lebih kecil. • Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5 NF 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
Unnormalisasi • Langkah pertama dalam melakukan normalisasi data adalah dengan membentuk contoh data tersebut diatas dengan membentuk unnormalisasi data.
Normal Pertama (1 NF) • Bentuklah menjadi bentuk normal pertama dengan memisahkan data pada atribut yang tepat dan bernilai atomik, juga seluruh record / baris harus lengkap adanya. • Bentuk relasi adalah flat file. Dengan normal pertama kita dapat membuat satu tabel yang terdiri dari 11 Atribut yaitu (No_Faktur, Kode_Supp, Nama_Supp, Kode_Brg, Nama_Brg, Tanggal, Jatuh_Tempo, Qty, Harga, Jumlah, Total ).
Normal Pertama (1 NF) Pada normal pertama tersebut masih terjadi banyak kelemahan, terutama pada proses ANOMALI insert, update dan delete berikut ini: a). Inserting / Penyisipan Kita tidak dapat memasukkan kode dan nama supplier saja tanpa adanya transaksi pembelian, sehingga supplier baru bisa dimasukkan kalau ada transaksi pembelian. b). Deleting / Penghapusan Bila satu record / baris di atas dihapus, misal nomor faktur 779, maka berakibat pada penghapusan data supplier S 02 (Waras Sejati) padahal data tersebut masih diperlukan. c). Updating / Pengubahan Kode dan nama supplier terlihat ditulis berkali-kali, bila nama supplier berubah, maka di setiap baris yang ada harus dirubah, bila tidak menjadi tidak konsisten. Atribut jumlah seharusnya tidak perlu, karena setiap harga dikali kuantitas akan menghasilkan jumlah, sehingga hasilnya akan menjadi lebih konsisten. A 02
Normal Kedua (2 NF) • Bentuk normal kedua dengan melakukan dekomposisi relasi diatas menjadi beberapa relasi dan mencari kunci primer dari tiap-tiap relasi tersebut dan atribut kunci haruslah unik. • Melihat permasalahan faktur di atas, maka dapat diambil beberapa kunci kandidat : ( No_Faktur, Kode_Supp, dan Kode_Brg ). • Kunci kandidat tersebut nantinya bisa menjadi kunci primer pada relasi hasil dekomposisi.
Normal Kedua (2 NF) Relasi Supplier Relasi Barang Kode_Supp Nama_Supp Kode_Brg Nama_Brg Harga S 02 Waras Sejati R 01 Mixagripi 5000 G 01 Medika jaya G 01 Medika Jaya A 01 Sanaflux 5000 A 02 Bodrexno 6000 Relasi Faktur No_Faktur Kode_Brg Kode_Supp Tanggal Jatuh Tempo Qty 779 R 01 S 02 02/02/2001 09/03/2001 10 998 A 01 G 01 07/02/2001 09/03/2001 10 998 A 02 G 01 07/02/2001 09/03/2001 10
Normal Kedua (2 NF) Pada bentuk normal kedua tersebut masih terjadi permasalahan yaitu pada relasi Faktur, yaitu : 1. Atribut Qty pada relasi Faktur, tidak tergantung pada kunci utama, atribut tersebut bergantung fungsi pada Kode Brg dan no_faktur, hal ini dinamakan ketergatungan transitif dan haruslah dipilah menjadi dua relasi. 2. Masih terdapat pengulangan, yaitu setiap kali satu faktur yang terdiri dari 3 macam barang maka 3 kali juga dituliskan no_faktur, tanggal, dan jatuh_tempo. Hal ini harus dipisahkan bila terjadi penggandaan tulisan berulang-ulang.
4. Bentuk Normal Ketiga (3 NF) • Bentuk normal ketiga mempunyai syarat, setiap relasi tidak mempunyai atribut yang bergantung transitif, harus bergantung penuh pada kunci utama dan harus memenuhi bentuk normal kedua (2 NF). • Untuk memenuhi bentuk normal ketiga (3 NF), maka pada relasi faktur harus didekomposisi (dipecah) lagi menjadi dua relasi yaitu relasi faktur dan relasi transaksi barang, sehingga hasilnya adalah sebagai berikut ini:
Relasi Supplier Relasi Barang Kode_Supp Nama_Supp Kode_Brg Nama_Brg Harga S 02 Waras Sejati R 01 Mixagripi 5000 G 01 Medika jaya A 01 Sanaflux 5000 A 02 Bodrexno 6000 Relasi Faktur No_Faktur Tanggal Jatuh Tempo Kode_Supp 779 02/02/2001 09/03/2001 S 02 998 07/02/2001 09/03/2001 G 01 Relasi Transaksi No_Faktur Kode_Brg Qty 779 R 01 10 998 A 02 10
unnormal
1 NF Tabel 1
Tips And Trik • Gambarkan ketergantungan Fungsionalnya
2 NF Sudah memenuhi 1 NF tetapi belum memenuhi 2 NF karena atribut Bukan kunci belum sepenuhnya tergantung pada primary key • {No-pem, Kode-Kota } kota • No-pem Kota • No-Pem, No-bar Jumlah
2 NF Tabel 1 didekomposisi menjadi dua tabel yaitu tabel 2 dan tabel 3, sehingga atribut non primary key bergantung penuh pada primary key dan terpenuhi 2 NF Tabel 1 • No-pem, No-bar Jumlah Tabel 2 • No-pem Kode-Kota • No-pem Kota • Kode-Kota
3 NF Ada ketergantungan transitif di tabel 3, maka perlu di pisah menjadi tabel lebih kecil Tabel 3 • No-pem Kode-Kota • Kode-Kota Ketergantungan transitif
3 NF Tabel 4 • No-pem Kode-kota • Kode-ota Kota
Contoh 1. Bentuk Tidak Normal ( Unnormalized Form) • Merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi. • Data dikumpulkan apa adanya tanpa format tertentu. Data dapat tidak lengkap atau terduplikasi • Tabel Perpustakaan ini masih bersifat universal Perpustakaan No Nama Alamat No Buku 1 Judul Buku 1 Pengarang 1 A 001 Rahayu Msword Ahmad A 002 Iwan Kemuning B 001 117 Kamboja 29 B 001 A 003 Tuti Nangka 20 B 002 Foxpro A 004 Riyanto Kenanga 21 B 001 Msword Ahmad A 005 Kiki Merdeka 10 B 002 Foxpro Msword Ahmad No Buku 2 Judul Buku 2 B 002 Pengarang 2 No Buku 3 Foxpro Pramono B 005 Pramono B 006 Judul Buku 3 Pengara Jml Pjm Tgl Pinjam ng 3 Acces Anton 1 26/1/2000 3 1/2/2000 1 7/2/2000 Acces Anton 2 11/2/2000 Ws Pramono 2 11/2/2000 Atribut Bernilai Ganda / Berulang
• Bentuk Normal Kesatu ( 1 NF / First Normal Form ) • Setiap data dibentuk dalam flat file( file datar / rata ) • Data dibentuk dalam satu record demi record dan nilai field adalah atomic value • Tidak ada set atribut yang berulang 2 / bernilai ganda ) Perpustakaan No A 001 A 002 A 003 A 004 Nama Rahayu Iwan Tuti Riyanto Alamat Kemuning 117 Kamboja 29 Nangka 20 Kenanga 21 No Buku B 001 B 002 B 005 B 002 B 001 Judul Buku Msword Foxpro Acces Foxpro Msword Pengarang Ahmad Pramono Anton Pramono Ahmad Jml Pinjam 1 3 3 3 1 2 Tgl Pinjam 26/1/2000 1/2/2000 7/2/2000 11/2/2000 A 004 Riyanto Kenanga 21 B 005 Acces Anton 2 11/2/2000 A 005 Kiki Merdeka 10 B 002 B 006 Foxpro WS Pramono 2 2 11/2/2000 Perpustakaan No anggota Nama Alamat No. Buku Judul. Buku Pengarang Jumlah. Pinjam Tgl. Pinjam Data Duplikat belum ada field kunci yang unik
• Bentuk Kedua ( 2 NF / Second Normal Form ) • Telah Menenuhi kriteria Bentuk Normal 1 NF • Atribut Bukan Kunci Haruslah Bergantung Secara Fungsi Pada Primary Key • Primary Key Harus Sudah Ditentukan Dan Bersifat Unik, Serta Dapat Mewakili Atribut Lain Yang Menjadi Anggotanya Anggota Noanggota A 001 A 002 A 003 A 004 A 005 Nama Rahayu Iwan Tuti Riyanto Kiki Alamat Kemuning 117 Kamboja 29 Nangka 20 Kenanga 21 Merdeka 10 Pinjam No anggota A 001 A 002 A 003 A 004 A 005 Buku Nobuku B 001 B 002 B 001 B 005 B 002 B 006 Jumlahpinjam 1 3 3 3 1 2 2 tglpinjam 26/1/2000 1/2/2000 7/2/2000 11/2/2000 Nobuku B 001 B 002 B 005 B 006 Judulbuku Msword Foxpro Acces Ws Pengarang Ahmad Pramono Anton pramono Data Duplikat belum ada field kunci yang unik
Bentuk Normal Kedua ( 3 NF / Third Normal Form ) • Telah Memenuhi kriteria Bentuk 2 NF • Semau Atribut Bukan Primer Tidak Mempunyai Hubungan / Ketergantungan Transitif • Atribut bukan kunci harus bergantung hanya pada primary key Anggota Noanggota A 001 A 002 A 003 A 004 A 005 Nama Rahayu Iwan Tuti Riyanto Kiki Pinjam Noanggota A 001 A 002 A 003 A 004 A 005 Nobuku B 001 B 002 B 005 B 002 B 001 B 005 B 002 B 006 Alamat Kemuning 117 Kamboja 29 Nangka 20 Kenanga 21 Merdeka 10 Buku Nobuku B 001 B 002 B 005 B 006 Judulbuku Msword Foxpro Acces Ws Pengarang Ahmad Pramono Anton Pramono Peminjaman Noanggota A 001 A 002 A 003 A 004 A 005 Jumlahpinjam 1 3 1 2 2 Tglpinjam 26/1/2000 1/2/2000 7/2/2000 11/2/2000
- Slides: 69