Perancangan Database
Pengantar Apa yang akan dipelajari dalam modul ini? Model data relasional Relasi Kunci Integrity Constraints Anomali Transformasi Diagram E/R ke Relasi Pemetaan Hubungan
Bagian I
4/26/2009
1
4/26/2009
2
Model Data Relasional
Model Data Relasional • Diperkenalkan oleh Codd tahun 1970 • Data direprentasikan dalam tabel berdimensi dua
Nomor_Peg
• Tiga komponen yang mendasari model data relasional:
Nama
05001
Karmen
05002
Tigor
05003
Sita Devi
4/26/2009
3
– Struktur data (data structure) Data disusun dalam bentuk tabel (relasi) – Pemanipulasi data (data manipulation) Tabel menyimpan operasi-operasi untuk memanipulasi data. Contoh: perintah dalam bahasa SQL. – Integritas data (data integrity) Adanya fasilitas-fasilitas dalam aturan bisnis (business rules) yang menjaga integritas data saat 4/26/2009 4 terjadi manipulasi data.
Model Data Relasional • Istilah relasi (relation) menyatakan nama tabel • Suatu relasi dapat dituliskan dengan cara: Menggambarkan tabel Menuliskan notasi nama tabel (namaKunciPrimer, nama kolom2,…) – Contoh:
Nomor_Peg
• Setiap relasi memiliki kunci primer (primary key) • Kunci primer adalah atribut atau sejumlah atribut yang menjadi pembeda setiap baris dalam relasi • Kunci primer biasa dinyatakan dengan garis bawah
Nama
05001
Karmen
05002
Tigor
05003
Sita Devi
Relasi
Kunci primer
PEGAWAI(Nomor_Peg, Nama) 4/26/2009
Struktur data
5
4/26/2009
PEGAWAI(Nomor_Peg, Nama)
6
1
Kunci Tamu
Kunci •
Kunci dapat dibedakan menjadi: 1. Kunci sederhana : Terdiri atas sebuah atribut 2. Kunci komposit : Tersusun atas dua atribut atau lebih
Kunci sederhana: PEGAWAI(Nomor_Peg, Nama) DEPARTEMEN(Kode_Dep, Nama_Dep) BARANG(Kode_Barang, Nama_Barang)
Kunci komposit: BARANG DIPESAN(No_Pesanan, Kode_Barang, Jumlah) NILAI(No_Mhs, Kode_Matakuliah,Skor)
4/26/2009
7
• Kunci tamu (foreign key) biasa digunakan sebagai penghubung ke relasi lain PELANGGAN(Tabel yang merujuk ) Kunci asing Kd_Pelanggan
Nama
Kd_Kota
A001
Aditya
0501
B001
Bakdi
0502
B002
Bramanto
0502
4/26/2009
Kunci primer
Kunci Tamu (Lanjutan…)
Kd_Kota
Nama_Kota
0501
Semarang
0502
Salatiga
0503
Kendal
8
Sifat Relasi
• Garis bawah terputus-putus biasa dipakai untuk menyatakan kunci tamu • Contoh: PELANGGAN(Kd_Pelanggan, Nama, Kd_Kota)
KOTA(Kd_Kota, Nama_Kota) 4/26/2009
KOTA (Tabel yang dirujuk )
9
1. Setiap relasi memiliki nama yang unik 2. Setiap isian pada perpotongan baris dan kolom (sel) harus bersifat atomik (bernilai tunggal) 3. Setiap baris bersifat unik 4. Setiap atribut memiliki nama yang unik 5. Urutan kolom tidak penting 6. Urutan baris juga tidak penting 4/26/2009
Kekangan Integritas (Integrity Constraint) • Tujuannya adalah untuk memfasilitasi penjagaan keakurasian dan integritas data dalam database (supaya tetap konsisten) • Macamnya: – Kekangan domain (domain contraints) – Integritas entitas (entity integrity constraints) – Integritas referensial (referential integrity constraints) – Kekangan operasional 4/26/2009 11
10
Kekangan Domain Memastikan data dalam domain yang telah ditetapkan Domain adalah kemungkinan nilai terhadap suatu atribut Contoh: ◦ A,B,C,D,E untuk nilai ◦ TRUE untuk pria dan FALSE untuk wanita ◦ INTEGER untuk menyatakan nilai bulat
Dalam praktek, domain juga mencakup panjang data Contoh: ◦ CHARACTER, SIZE 35 ◦ INTEGER, 3 DIGITS
4/26/2009
12
2
Contoh : NIM
MHS
mengambil
Integritas Entitas KULIAH
• Memastikan bahwa data yang terkait dengan kunci primer tidak terlanggar • Secara khusus, data Null pada kunci primer akan ditolak • Null berarti nilai pada atribut tidak pernah diberikan
Gambar 1. Diagram E/R Nama atribut :……………… Arti :……………… Tipe data :……………… Format :……………… Jangkauan :……………… Keunikan :……………… Dukungan null:……………. 4/26/2009
13
4/26/2009
14
Efek Tanpa Integritas Referensial
Integritas Referensial
Keadaan Setelah data 0502 pada KOTA dihapus:
• Memastikan bahwa konsistensi antara dua buah relasi tetap terjaga
0502
Salatiga
Keadaan Awal: Kd_Pelanggan Kd_Pelanggan
Nama
Kd_Kota
Kd_Kota
Nama_Kota
Nama
Kd_Kota
Kd_Kota
Nama_Kota
A001
Aditya
0501
0501
Semarang
A001
Aditya
0501
0501
Semarang
B001
Bakdi
0502
0503
Kendal
B001
Bakdi
0502
0502
Salatiga
B002
Bramanto
0502
B002
Bramanto
0502
0503
Kendal
4/26/2009
15
Menjadi tidak konsisten
4/26/2009
Efek Integritas Referensial
16
Manipulasi data dalam database
Keadaan Setekah data 0502 pada KOTA dihapus: 0502
Kd_Pelanggan
Nama
Kd_Kota
Salatiga
Kd_Kota
Nama_Kota
A001
Aditya
0501
0501
Semarang
B002
Bramanto
0502
0503
Kendal
B001
Bakdi
0502
4/26/2009
Ikut terhapus! atau penghapusan ditolak 17
• Aturan-aturan yang perlu diterapkan agar tidak terjadi pelanggaran terhadap aturan integritas referensial : – Insertion rule – Deletion rule – Update rule
4/26/2009
18
3
Insertion rule
Deletion Rule
• Aturan: Jika dilakukan penyisipan baris terhadap sebuah tabel yang merujuk, maka harus terdapat nilai yang bersesuaian dalam tabel yang dirujuk. • Contoh: Jika dalam tabel Pelanggan akan dimasukkan data kota dengan kode kota 0510, maka tidak diijinkan. Mengapa? 4/26/2009
19
• Aturan: Jika diberlakukan penghapusan baris terhadap sebuah tabel yang dirujuk dan memiliki nilai yang bersesuaian dengan tabel yang merujuk maka harus ada perlakuan tertentu untuk menjamin integritas database tersebut.
4/26/2009
Deletion Rule……
20
Update Rule
• Perlakuan yang mungkin diterapkan: Restrict
• Ada dua hal yang harus diperhatikan:
Tidak mengijinkan penghapusan terhadap baris dalam tabel yang dirujuk.
Nullify Nilai yang bersesuaian dari tabel yang merujuk diset menjadi null kemudian menghapus baris dalam tabel yang dirujuk.
Cascading deletion Baris yang bersesuaian dalam tabel yang merujuk secara otomatis akan ikut terhapus 4/26/B009
21
Jika nilai yang diupdate adalah kunci tamu pada tabel yang merujuk, maka perlakuan seperti insertion rule. Jika nilai yang diupdate pada tabel yang dirujuk memiliki nilai yang bersesuaian dengan tabel yang merujuk maka perlakuan adalah sama seperti deletion rule. 4/26/2009
Implementasi Aturan Integritas Referensial 1. Menerapkan logika pada program aplikasi yang menjamin aturan integritas referensial tetap dipertahankan, yaitu dalam baris-baris program. 2. Aturan integritas referensial dikenakan pada tabel saat dibuat. Dapat dilakukan jika DBMS yang dipakai memiliki fasilitas untuk mendukung integritas referensial. Mis: SQL. 4/26/2009
23
22
Kekangan Operasional • Kekangan yang berhubungan dengan aturan bisnis • Misalnya “ Saldo tabungan tidak boleh negatif ” • Pada Access, kekangan seperti ini bisa diimplementasikan pada Validation Rule. • Pada PostgreSQL, hal ini bisa diimplementasikan dalam prosedur tersimpan 4/26/2009
24
4
Diskusi kelompok
Relasi Berstruktur Baik
• Untuk setiap jenis perlakuan (referential integrity constraint), berikan contoh berdasar tabel PELANGGAN dan KOTA
Suatu relasi dikatakan berstruktur baik kalau : ◦ Mengandung redundansi sesedikit mungkin dan ◦ Memungkinkan pemakai memasukkan, mengubah, atau menghapus baris tanpa menimbulkan kesalahan atau tidak konsisten
Kesalahan atau akibat tidak konsisten yang ditimbulkan pada ulasan di atas biasa dinamakan anomali 4/26/2009
25
4/26/2009
Anomali Peremajaan
Anomali
• Terjadi bila terdapat pengubahan pada sejumlah data yang redundan, tetapi tanpa sengaja tidak semua ikut diubah
1. Anomali penyisipan 2. Anomali penghapusan 3. Anomali peremajaan
4/26/2009
27
4/26/2009
Anomali Penyisipan • Terjadi bila ada penambahan data • Perhatikan contoh disamping • Masalah: “Bagaimana caranya menyimpan fakta bahwa ruang baru bernama Arjuna ada pada gedung selatan?” 4/26/2009
RUA NG
TEMPAT
Jaringan Komputer
Merapi
Gedung Utara
Pengantar Basis Data
Merbabu
Gedung Utara
Matematika I
Rama
Gedung Selatan
Sistem Pakar
Sinta
Gedung Selatan
Merapi
PEMASOK
KOTA
BARANG
Kartika
Jakarta
Monitor GGG
Citra
Bandung
ZIP drive
Candra
Jakarta
Keyboard
Citra
Bandung
Mouse CCP
JUMLAH 10 4 5 25
Pemasok Citra pindah ke Bogor dan Pengubahan dilakukan hanya pada data pertama
PEMASOK
KOTA
BARANG
Kartika
Jakarta
Monitor GGG
Citra
Bogor
ZIP drive
Candra
Jakarta
Keyboard
Citra
Bandung
Mouse CCP
JUMLAH 10 4 5
28
25
Anomali Penghapusan
KULIAH
Kecerdasan Buatan
26
Gedung Utara
29
• Terjadi kiranya sesuatu baris yang tak terpakai dihapus dan sebagai akibatnya terdapat data lain yang hilang • Perhatikan contoh di samping • Apa yang terjadi seandainya data bahwa siswa dengan identitas 20 dihapus? Data yang menyatakan bahwa biaya kursus bahasa Jepang juga akan terhapus 4/26/2009
NO_SISWA
NAMA_KURSUS
BIAYA
10
Bahasa Inggris
120.000
10
Bahasa Prancis
120.000
10
Bahasa Mandarin
180.000
15
Bahasa Inggris
120.000
20
Bahasa Jepang
160.000
30
5
Tranformasi Diagram ER ke Relasi
Tranformasi Diagram ER/EER ke Relasi
• Memetakan Entitas dengan Atribut Komposit
• Memetakan Entitas Reguler (kuat) Nama_Pelanggan
No_Pelanggan
Tipe entitas PELANGGAN
No_Pelanggan Nama_Pelanggan
Relasi PELANGGAN
Alamat_Pelanggan
4/26/2009
Kota Kode_Pos
No_Pelanggan
Alamat_Pelanggan
PELANGGAN
Jalan
Nama_Pelanggan
PELANGGAN
No_Pelanggan Nama_Pelanggan 31
Alamat_Pelanggan
Jalan
Nama_Pegawai
32
Pemetaan Entitas Lemah
Nama_Pegawai
No_Pegawai
Keterampilan
4/26/2009
Tipe entitas PEGAWAI dengan atribut bernilai ganda
Keterampilan
No_Pegawai
Nama_Pegawai
Nama_Tanggungan
Tanggal_Lahir
No_Pegawai
Alamat_Pegawai
No_Pegawai
PEGAWAI
Relasi PELANGGAN
Kode_Pos
4/26/2009
Tranformasi Diagram ER ke Relasi • Memetakan Entitas dengan Atribut Bernilai Ganda
Kota
Tipe entitas PELANGGAN dengan atribut komposit
Alamat_Pegawai
No_Pegawai
Relasi PEGAWAI
Relasi KETERAMPILAN PEGAWAI
PEGAWAI
Nomor_Pesan
Tanggal_Lahir
Relasi TANGGUNGAN 34
Pemetaan Hubungan M to M
Tanggal_Pesan
No_Pelanggan
Relasi PEGAWAI
4/26/2009
Pemetaan Hubungan 1 to M
Nama_Pelanggan
Nama_Pegawai
No_Pegawai Nama_Tanggungan 33
TANGGUNGAN
Memiliki
Tgl_Pesan
Kode_Produk
Harga_Unit
No_Pesan Jumlah
PELANGGAN
No_Pelanggan Nama_Pelanggan
4/26/2009 No_Pesan
PESANAN
Mengirim
Tanggal_Pesan
PESANAN
PRODUK
Meminta
No_Pesan
Tgl_pesan
No_Pesan
Kode_Produk
Relasi PESANAN
Relasi PELANGGAN
No_Pelanggan
Relasi PESANAN
35
4/26/2009 Kode_Produk
Harga_Unit
Jumlah
Relasi PRODUK
Relasi BARIS PESANAN 36
6
Pemetaan Entitas Asosiatif (Ternary)
Pemetaan Hubungan 1 to 1
Nama_Dosen
Kode_Prodi
Nama
Nama_Prodi
No_Dosen Tanggal_Penugasan
DOSEN
Alamat
PROGRAM STUDI
Kode_Prodi
Nama_Prodi
PELANGGAN
Relasi DOSEN
Nama_Dosen
No_Dosen
No_Kirim
Relasi PROGRAM STUDI
Tanggal_penugasan
37
Tanggal
4/26/2009
Kode_Vendor
Harga_Unit
No_Item
Jumlah
Tgl_lahir
ID_Manajer
Relasi PEGAWAI
4/26/2009
39
4/26/2009
Alamat
Nama_Pegawai
• Tgl_Mulai_Kerja
PEGAWAI Tipe_Pegawai:
d
“H”
•
“K”
“T”
PEGAWAI TETAP
Gaji_Bulanan
PEGAWAI KONTRAK
Tunjangan
Nomor_Kontrak
Tersusun_atas
No_Item
Nama_Item
Harga_Unit
No_Item
No_Komponen
Jumlah
Relasi ITEM
Relasi KOMPONEN
40
Pemetaan Hubungan Supertipe/Subtipe (Lanjutan…)
Pemetaan Hubungan Supertipe/Subtipe
Upah_Harian
38
Relasi VENDOR
Alamat
ITEM
Nama_Pegawai
PEGAWAI HARIAN
Relasi PENGIRIMAN
Nama_Item
Tgl_Lahir
Mengepalai
Nomor_Pegawai
Jumlah No_Pelanggan Kode_Vendor
Pemetaan Unary M:M
PEGAWAI
No_Pegawai
VENDOR
Relasi PELANGGAN
Nama
Pemetaan Unary 1:N Nama_Pegawai
Jumlah PENGIRIMAN
No_Pelanggan
4/26/2009
No_Pegawai
Tanggal
No_Kirim
Mengepalai
No_Dosen
4/26/2009
Kode_Vendor
No_Pelanggan
Kompensasi
Lama_Kontrak 41
Model relasional tidak mendukung hubungan supertipe/subtipe secara langsung Strategi pemecahan untuk kasus di depan: 1. Buat relasi terpisah untuk masing-masing supertipe dan subtipe 2. Berikan atribut-atribut yang umum (termasuk kunci primer) ke supertipe 3. Masukkan pembeda subtipe pada supertipe 4. Tambahkan kunci primer pada supertipe ke semua subtipe 4/26/2009
42
7
Solusi Pemetaan Hubungan Supertipe/Subtipe Nomor_Pegawai
Nama_Pegawai
Nomor_Pegawai
Alamat Tgl_Mulai_Kerja Tipe_Pegawai
Upah_Harian
Nomor_Pegawai Gaji_Bulanan Tunjangan
PEGAWAI
PEGAWAI HARIAN
PEGAWAI TETAP
Nomor_Pegawai Nomor_Kontrak Lama_Kontrak Kompensasi
PEGAWAI KONTRAK 4/26/2009
43
8