Perancangan
Database
Bagian I
1 4/26/2009Pengantar
Apa yang akan dipelajari dalam modul ini?
Model data relasional
Relasi
Kunci
Integrity Constraints
Anomali
Transformasi Diagram E/R ke Relasi
Pemetaan Hubungan
4/26/2009 2
Model Data Relasional
• Diperkenalkan oleh Codd tahun 1970 • Data direprentasikan
dalam tabel berdimensi dua 3 Nomor_Peg Nama 05001 Karmen 05002 Tigor 05003 Sita Devi 4/26/2009
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 terjadi manipulasi data.
4/26/2009 4
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, Nama) 5 Nomor_Peg Nama 05001 Karmen 05002 Tigor 05003 Sita Devi Struktur data 4/26/2009
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
6 PEGAWAI(Nomor_Peg, Nama)
Kunci primer
Kunci
• Kunci dapat dibedakan menjadi:
1. Kunci sederhana: Terdiri atas sebuah atribut
2. Kunci komposit: Tersusun atas dua atribut atau lebih 7 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
Kunci Tamu
• Kunci tamu (foreign key) biasa digunakan
sebagai penghubung ke relasi lain
8 Kd_Kota Nama_Kota 0501 Semarang 0502 Salatiga 0503 Kendal Kd_Pelanggan Nama A001 Aditya B001 Bakdi B002 Bramanto Kd_Kota 0501 0502 0502
PELANGGAN(Tabel yang merujuk )
KOTA (Tabel yang dirujuk )
Kunci primer
Kunci asing
4/26/2009
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)
9 4/26/2009
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 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 11
4/26/2009
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 4/26/2009
Contoh :
Gambar 1. Diagram E/R Nama atribut :……… Arti :……… Tipe data :……… Format :……… Jangkauan :……… Keunikan :……… Dukungan null:………. 4/26/2009 13 MHS mengambil KULIAH NIM
Integritas Entitas
• Memastikan bahwa data yang terkait dengan kunci primer tidak terlanggar
• Secara khusus, data Null pada kunci primer akan ditolak
• Nullberarti nilai pada atribut tidak pernah
diberikan
14 4/26/2009
Integritas Referensial
• Memastikan bahwa konsistensi antara dua buah relasi tetap terjaga
15 Kd_Kota Nama_Kota 0501 Semarang 0502 Salatiga 0503 Kendal Kd_Pelanggan Nama A001 Aditya B001 Bakdi B002 Bramanto Kd_Kota 0501 0502 0502 Keadaan Awal: 4/26/2009
Efek Tanpa Integritas
Referensial
16 Kd_Kota Nama_Kota 0501 Semarang 0502 Salatiga 0503 Kendal Kd_Pelanggan Nama A001 Aditya B001 Bakdi B002 Bramanto Kd_Kota 0501 0502 0502Keadaan Setelah data 0502 pada KOTA dihapus:
Menjadi tidak konsisten 4/26/2009
Efek Integritas
Referensial
17 Kd_Kota Nama_Kota 0501 Semarang 0503 Kendal Kd_Pelanggan Nama A001 Aditya B002 Bramanto Kd_Kota 0501 0502 0502 SalatigaKeadaan Setekah data 0502 pada KOTA dihapus:
B001 Bakdi 0502
Ikut terhapus! atau penghapusan
ditolak
4/26/2009
Manipulasi data dalam
database
• Aturan-aturan yang perlu diterapkan agar tidak terjadi pelanggaran terhadap aturan integritas referensial :
–Insertion rule –Deletion rule –Update rule
Insertion 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 Pelangganakan
dimasukkan data kota dengan kode kota 0510, maka tidak diijinkan. Mengapa?
4/26/2009 19
Deletion Rule
• 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 databasetersebut.
4/26/2009 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 disetmenjadi
nullkemudian 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.
4/26/2009 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.
4/26/2009 23
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
24 4/26/2009
Diskusi kelompok
• Untuk setiap jenis perlakuan (referential integrity constraint),
berikan contoh berdasar tabel PELANGGAN dan
KOTA
4/26/2009 25
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 26 4/26/2009
Anomali
1. Anomali penyisipan 2. Anomali penghapusan 3. Anomali peremajaan 27 4/26/2009Anomali Peremajaan
• Terjadi bila terdapatpengubahan 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 Jakarta Keyboard 5 Citra Bandung Mouse CCP 25
PEMASOK KOTA BARANG JUMLAH Kartika Jakarta Monitor GGG 10
Citra Bogor ZIP drive 4 Candra Jakarta Keyboard 5
Citra Bandung Mouse CCP 25
28
Pemasok Citra pindah ke Bogor dan Pengubahan dilakukan hanya pada
data pertama
4/26/2009
Anomali Penyisipan
• Terjadi bila adapenambahan 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
29 4/26/2009
Anomali Penghapusan
• Terjadi kiranya sesuatu barisyang 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 30 4/26/2009
Tranformasi Diagram ER/EER
ke Relasi
• Memetakan Entitas Reguler (kuat)
31
PELANGGAN
No_Pelanggan
Nama_Pelanggan
Alamat_Pelanggan
No_Pelanggan Nama_Pelanggan Alamat_Pelanggan
Tipe entitas PELANGGAN Relasi PELANGGAN 4/26/2009
Tranformasi Diagram ER
ke Relasi
• Memetakan Entitas dengan Atribut Komposit
32
PELANGGAN
No_Pelanggan
Nama_Pelanggan
Alamat_Pelanggan
No_Pelanggan Nama_Pelanggan Jalan
Tipe entitas PELANGGAN dengan atribut komposit Relasi PELANGGAN Jalan Kota Kode_Pos Kota Kode_Pos 4/26/2009
Tranformasi Diagram ER
ke Relasi
• Memetakan Entitas dengan Atribut Bernilai Ganda
33
PEGAWAI
No_Pegawai
Nama_Pegawai
Keterampilan
No_Pegawai Nama_Pegawai Alamat_Pegawai
Tipe entitas PEGAWAI dengan atribut bernilai ganda
Relasi PEGAWAI Alamat_Pegawai
No_Pegawai Keterampilan Relasi KETERAMPILAN PEGAWAI
4/26/2009
Pemetaan Entitas
Lemah
34 PEGAWAI Memiliki No_PegawaiNama_Pegawai Nama_Tanggungan Tanggal_Lahir
TANGGUNGAN
No_Pegawai Nama_Pegawai Relasi PEGAWAI
No_Pegawai Nama_Tanggungan Tanggal_Lahir Relasi TANGGUNGAN
4/26/2009
Pemetaan Hubungan 1
to M
35 Mengirim PELANGGAN No_PelangganNama_Pelanggan Nomor_Pesan Tanggal_Pesan
PESANAN
No_Pelanggan Nama_Pelanggan Relasi PELANGGAN
No_Pesan Tanggal_Pesan No_Pelanggan Relasi PESANAN
4/26/2009
Pemetaan Hubungan M
to M
36 Meminta PESANAN No_PesanTgl_Pesan Kode_Produk Harga_Unit
PRODUK
No_Pesan Tgl_pesan Relasi PESANAN
Kode_Produk Harga_Unit
Relasi BARIS PESANAN Jumlah
No_Pesan Kode_Produk Jumlah
Relasi PRODUK
Pemetaan Hubungan 1
to 1
37 Mengepalai DOSEN No_DosenNama_Dosen Kode_Prodi Nama_Prodi
PROGRAM STUDI
No_Dosen Nama_Dosen Relasi DOSEN
Relasi PROGRAM STUDI Tanggal_Penugasan
Kode_Prodi Nama_Prodi No_Dosen Tanggal_penugasan
4/26/2009
Pemetaan Entitas Asosiatif
(Ternary)
38 PENGIRIMAN
PELANGGAN No_Pelanggan
Nama Kode_Vendor Alamat
VENDOR
No_Pelanggan Nama Relasi PELANGGAN
Kode_Vendor Alamat
Relasi PENGIRIMAN Tanggal
No_Kirim Tanggal Jumlah
Relasi VENDOR No_Kirim Jumlah No_Pelanggan Kode_Vendor 4/26/2009
Pemetaan Unary 1:N
39 PEGAWAI No_Pegawai Nama_PegawaiNo_Pegawai Nama_Pegawai Tgl_lahir Relasi PEGAWAI Tgl_Lahir Mengepalai ID_Manajer 4/26/2009
Pemetaan Unary M:M
40 ITEM No_Item Nama_ItemNo_Item Nama_Item Harga_Unit Relasi ITEM Harga_Unit
Tersusun_atas
Jumlah
No_Item No_Komponen Jumlah Relasi KOMPONEN
4/26/2009
Pemetaan Hubungan
Supertipe/Subtipe
41 PEGAWAI dPEGAWAI HARIAN PEGAWAI TETAP PEGAWAI KONTRAK
Gaji_Bulanan Nomor_Pegawai
Nama_Pegawai Alamat
Tgl_Mulai_Kerja
Upah_Harian Tunjangan Nomor_Kontrak Lama_Kontrak Kompensasi Tipe_Pegawai: “H” “K” “T” 4/26/2009
Pemetaan Hubungan
Supertipe/Subtipe
(Lanjutan…)
• Model relasional tidak mendukung hubungansupertipe/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 4/26/2009
Solusi Pemetaan Hubungan
Supertipe/Subtipe
43
Nomor_Pegawai Nama_Pegawai Alamat Tgl_Mulai_Kerja PEGAWAI
Nomor_Pegawai Upah_Harian PEGAWAI HARIAN
Nomor_Pegawai Gaji_Bulanan PEGAWAI TETAP
Nomor_Pegawai Nomor_Kontrak PEGAWAI KONTRAK Tunjangan Lama_Kontrak Kompensasi Tipe_Pegawai 4/26/2009