Perancangan Database Bagian I 1 Pengantar Apa yang akan dipelajari dalam modul ini? Model data relasional Relasi Kunci Integrity Constraints Anomali Transformasi Diagram E/R ke Relasi Pemetaan Hubungan 2 Diperkenalkan oleh Codd tahun 1970 Data direprentasikan dalam tabel berdimensi dua Model Data Relasional Nomor_Peg 05001 Karmen 05002 Tigor 05003 Sita Devi 3 Model Data Relasional Tiga komponen yang mendasari model data relasional: 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 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: PEGAWAI(Nomor_Peg, ) Struktur data Nomor_Peg 05001 Karmen 05002 Tigor 05003 Sita Devi 5 Relasi 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 PEGAWAI(Nomor_Peg, ) Kunci primer 6 1
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, ) DEPARTEMEN(Kode_Dep, _Dep) BARANG(Kode_Barang, _Barang) Kunci komposit: BARANG DIPESAN(No_Pesanan, Kode_Barang, Jumlah) NILAI(No_Mhs, Kode_Matakuliah,Skor) 7 Kunci Tamu Kunci tamu (foreign key) biasa digunakan sebagai penghubung ke relasi lain (Tabel yang merujuk ) Kunci asing Kd_Pelanggan A001 B001 B002 Aditya Bakdi Bramanto Kunci primer 0501 KOTA (Tabel yang dirujuk ) _Kota 0501 Semarang Salatiga 0503 Kendal 8 Kunci Tamu (Lanjutan ) Garis bawah terputus-putus biasa dipakai untuk menyatakan kunci tamu Contoh: (Kd_Pelanggan,, ) KOTA(, _Kota) 9 Sifat Relasi 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 10 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 11 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 12 2
Contoh : Integritas Entitas NIM MHS mengambil KULIAH Gambar 1. Diagram E/R atribut : Arti : Tipe data : Format : Jangkauan : Keunikan : Dukungan null:. 13 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 14 Integritas Referensial Memastikan bahwa konsistensi antara dua buah relasi tetap terjaga Keadaan Awal: Kd_Pelanggan _Kota A001 Aditya 0501 0501 Semarang B001 Bakdi Salatiga B002 Bramanto 0503 Kendal 15 Kd_Pelanggan A001 B001 Aditya Bakdi B002 Bramanto Menjadi tidak konsisten Efek Tanpa Integritas Referensial 0501 Keadaan Setelah data pada KOTA dihapus: Salatiga _Kota 0501 Semarang 0503 Kendal 16 Kd_Pelanggan A001 B002 Aditya Bramanto Efek Integritas Referensial 0501 B001 Bakdi Keadaan Setekah data pada KOTA dihapus: Salatiga _Kota 0501 Semarang 0503 Kendal Ikut terhapus! atau penghapusan ditolak 17 Manipulasi data dalam database Aturan-aturan yang perlu diterapkan agar tidak terjadi pelanggaran terhadap aturan integritas referensial : Insertion rule Deletion rule Update rule 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? 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. 19 20 Deletion Rule Perlakuan yang mungkin diterapkan: Restrict 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 Update Rule Ada dua hal yang harus diperhatikan: 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. 22 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. 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 23 24 4
Diskusi kelompok Relasi Berstruktur Baik Untuk setiap jenis perlakuan (referential integrity constraint), berikan contoh berdasar tabel 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 25 26 1. Anomali penyisipan 2. Anomali penghapusan 3. Anomali peremajaan Anomali Terjadi bila terdapat pengubahan pada sejumlah data yang redundan, tetapi tanpa sengaja tidak semua ikut diubah Anomali Peremajaan PEMASOK KOTA BARANG JUMLAH Kartika Jakarta Monitor GGG 10 Citra Bandung ZIP drive 4 Candra Jakarta Keyboard 5 Citra Bandung Mouse CCP 25 Pemasok Citra pindah ke Bogor dan Pengubahan dilakukan hanya pada data pertama PEMASOK KOTA BARANG JUMLAH Kartika Jakarta Monitor GGG 10 Citra Bogor ZIP drive 4 Candra Jakarta Keyboard 5 27 Citra Bandung Mouse CCP 25 28 Anomali Penyisipan Anomali Penghapusan Terjadi bila ada penambahan data Perhatikan contoh disamping Masalah: Bagaimana caranya menyimpan fakta bahwa ruang baru bernama Arjuna ada pada gedung selatan? KULIAH RUA NG TEMPAT Jaringan Komputer Merapi Gedung Utara Pengantar Basis Data Merbabu Gedung Utara Matematika I Rama Gedung Selatan Sistem Pakar Sinta Gedung Selatan Kecerdasan Buatan Merapi Gedung Utara 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 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 29 30 5
Tranformasi Diagram ER/EER ke Relasi Memetakan Entitas Reguler (kuat) _Pelanggan Tranformasi Diagram ER ke Relasi Memetakan Entitas dengan Atribut Komposit _Pelanggan Jalan Kota No_Pelanggan Alamat_Pelanggan Tipe entitas No_Pelanggan Alamat_Pelanggan Kode_Pos Tipe entitas dengan atribut komposit No_Pelanggan _Pelanggan Alamat_Pelanggan Relasi No_Pelanggan _Pelanggan Jalan Kota Kode_Pos Relasi 31 32 Tranformasi Diagram ER ke Relasi Memetakan Entitas dengan Atribut Bernilai Ganda No_Pegawai Pemetaan Entitas Lemah _Pegawai _Tanggungan Tanggal_Lahir No_Pegawai _Pegawai PEGAWAI Alamat_Pegawai Keterampilan Tipe entitas PEGAWAI dengan atribut bernilai ganda PEGAWAI Memiliki TANGGUNGAN No_Pegawai _Pegawai Alamat_Pegawai Relasi PEGAWAI No_Pegawai _Pegawai Relasi PEGAWAI No_Pegawai Keterampilan Relasi KETERAMPILAN PEGAWAI 33 No_Pegawai _Tanggungan Tanggal_Lahir Relasi TANGGUNGAN 34 No_Pelanggan Pemetaan Hubungan 1 to M _Pelanggan Nomor_Pesan Tanggal_Pesan No_Pesan Pemetaan Hubungan M to M Tgl_Pesan Kode_Produk Harga_Unit Jumlah Mengirim PESANAN PESANAN Meminta PRODUK No_Pelanggan _Pelanggan Relasi No_Pesan Tgl_pesan Relasi PESANAN No_Pesan Kode_Produk Jumlah Relasi BARIS PESANAN No_Pesan Tanggal_Pesan No_Pelanggan Relasi PESANAN 35 Kode_Produk Harga_Unit Relasi PRODUK 36 6
No_Dosen Pemetaan Hubungan 1 to 1 _Dosen Kode_Prodi _Prodi No_Pelanggan Pemetaan Entitas Asosiatif (Ternary) Kode_Vendor Alamat Tanggal_Penugasan No_Kirim Tanggal Jumlah DOSEN Mengepalai PROGRAM STUDI PENGIRIMAN VENDOR No_Dosen _Dosen Relasi DOSEN No_Pelanggan Relasi Kode_Prodi _Prodi No_Dosen Tanggal_penugasan Relasi PROGRAM STUDI 37 No_Kirim Tanggal Jumlah No_Pelanggan Kode_Vendor Kode_Vendor Alamat Relasi VENDOR Relasi PENGIRIMAN 38 Pemetaan Unary 1:N Pemetaan Unary M:M No_Pegawai _Pegawai Tgl_Lahir No_Item _Item Harga_Unit PEGAWAI ITEM Mengepalai Jumlah Tersusun_atas No_Pegawai _Pegawai Tgl_lahir ID_Manajer Relasi PEGAWAI No_Item _Item Harga_Unit Relasi ITEM 39 No_Item No_Komponen Jumlah Relasi KOMPONEN 40 _Pegawai Pemetaan Hubungan Supertipe/Subtipe Alamat Pemetaan Hubungan Supertipe/Subtipe (Lanjutan ) Nomor_Pegawai PEGAWAI Tipe_Pegawai: Tgl_Mulai_Kerja d H K T PEGAWAI HARIAN PEGAWAI TETAP PEGAWAI KONTRAK Kompensasi Upah_Harian Gaji_Bulanan Tunjangan Nomor_Kontrak 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 42 7
Solusi Pemetaan Hubungan Supertipe/Subtipe Nomor_Pegawai _Pegawai Alamat Tgl_Mulai_Kerja Tipe_Pegawai PEGAWAI Nomor_Pegawai Upah_Harian PEGAWAI HARIAN Nomor_Pegawai Gaji_Bulanan Tunjangan PEGAWAI TETAP Nomor_Pegawai Nomor_Kontrak Lama_Kontrak Kompensasi PEGAWAI KONTRAK 43 8