Normalisasi vs Denormalisasi

advertisement
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
Download