Sistem Manajemen Basis Data Normalisasi vs Denormalisasi Normalisasi 2 Normalisasi • Sebuah upaya untuk memperoleh sebuah basis data dengan struktur yang baik (ruang penyimpanan yang efisien) dengan cara menerapkan sejumlah aturan (bentuk normal) pada setiap tabel yang menjadi anggota basis data tersebut. 3 Tujuan Normalisasi • Agar data yang ada tidak redundan dan memiliki data integrity yang kuat sehingga ketika kita melakukan relasi antara tabel akan dengan mudah kita menjaga data integrity dan mendapatkan datanya. 4 Permasalahan dalam Normalisasi • Redundansi data (ruang penyimpanan) • Anomalies (penyimpangan dalam proses modifikasi data) o o o Insert Anomalies Update Anomalies Delete Anomalies 5 Redundansi Data ID_BARANG NAMA_BARANG HARGA STOK KATEGORI 1 fanta 3000 10 minuman ringan 2 indomie 1000 20 mie instan 3 mie sedap 1200 15 mie instan normalisasi redundan 6 Redundansi Data ID_BARANG NAMA_BARANG HARGA STOK ID_KATEGORI 1 fanta 3000 10 1 2 Indomie 1000 20 3 3 mie sedap 1200 15 3 ID_KATEGORI NAMA_KATEGORI 1 minuman ringan 2 permen 3 mie instan 4 wafer 7 Insert Anomalies ID_BARANG NAMA_BARANG HARGA STOK KATEGORI RAK 1 fanta 3000 10 minuman ringan A.5 2 indomie 1000 20 mie instan B.2 3 mie sedap 1200 15 mie instan B.2 4 coca-cola 3000 15 minuman ringan A.5 • Bagaimana jika kategori diisi ‘minuman ringan’ sedangkan rak diisi ‘A.1’ ? data tidak konsisten ! 8 Update Anomalies ID_BARANG NAMA_BARANG HARGA STOK KATEGORI RAK 1 fanta 3000 10 minuman ringan A.5 2 indomie 1000 20 mie instan B.2 3 mie sedap 1200 15 mie instan B.2 4 coca-cola 3000 15 minuman ringan A.5 • Bagaimana jika kategori ‘mie instan’ ingin diganti dengan ‘makanan ringan’ ? tentu harus mengubah semua data ! 9 Delete Anomalies ID_BARANG NAMA_BARANG HARGA STOK KATEGORI RAK 1 fanta 3000 10 minuman ringan A.5 2 indomie 1000 20 mie instan B.2 3 mie sedap 1200 15 mie instan B.2 4 coca-cola 3000 15 minuman ringan A.5 • Bagaimana jika barang ‘fanta’ dihapus? semua data yang termasuk dalam kategori ‘minuman ringan’ akan ikut terhapus ! 10 Normalisasi • Pada sejumlah kasus, penerapan normalisasi secara ketat (strict) dapat mengakibatkan menurunnya performansi pemanfaatan basis data. • Normalisasi digunakan saat melakukan perancangan basis data, dengan pertimbangan tertentu normalisasi ini dapat 'dilanggar‘. 11 Denormalisasi 12 Denormalisasi • Pelanggaran Normalisasi basis data disebut dengan Denormalisasi. • Satu-satunya alasan mengapa kita boleh melakukan denormalisasi adalah pertimbangan performansi. • Jika performansi yang kita peroleh bisa menjadi jauh lebih baik, maka normalisasi yang telah dilakukan cukup beralasan untuk dilanggar. 13 Normalisas i• Normalisasi akan meningkatkan data integrity tetapi juga akan meningkatkan query complexity. • Denormalisasi akan mengurangi data integrity dan juga akan mengurangi query complexity 14 Normalisasi vs. Denormalisasi • Pada basis data relational, redundansi tidak bisa dihilangkan sama sekali khususnya redundansi pada atribut-atribut yang berfungsi sebagai key primer. • Karena dengan inilah keterhubungan antara tabel satu dengan yang lain dapat terakomodasi 15 Normalisasi vs. Denormalisasi • Relasi antar tabel tidak akan ada jika redundansi dihilangkan sama sekali. 16 Normalisasi vs. Denormalisasi • Akan tetapi redundansi juga harus diminimalisir karena berpotensi mengganggu integritas basis data. • Khususnya pada saat terjadi operasi perubahan data yang tidak dijalarkan ke tabel-tabel lain yang berhubungan 17 Normalisasi vs. Denormalisasi • Performansi dapat ditingkatkan dengan mengendalikan redundansi untuk mengurangi perhitungan, kompleksitas perintah dan jumlah tabel yang harus dilibatkan (join). • Untuk itu digunakan Denormalisasi basis data. 18 Any Question? 19 Bentuk-bentuk Denormalisasi • Atribut yang terderivasi (atribut turunan) • Atribut yang berlebihan • Tabel rekapitulasi (summary table) 20 Atribut turunan • Atribut yang nilainya bisa diperoleh dari nilainilai yang sudah ada pada atribut lain 21 Atribut turunan • Tampilkan berapa banyak matakuliah yang sudah diambil oleh mahasiswa tertentu ! select count(*) from mengambil where NIM=‘04523356’; 22 Atribut turunan • Dari contoh sebelumnya, bagaimana jika data mahasiswa sangat banyak sedangkan proses untuk menampilkan jumlah matakuliah, jumlah sks ataupun IPK sering dilakukan? membutuhkan waktu yang lama ! 23 Atribut turunan • Untuk itu perlu ditambahkan atribut baru pada tabel mahasiswa (total_sks, total_matkul,ipk) 24 Atribut yang berlebihan • Atribut terkodekan (encoded attribute) • Atribut gabungan (concatenated attribute) • Atribut tumpang-tindih (overlapping attribute) • Atribut bermakna ganda (alternate attribute) 25 Atribut berlebihan : atribut terkodekan • Atribut yang memiliki kode tambahan yang menunjukkan beberapa kondisi lainnya Contoh : id_mk di tabel kuliah yang didalamnya sudah terkandung data program studi. Data program studi ini sebenarnya tidak diperlukan lagi karena sudah ada atribut prog_studi di tabel kuliah Kode kuliah simbada : 52304424 26 Atribut berlebihan : atribut terkodekan 27 Atribut berlebihan : atribut terkodekan Tapi akan menjadi aneh jika kode matakuliah tidak mengikuti format aturan penulisan yang ada. Untuk itu kita bisa lakukan denormalisasi dengan tetap menuliskan kode matakuliah seperti di atas. 28 Atribut berlebihan : atribut gabungan • Atribut dalam domain komposit Contoh : atribut nim di tabel mahasiswa merupakan gabungan dari tahun masuk/angkatan dengan program studi dan no urut mahasiswa. Dengan demikian atribut ini sebenarnya tidak atomik karena masih bisa dibagi lagi NIM : 04523500 angkatan no urut 29 Atribut berlebihan : atribut gabungan Sama hal nya dengan atribut terkodekan, akan menjadi aneh jika nomor mahasiswa tersebut hanyalah nomor urut. Tentu hal ini akan membutuhkan informasi lebih tentang angkatan dan terdaftar di jurusan mana mahasiswa tersebut. 30 Atribut berlebihan (atribut tumpang-tindih) • Atribut dengan nilai yang tidak sepenuhnya ekslusif Contoh : atribut semester di tabel kuliah berisikan : ‘1’ matakuliah ganjil ‘2’ matakuliah genap ‘3’ matakuliah ganjil & genap nilai ‘3’ mencakup semester genap dan ganjil sekaligus (jadi tidak ekslusif). 31 Atribut berlebihan : atribut tumpang-tindih 32 Atribut berlebihan : atribut tumpang-tindih Jadi sebaiknya matakuliah dimasukkan dua kali, jika itu dilaksanakan di semester ganjil dan genap. Tentu saja hal ini melanggar aturan normalisasi (redundansi), tapi untuk performansi hal ini dapat ‘dilanggar’ 33 Atribut berlebihan : atribut bermakna ganda • Atribut yang memiliki arti berbeda tergantung kelompok entitasnya Contoh : Di tabel dosen terdapat atribut gaji. Bagi dosen tetap atribut ini berisi gaji tetap perbulan, sedangkan bagi dosen tidak tetap gaji ini berisi insentif mengajar tiap sks. 34 Atribut berlebihan : atribut bermakna ganda 35 Atribut berlebihan : atribut bermakna ganda Jika gaji dosen harus dibedakan, maka harus disediakan 2 buah atribut yakni gaji_tetap dan gaji_tidak_tetap. Walaupun sama-sama berisi tentang jumlah gaji yang diterima dosen, hal ini tentu saja melanggar aturan normalisasi karena ada blok data yang kosong. Tetapi sekali lagi, denormalisasi dalam hal ini boleh dilakukan. 36 Tabel rekapitulasi • Laporan hasil rekapitulasi akan selalu merupakan hasi pengolahan dari semua tabel yang ada. • Pengolahan tersebut melibatkan banyak tabel sehingga akan membutuhkan waktu yang lama. • Jika hal tersebut sering diakses dan diperlukan, maka perlu dibuat tabel khusus untuk menyimpan data hasil rekapitulasi tersebut. 37 Tabel rekapitulasi • Pada contoh kasus sebelumnya, akan dibutuhkan waktu yang lama jika harus menghitung jumlah matakuliah, jumlah sks dan ipk mahasiswa yang pengolahannya berasal dari beberapa tabel. • Untuk itu bisa dibuat tabel khusus, misal : rekap_mahasiswa yang berisi data tentang jumlah matakuliah, jumlah sks, ipk. 38 Tabel rekapitulasi • Contoh lain, pada kasus DB toserba (yang sudah dibahas pada pertemuan sebelum UTS) semisal dibutuhkan rekapitulasi tentang barang-barang apa saja yang telah terjual pada bulan-bulan sebelumnya. • Hal ini tentu saja akan menimbulkan redundansi, tapi dengan mempertimbangkan performansi, Denormalisasi pada kasus ini perlu dilakukan 39 Any Question? See you next time.. 40