BASIS DATA (BS203) MODEL RELASIONAL
[email protected] fb: NDoro Edi
Outline • Pendahuluan – Model Data Relational & Syarat
• Transformasi Model ER Model Relasi – Himpunan Entitas, yg memiliki • Atribut komposit • Atibut bernilai banyak – Himpunan Entitas Lemah – Relasi Biner, Unary, N-Ary – Implementasi Spesialisasi/Generalisasi – Agregasi – Integritas Basis Data
Transformasi • Model Relasional adalah sebuah struktur yang paling banyak digunakan oleh sebagian DBMS. • Oleh karena itu akan disajikan cara transformasi E-R Diagram ke dalam Model Basis Data Relasional.
Contoh ER-D
Nama
Alamat
NRP Tgl_Lahir Mahasiswa
4
TABEL MAHASISWA NRP 0472001 0472002 0472003 0472004 0472005 0472006 0472007 0472008
Nama Ria Riny Erica John Lucas Paul Philip Mary
Alamat Jl. Badak 2 Jl. Sapi 3 Jl. Macan 1 Jl. Riau 3 Jl. Duku 4 Jl. Badak 5 Jl. Riau 30 Jl. Riau 3
Tgl_Lahir 11/09/85 12/01/85 09/09/84 01/03/85 04/03/85 01/03/85 01/03/85 03/03/83
Model Basis Data Relasional • Model basis data relasional mempresentasikan basis data sebagai sekumpulan tabel. Masing-masing tabel mempunyai nama yang unik. • Baris data (Row/Record) pada tabel mempresentasikan sekumpulan nilai yang saling berhubungan. • Setiap nilai dihubungkan kepada sebuah atribut.
Syarat 1. 2. 3. 4. 5.
6.
Setiap relasi mempunyai nama yang unik. Tak ada tupel (baris) yang kembar. Urutan tupel tidaklah penting (tupeltupel dapat dipandang dalam sembarang urutan). Setiap atribut (kolom) memiliki nama yang unik. Letak atribut bebas (urutan atribut tidak penting). Setiap atribut memiliki nilai tunggal dan jenisnya sama untuk semua tupel.
Transformasi Himpunan Entitas • Himpunan entitas kuat dengan atribut a1, a2, …, an diimplementasikan sebagai sebuah tabel dengan n kolom yang unik (satu kolom per atribut). • Setiap baris pada tabel merepresentasikan satu entitas dari himpunan entitas. • Kita dapat menambah, menghapus, dan mengubah baris pada tabel.
Transformasi Himpunan Entitas dengan Atribut Komposit • Atribut Komposit diratakan dengan membuat kolom baru untuk setiap komponen dari atribut komposit.
Contoh
Relation schema: Customer-schema = (customer-id, firstname, middle-initial, last-name, street-number, street-name, apartment-number,city,state,zip-code) Integritas Referensial Customer = Relasi Customer
Entitas Customer dengan atribut komposit
Relasi CUSTOMER
Atribut Bernilai Banyak (Multi Valued Attribute) • Atribut Bernilai Banyak (misal disebut M) dari himpunan entitas E direpresentasikan dengan tabel EM yang terpisah. Tabel EM mempunyai atribut yang terdiri dari kunci primer E dan atribut M yang bernilai banyak. Setiap nilai dari Atribut Bernilai Banyak menjadi baris yang berbeda pada tabel EM.
Contoh E
M Tabel EM (Customer-PhoneNumber) ◦ Relation Schema: terdiri dari kunci primer E dan atribut M Customer-Schema = (customer-id, date-of-birth) Customer-PhoneNumber-Schema= (customer-id, phone-number)
Integritas Referensial Customer
Customer-phone-number
(a)
Atribut Bernilai Banyak menjadi relasi terpisah dengan kunci tamu
(b)
Relasi Satu ke Banyak antara entitas awal dengan relasi baru
Latihan 3 Nama_d
NIK Nama
DOSEN
Nama_b Alamat
Gelar
Himpunan Entitas Lemah Himpunan entitas lemah dengan atribut a1, a2, …, an dan himpunan entitas kuatnya dengan kunci primer b1, b2, …, bm direpresentasikan sebagai tabel dengan n+m kolom, satu untuk setiap {a1, a2, …, an} U {b1, b2, …, bm}. b1, b2, …, bm adalah kunci tamu dari yang menunjuk pada himpunan entitas kuat. Pada penghapusan data, bila data pada himpunan entitas yang kuat dihapus, data dengan kunci primer tersebut juga harus dihapus dari himpunan entitas lemah.
Payment-number amount
Loan-number
loan
Hasil Relasi
Foreign key
Primary key
Payment-date
Loan-payment
payment
Payment-amount
Foreign key
Composite primary key
Latihan 5 Nama
NRP
Mahasiswa
Punya
Alamat Nama
Hobbi
Kota
Jalan
NRP
Mahasiswa
Alamat Punya
Pekerjaan
OrangTua
Nama
Alamat Nama Nama_d
Nama_b
Transformasi Relasi Biner • Terdiri dari – Transformasi relasi 1 : 1 (1-1) – Transformasi relasi 1 : N atau N : 1 (1N/N-1) – Transformasi relasi M : N (M-N)
Transformasi Himpunan Relasi 1 : 1 • Untuk mentransformasikan relasi dengan Derajat Relasi 1-1 yang menghubungkan 2 buah himpunan entitas (S dan T), pilih salah satu relasi (katakan S) dan tambahkan dengan kunci primer T plus atribut dari himpunan relasi tersebut. • Dalam hal memilih relasi, pilihlah yang jumlah row-nya lebih sedikit atau yang ukuran tabelnya diperkirakan lebih kecil.
Transformasi Himpunan Relasi 1 : 1 nama_dos nik
Dosen
alamat_dos
kode_jur
Mengepalai
Tabel: Dosen nik nama_dos alamat_dos
nama_jur Jurusan
Tabel: Jurusan kode_jur nama_jur nik
Foreign key
Transformasi Himpunan Relasi 1 : N atau N : 1 • Untuk mentransformasikan relasi dengan Derajat Relasi 1-N atau N-1 yang menghubungkan 2 buah himpunan entitas (S dan T), pilih relasi yang berderajat N (katakan S) dan tambahkan kunci primer T (yang berderajat 1) plus atribut dari himpunan relasi tersebut. Dengan kata lain, kunci primer dari relasi yang berderajat satu menjadi kunci tamu di relasi yang berderajat banyak.
Transformasi Himpunan Relasi 1 : N atau N : 1 waktu nama_dos nik
Dosen
alamat_dos
kode_kul Mengajar
nama_kul Kuliah
Tabel: Dosen nik nama_dos alamat_dos
Foreign key Tabel: Kuliah kode_kul nama_kul nik waktu
Atribut relasi
Transformasi Himpunan Relasi M:N Untuk mentransformasikan relasi dengan Derajat Relasi N-N yang menghubungkan 2 buah himpunan entitas (S dan T), tambahkan tabel khusus dengan kolom: kunci primer dari himpunan entitas S plus kunci primer dari himpunan entitas T plus atribut dari himpunan relasi tersebut.
Translasi Relasi M:N nim
nama_mhs Mahasiswa
alamat_mhs Foreign key ke tabel Mahasiswa
Primary key
kode_kul
nilai Mempelajari
tgl_lahir
nama_kul Kuliah
Foreign key ke tabel Kuliah
nim kode_kul nilai Tabel khusus yang mewakili
Relasi Mempelajari: Tabel Mempelajari/Tabel Nilai Atribut relasi
KUNCI TAMU
(FOREIGN KEY) • Kunci Tamu (kadang disebut kunci asing) adalah sembarang atribut yang menunjuk ke kunci primer pada tabel lain. • Kunci tamu dapat menunjuk pada tabel yang sama (tabel sendiri) – tidak selalu harus menunjuk pada tabel yang lain.
Implementasi Relasi Tunggal (Unary Relation) Satu ke Banyak: penggunaan field key dua kali tetapi untuk fungsi yang berbeda. Banyak ke Banyak: ◦ pembentukan tabel baru yang merepresentasikan relasi tersebut. ◦ Tabel baru ini mendapatkan field dari semua atribut relasi (jika ada) yang ditambah dengan atribut key dari himpunan entitasnya.
Satu ke Satu: merupakan kasus khusus dari hubungan satu ke banyak.
Contoh Unary 1:N
Tabel : Employee employee-id employee-name
telepon-number
employee-id-mngr
Contoh Unary M : N
Hasil Unary M : N • Tabel : Mahasiswa NRP
Nama
TglLahir
• Tabel : Praktikum NRPPeserta
NRP-Asisten-Praktikum
Contoh Unary 1:1
• Tabel : Orang No-KTP
Nama TglLhr
No-KTP-Pasangan
Implementasi Relasi Multi Entitas (N-ary Relation) Relasi Multi Entitas dengan atribut a1, a2, …, an yang menghubungkan himpunan entitas Ei’s (katakan ada m himpunan entitas): direpresentasikan dengan sebuah tabel yang mempunyai n+m kolom, satu untuk setiap {a1, a2, …, an} U {kunciprimer(E1), kunci-primer(E2), …, kunciprimer(Em)}
Contoh Ternary nm-jab id-jab jabatan
nik
bekerja
pegawai alamat
nm-cabang
nama
kota
cabang
kd-cab
kota
Hasil Relasi Ternary • Skema Relasi (Relation Schema) – Pegawai (NIK, nama, alamat, kota) – Jabatan (id-jab, nm-jab) – Bekerja (NIK, id-jab, kd-cab) – Cabang (kd-cab, nm-cabang, kota)
Integritas Referensial (Ternary)
Cabang
Implementasi Spesialiasi/Generalisasi • Cara 1: – Buat tabel untuk entitas superior (higherlevel entity/lebih tinggi) – Buat sebuah tabel untuk entitas yang ada di bawahnya (sub entitas/ lower-level entity), termasuk dari primary key superior entitas + atribut sub entitas.
• Kerugian cara 1: – Untuk mendapatkan informasi mengenai sub entitas harus mengakses 2 buah tabel
Implementasi Spesialiasi/Generalisasi • Cara 2:
– Buat tabel untuk setiap himpunan entitas dengan semua atribut lokal (di sub entitas) + atribut yg diwariskan. – Kalau cara ini digunakan untuk generalisasi yg ‘overlapping’, maka beberapa nilai seperti alamat dan kota akan disimpan 2 kali dengan sia-sia.
Implementasi Spesialiasi/Generalisasi • Cara 3:
– Kalau generalisasinya disjoint dan total, tidak perlu membuat tabel untuk himpunan entitas superior.
– Kalau generalisasinya ‘partial’, entitas yang tidak termasuk sub entitas manapun tidak dapat direpresentasikan.
Guidance Total Overlap & Partial Overlap cara 1 lebih baik (tidak akan ada pengulangan data terlalu banyak pada tabel sub-entitas) Partial + disjoint cara 1 atau cara 2 tetapi tabel superior harus ada agar entitas yang tidak termasuk pada sub entitas manapun dapat tetap direpresentasikan Total + disjoint cara 3 tanpa tabel superior karena setiap entitas pasti menjadi anggota dari salah satu sub entitas
Contoh Total + Disjoint
ISA
Transformasi Total + Disjoint • •
Skema Relasi Cara 1 – Karyawan (NIK, Nama, Alamat, Tgl-Gajian, Tipe Karyawan) – Karyawan Tetap (NIK, Gaji-Bulanan) – Karyawan Harian (NIK, Honor-per-jam)
•
Cara 2 – Karyawan (NIK, Nama, Alamat, Tgl-Gajian, Tipe Karyawan) – Karyawan Tetap (NIK, Nama, Alamat, Tgl-Gajian, Tipe Karyawan, Gaji-Bulanan) – Karyawan Harian (NIK, Nama, Alamat, Tgl-Gajian, Tipe Karyawan, Honor-per-jam)
•
Cara 3 – Karyawan Tetap (NIK, Nama, Alamat, Tgl-Gajian, Tipe Karyawan, Gaji-Bulanan) – Karyawan Harian (NIK, Nama, Alamat, Tgl-Gajian, Tipe Karyawan, Honor-per-jam)
Latihan 1 Address birthdate
NoKTP
JobType
Employee ISA
Secretary
TypingSpeed
disjoint
Technician
TGrade
Name
Engineer
EngType
Latihan 2 Name
Address
NoKTP
Person
ISA Salary
Employee
Degrees
Alumnus
Major
Year
Degree
Birth-date
Major-Dept
Student
Implementasi Agregasi • Untuk merepresentasikan agregasi, buat tabel baru yang memiliki: Kunci primer dari relasi agregasi Kunci primer dari entitas-entitas yang dihubungi oleh relasi agregasi Atribut dari relasi agregasi
Contoh Agregasi
Skema Relasi Agregasi • • • • •
Mahasiswa (NRP, NamaMhs) Kuliah (KodeMK, NamaMK) Mempelajari (NRP, KodeMK, Waktu) Praktikum (kode_pra, nama_pra, jumlah_jam) Mengikuti (NRP, KodeMK, kode_pra, nilai)
50
Integritas Basis Data • Integritas Keunikan Data (Key Constraints): setiap baris pada tabel harus unik. Tidak boleh ada dua baris yang sama. • Integritas Domain Data (Domain Constraints): nilai untuk setiap atribut harus benar berdasarkan domain dari atribut tersebut. o Contoh: umur integer; 4 boleh dan 4.3 tidak boleh!
Integritas Basis Data • Integritas Referensial (Referential Integrity Constraints): bila salah satu baris pada tabel menunjuk pada baris di tabel lain (kunci tamu), baris yang ditunjuk tersebut harus ada. Dengan kata lain, nilai dari kunci tamu harus ada sebagai kunci primer di tabel yang ditunjuk. • Integritas Entitas (Entity Integrity Constraints): kunci primer tidak boleh bernilai NULL.
Integritas Referensial
Ada 4 hal yang dapat dilakukan untuk menjaga integritas referensial: 1. Tidak memperbolehkan menghapus/mengubah data di tabel utama jika ada tabel lain yang menunjuk pada data tersebut melalui kunci tamu. 2. Jika menghapus data di tabel utama, data di tabel yang menunjuk pada tabel utama tersebut juga turut dihapus.
Integritas Referensial (2) 3. Jika menghapus data pada tabel utama, kita dapat membuat nilai dari kunci tamu pada tabel yang menunjuk pada tabel utama NULL. Tetapi hal ini tidak diperbolehkan untuk himpunan entitas lemah. 4. Jika data ditambahkan pada tabel yang menunjuk pada tabel utama tetapi data tersebut tidak ada di tabel utama, penambahan tidak diperbolehkan.
Contoh Integritas Referensial
Rangkuman Kuliah Model Relasional • Pendahuluan – Model Data Relational & Syarat • Transformasi Model ER Model Relasi – Himpunan Entitas, yg memiliki • Atribut komposit • Atibut bernilai banyak – Himpunan Entitas Lemah – Relasi Biner, Unary, N-Ary – Implementasi Spesialisasi/Generalisasi – Agregasi – Integritas Basis Data