Materi 6
Relasi/ Tabel 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 Kunci primer PEGAWAI(Nomor_Peg, Nama)
Kunci Kunci dapat dibedakan menjadi: Kunci sederhana : Terdiri atas sebuah atribut 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)
Kunci Tamu Kunci tamu (foreign key) biasa digunakan sebagai penghubung ke relasi lain PELANGGAN Kunci asing Kd_Pelanggan Nama Kd_Kota A001 Aditya 0501 KOTA B001 Bakdi 0502 Kd_Kota Nama_Kota B002 Bramanto 0502 0501 Semarang 0502 Salatiga Kunci primer 0503 Kendal
Kunci Tamu (Lanjutan…) Garis bawah terputus-putus biasa dipakai untuk menyatakan kunci tamu Contoh: PELANGGAN(Kd_Pelanggan, Nama, Kd_Kota) KOTA(Kd_Kota, Nama_Kota)
Sifat Tabel Setiap Tabel memiliki nama yang unik Setiap isian pada perpotongan baris dan kolom harus bersifat atomik (bernilai tunggal) Setiap baris bersifat unik Setiap atribut memiliki nama yang unik Urutan kolom tidak penting Urutan baris juga tidak penting
Kekangan Integritas (Integrity Constraint) Tujuannya adalah untuk memfasilitasi penjagaan keakurasian dan integritas data dalam database (supaya tetap konsisten) Macamnya: Kekangan domain Integritas entitas Integritas referensial Kekangan operasional
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 CHARACTER, SIZE 35 INTEGER, 3 DIGITS
Integritas Entitas 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
Integritas Referensial Memastikan bahwa konsistensi antara dua buah relasi tetap terjaga Keadaan Awal: Kd_Pelanggan Nama Kd_Kota Kd_Kota Nama_Kota A001 Aditya 0501 0501 Semarang B001 Bakdi 0502 0502 Salatiga B002 Bramanto 0502 0503 Kendal
Efek Tanpa Integritas Referensial Keadaan Setekah data 0502 pada KOTA dihapus: 0502 Salatiga Kd_Pelanggan Nama Kd_Kota Kd_Kota Nama_Kota A001 Aditya 0501 0501 Semarang B001 Bakdi 0502 0503 Kendal B002 Bramanto 0502 Menjadi tidak konsisten
Efek Integritas Referensial Keadaan Setekah data 0502 pada KOTA dihapus: 0502 Salatiga Kd_Pelanggan Nama Kd_Kota Kd_Kota Nama_Kota A001 Aditya 0501 0501 Semarang B002 Bramanto 0503 0503 Kendal Ikut terhapus! atau penghapusan ditolak B001 Bakdi 0502
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
Relasi Berstruktur Baik 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
Anomali Anomali penyisipan Anomali penghapusan Anomali peremajaan
Anomali Peremajaan Terjadi bila terdapat pengubahan pada sejumlah data yang redundan, tetapi tanpa sengaja tidak semua ikut diubah PEMASOK KOTA BARANG JUMLAH Kartika Jakarta Monitor GGG 10 Citra Bandung ZIP drive 4 Candra Keyboard 5 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 Keyboard 5 Bandung Mouse CCP 25
Anomali Penyisipan Terjadi bila ada penambahan data KULIAH RUA NG TEMPAT Jaringan Komputer Merapi Gedung Utara Pengantar Basis Data Merbabu Matematikaa I Rama Gedung Selatan Sistem Pakar Sinta Kecerdasan Buatan Terjadi bila ada penambahan data Perhatikan contoh disamping Masalah: “Bagaimana caranya menyimpan fakta bahwa ruang baru bernama Arjuna ada pada gedung selatan?”
Anomali Penghapusan 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 12 dihapus? Data yang menyatakan bahwa biaya kursus bahasa Jepang juga akan terhapus NO_SISWA NAMA_KURSUS BIAYA 10 Bahasa Inggris 120.000 Bahasa Prancis Bahasa Mandarin 180.000 15 12 Bahasa Jepang 160.000
Tranformasi Diagram ER/EER ke Relasi Memetakan Entitas Reguler (kuat) Nama_Pelanggan Tipe entitas PELANGGAN No_Pelanggan PELANGGAN Alamat_Pelanggan Relasi PELANGGAN No_Pelanggan Nama_Pelanggan Alamat_Pelanggan
Tranformasi Diagram ER ke Relasi Memetakan Entitas dengan Atribut Komposit Jalan Nama_Pelanggan Kota Kode_Pos Tipe entitas PELANGGAN dengan atribut komposit No_Pelanggan PELANGGAN Alamat_Pelanggan Relasi PELANGGAN No_Pelanggan Nama_Pelanggan Jalan Kota Kode_Pos
Tranformasi Diagram ER ke Relasi Memetakan Entitas dengan Atribut Bernilai Ganda Nama_Pegawai No_Pegawai Alamat_Pegawai Tipe entitas PEGAWAI dengan atribut bernilai ganda PEGAWAI Keterampilan No_Pegawai Nama_Pegawai Alamat_Pegawai Relasi PEGAWAI No_Pegawai Keterampilan Relasi KETERAMPILAN PEGAWAI
Pemetaan Entitas Lemah No_Pegawai Nama_Pegawai Nama_Tanggungan Tanggal_Lahir Memiliki PEGAWAI TANGGUNGAN No_Pegawai Nama_Pegawai Relasi PEGAWAI No_Pegawai Nama_Tanggungan Tanggal_Lahir Relasi TANGGUNGAN
Pemetaan Hubungan 1 to M No_Pelanggan Nama_Pelanggan Nomor_Pesan Tanggal_Pesan Mengirim PELANGGAN PESANAN No_Pelanggan Nama_Pelanggan Relasi PELANGGAN No_Pesan Tanggal_Pesan No_Pelanggan Relasi PESANAN
Pemetaan Hubungan M to M No_Pesan Tgl_Pesan Kode_Produk Harga_Unit Jumlah Meminta PESANAN PRODUK No_Pesan Tgl_pesan Relasi PESANAN No_Pesan Kode_Produk Jumlah Relasi BARIS PESANAN Kode_Produk Harga_Unit Relasi PRODUK
Pemetaan Hubungan 1 to 1 No_Dosen Nama_Dosen Kode_Prodi Nama_Prodi Tanggal_Penugasan Mengepalai DOSEN PROGRAM STUDI No_Dosen Nama_Dosen Relasi DOSEN Kode_Prodi Nama_Prodi No_Dosen Tanggal_penugasan Relasi PROGRAM STUDI
Pemetaan Entitas Asosiatif (Ternary) No_Pelanggan Nama Vendor Alamat Tanggal No_Kirim Jumlah PENGIRIMAN PELANGGAN VENDOR No_Pelanggan Nama Relasi PELANGGAN Relasi PENGIRIMAN No_Kirim Tanggal Jumlah No_Pelanggan Kode_Vendor Kode_Vendor Alamat Relasi VENDOR
Pemetaan Unary 1:N Nama_Pegawai Tgl_Lahir No_Pegawai Relasi PEGAWAI Mengepalai No_Pegawai Nama_Pegawai Tgl_lahir ID_Manajer Relasi PEGAWAI
Pemetaan Unary M:M Nama_Item Harga_Unit No_Item Jumlah Relasi ITEM Tersusun_atas Jumlah No_Item Nama_Item Harga_Unit Relasi ITEM No_Item No_Komponen Jumlah Relasi KOMPONEN
Pemetaan Hubungan Supertipe/Subtipe Nama_Pegawai Alamat Nomor_Pegawai PEGAWAI Tgl_Mulai_Kerja Tipe_Pegawai: d “H” “K” “T” PEGAWAI HARIAN PEGAWAI TETAP PEGAWAI KONTRAK Kompensasi Upah_Harian Gaji_Bulanan Tunjangan Nomor_Kontrak Lama_Kontrak
Pemetaan Hubungan Supertipe/Subtipe (Lanjutan…) Model relasional tidak mendukung hubungan supertipe/subtipe secara langsung Strategi pemecahan untuk kasus di depan: Buat relasi terpisah untuk masing-masing supertipe dan subtipe Berikan atribut-atribut yang umum (termasuk kunci primer) ke supertipe Masukkan pembeda subtipe pada supertipe Tambahkan kunci primer pada supertipe ke semua subtipe
Solusi Pemetaan Hubungan Supertipe/Subtipe Nomor_Pegawai Nama_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
PR Suatu hasil ujian dinyatakan dengan atribut seperti berikut: No_Mhs Nama_Mhs Mataujian No_Dosen_Penguji Nama_Dosen_Penguji Gambarkan diagram E-R-nya Kemudian ubahlah diagram E-R tersebut ke relasi