350 likes | 606 Views
Perancangan Database Bagian I*. *diadopsi dari Abdul Kadir, 2005. Nomor_Peg. Nama. 05001. Karmen. 05002. Tigor. 05003. Sita Devi. Model Data Relasional. Data direprentasikan dalam tabel berdimensi dua Tiga komponen yang mendasari model data relasional: Struktur data
E N D
Perancangan DatabaseBagian I* *diadopsi dari Abdul Kadir, 2005
Nomor_Peg Nama 05001 Karmen 05002 Tigor 05003 Sita Devi Model Data Relasional • Data direprentasikan dalam tabel berdimensi dua • Tiga komponen yang mendasari model data relasional: • Struktur data • Pemanipulasi data • Integritas data
Nomor_Peg Nama 05001 Karmen 05002 Tigor 05003 Sita Devi Model Data Relasional • Istilah relasi (relation) menyatakan nama tabel • Contoh: PEGAWAI(Nomor_Peg, Nama) Struktur data
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 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.(( tidak ada ketentuan nilainya beda) foreign key) biasa digunakan sebagai penghubung ke relasi lain Kunci asing PELANGGAN 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 Relasi • Setiap relasi 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(kemungkinan nilai) • 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
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 0502 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 Citra pindah ke Bogor dan Pengubahan dilakukan hanya pada data pertama
Anomali Penyisipan • 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
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 No_Pegawai Tgl_Lahir PEGAWAI Mengepalai No_Pegawai Nama_Pegawai Tgl_lahir ID_Manajer Relasi PEGAWAI
Pemetaan Unary M:M Nama_Item Harga_Unit No_Item 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 PEGAWAI Nomor_Pegawai Tgl_Mulai_Kerja Tipe_Pegawai: d “K” “H” “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
Tugas • 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