Anda di halaman 1dari 41

Sistem Basis Data

13| Aljabar & Kalkulus Relasional


Tri Afirianto, S.T., M.T. | tri.afirianto@ub.ac.id
Fakultas Ilmu Komputer | Universitas Brawijaya
Konsep Model Relasional
• Model relasional menggambarkan basis data
sebagai sekumpulan relasi-relasi
• DOMAIN
– Sekumpulan nilai atomic, dapat digunakan untuk
menunjukkan tipe data
– Contoh:
• Domain Nama: sekumpulan karakter yang menggambarkan nama
seseorang
• Domain UmurPegawai: nilai yang menyatakan umur pegawai
perusahaan, nilainya antara 15 hingga 80 tahun
• RELASI = TABEL
– Contoh: Relasi Pegawai
Konsep Model Relasional (lanj)
• SKEMA RELASI
– Relasi beserta atribut
– Contoh: skema relasi Proyek didefinisikan sebagai
Proyek(Nomor, Lokasi, DepNo, DepNama)
• TUPLE = RECORD
• ATRIBUT = FIELD
– Contoh: Nomor pada relasi Proyek
• DEGREE (ARITY)
– Jumlah atribut pada suatu relasi
– Contoh: degree dari relasi Proyek adalah 4
Notasi untuk Model Relasional
• R(A1, A2, …, An)
– Skema relasi R dengan degree n
– Contoh: MAHASISWA(Nama, NIM, …)
• t=<v1, v2, …, vn>
– Nilai v dalam tuple t pada relasi r(R)
– v1 adalah nilai dari atribut ke-1 (A1)
– Contoh: t=<“Bagus”, “110011”>
– Sama dengan t[Nama, NIM]=<“Bagus”, “110011”>
• R.A
– Notasi untuk Relasi.Atribut
– Contoh: MAHASISWA.Nama
COMPANY Relational DB Schema
Relasi EMPLOYEE
Relasi DEPARTMENT dan DEPT_LOCATIONS
Relasi PROJECT dan DEPENDENT
Relasi WORKS_ON
Bahasa Query Relasional yang Utama
• Aljabar relasional
• Kalkulus relasional
Aljabar Relasional
• Sekumpulan operasi dasar untuk memanipulasi
data pada model relasional dengan tujuan untuk
mendapatkan informasi yang diinginkan

• Hasil informasi diperoleh dari satu atau


beberapa relasi yang saling berhubungan

• Relasi pada bahasan ini dipergunakan untuk


penamaan tabel beserta datanya, baik yang
murni maupun sudah dilakukan modifikasi
dengan operasi-operasi aljabar relasional
Operasi Aljabar Relasional
• Operasi yang dikembangkan secara khusus untuk
relasional basis data
– SELECT
– PROJECT
– JOIN
• Operasi himpunan
– UNION
– INTERSECTION
– DIFFERENCE
– CARTESIAN PRODUCT
Operasi SELECT (σ)
• Memilih baris tertentu dari sebuah himpunan
baris data (record) yang memenuhi kondisi dan
membuang baris yang lain
• Notasi
– σ<kondisi pilihan>(<nama_relasi>)
• Klausa <kondisi pilihan> dapat terbentuk dari
beberapa kondisi yang terhubung dengan operator
Boolean (AND (ᴧ), OR (ᴠ), dan NOT)
• Operator pembanding {=, <, ≤, >, ≥, ≠}
Operasi SELECT (σ) (lanj)
• σDno=4(EMPLOYEE)
– Memilih sub himpunan employee yang bekerja pada
department no 4
Operasi SELECT (σ) (lanj)
• σSalary>30000 AND Dno=5(EMPLOYEE)
– Memilih sub himpunan employee yang memiliki salary
lebih dari 30000 dan bekerja di department no 5
Operasi PROJECT (π)
• Memilih atribut (kolom) tertentu dari himpunan
atau sub himpunan dan membuang yang lain
• Notasi
– π<daftar atribut>(<nama_relasi>)
• Jika <daftar atribut> tidak menyertakan PK, maka
dimungkinkan akan terjadi duplikasi. Duplikasi ini
akan dihilangkan sehingga hanya sekali yang
muncul
Operasi PROJECT (π) (lanj)
• πSex, Salary(EMPLOYEE)
– Memilih atribut sex dan salary dari tabel employee
Urutan Operasi
• Sebuah operasi dapat dituliskan dalam bentuk
beberapa ekspresi aljabar relasional dengan
mengelompokkan untuk tiap-tiap operasi dan
memberi nama
• Misal: mengambil informasi Fname, Lname, dan
Salary dari employee yang bekerja di Dno 5
– πFname, Lname, Salary(σDno=5(EMPLOYEE))
Urutan Operasi (lanj)
• πFname, Lname, Salary(σDno=5(EMPLOYEE))

• Operasi di atas dapat ditulis dalam bentuk


• EMP_DEPT5 ← σDno=5(EMPLOYEE)
– Tabel employee dipilah dulu hanya mengambil yang
memenuhi Dno=5 dan disimpan dalam relasi dengan
nama EMP_DEPT5
• RESULT ← πFname, Lname, Salary(EMP_DEPT5)
– Kemudian, relasi EMP_DEPT5 dipilah hanya diambil
kolom Fname, Lname, dan Salary
Urutan Operasi (lanj)
• EMP_DEPT5 ← σDno=5(EMPLOYEE)

EMP_DEPT5
Urutan Operasi (lanj)
• EMP_DEPT5 ← σDno=5(EMPLOYEE)
EMP_DEPT5

• RESULT ← πFname, Lname, Salary(EMP_DEPT5)


RESULT
Perubahan Nama Atribut (ρ)
• Untuk mengubah nama atribut dari sebuah relasi yang
merupakan hasil dari operasi aljabar relasional, ditulis
nama atribut baru dalam huruf besar

• Misal
– TEMP ← σDno=5(EMPLOYEE)
– NEW_R(NAMADEPAN, NAMAAKHIR, GAJI) ← πFname, Lname,
Salary(TEMP)

NEW_R


Operasi Himpunan
• UNION ( )
• INTERSECTION (∩)
• DIFFERENCE (–)

• Relasi yang dioperasikan dengan operasi-operasi di


atas harus memiliki jumlah dan jenis atribut
yang sama (union compatible)
UNION ( )
• R S
• Relasi yang menggabungkan semua baris di R atau
S dengan meniadakan duplikasi
UNION (lanj)
• EMP_DEPT5 ← σDno=5(EMPLOYEE)
• RESULT1 ← πSsn(EMP_DEPT5)
• RESULT2(Ssn) ← πSuper_ssn(EMP_DEPT5)
• RESULT ← RESULT1 RESULT2
UNION (lanj)
• EMP_DEPT5 ← σDno=5(EMPLOYEE)
• RESULT1 ← πSsn(EMP_DEPT5)
• RESULT2(Ssn) ← πSuper_ssn(EMP_DEPT5)
EMP_DEPT5
UNION (lanj)
• EMP_DEPT5 ← σDno=5(EMPLOYEE)
• RESULT1 ← πSsn(EMP_DEPT5)
• RESULT2(Ssn) ← πSuper_ssn(EMP_DEPT5)
• RESULT ← RESULT1 RESULT2
INTERSECTION (∩)
• R∩S
• Relasi yang terdiri dari baris yang ada di R dan juga
di S
DIFFERENCE (–)
• R–S
• Relasi yang terdiri dari semua baris di R, tetapi
tidak ada di S
LATIHAN

• Tentukan
a) STUDENT INSTRUCTOR
b) STUDENT ∩ INSTRUCTOR
c) STUDENT – INSTRUCTOR
d) INSTRUCTOR – STUDENT
JAWABAN
a) b) c)

d)
Operasi Himpunan (lanj)
• CARTESIAN PRODUCT (×)
– R×S
– Relasi yang terdiri dari kombinasi baris yang terdapat di R
dan S, yang mana setiap baris R digabungkan dengan
setiap baris di S
CARTESIAN PRODUCT (×)
• Misal
– Mengambil nama-nama employee wanita beserta nama-
nama dependent masing-masing

1. FEMALE_EMPS ← σSex=‘F’(EMPLOYEE)
2. EMPNAMES ← πFname, Lname, Ssn(FEMALE_EMPS)
3. EMP_DEPENDENTS ← EMPNAMES × DEPENDENT
4. ACTUAL_DEPENDENTS ←
σSsn=Essn(EMP_DEPENDENTS)
5. RESULT ←
πFname, Lname, Dependent_name(ACTUAL_DEPENDENTS)
CARTESIAN PRODUCT (lanj)
• FEMALE_EMPS ← σSex=‘F’(EMPLOYEE)
CARTESIAN PRODUCT (lanj)
• FEMALE_EMPS ← σSex=‘F’(EMPLOYEE)

• EMPNAMES ← πFname, Lname, Ssn(FEMALE_EMPS)


CARTESIAN PRODUCT (lanj)
• EMP_DEPENDENTS ← EMPNAMES × DEPENDENT
CARTESIAN PRODUCT (lanj)
• EMP_DEPENDENTS ← EMPNAMES × DEPENDENT
CARTESIAN PRODUCT (lanj)
• ACTUAL_DEPENDENTS ← σSsn=Essn(EMP_DEPENDENTS)
CARTESIAN PRODUCT (lanj)
• ACTUAL_DEPENDENTS ← σSsn=Essn(EMP_DEPENDENTS)

• RESULT ←
πFname, Lname, Dependent_name(ACTUAL_DEPENDENTS)
LATIHAN
(Buat Aljabar Relasional dan Hasilnya)
1. Dapatkan nama, alamat, dan gaji pegawai yang
berada pada departemen research!
2. Dapatkan nama, alamat, dan NoKTP pegawai
yang menjadi menjadi supervisor dari pegawai
lain!
3. Dapatkan nama dan noKTP pegawai beserta
nama dan NoKTP supervisornya!
4. Dapatkan nama, alamat dan NoKTP dari pegawai
yang menjadi manajer departemen 4!
5. Dapatkan nama, alamat beserta nama proyek dari
pegawai yang terlibat di proyek ProductZ!
LATIHAN
(Buat Aljabar Relasional dan Hasilnya)
6. Dapatkan nama proyek yang dikendalikan oleh
departemen research!
7. Dapatkan nama proyek yang berlokasi di Houston
atau di Stafford!
8. Dapatkan nama dan lokasi proyek tempat John
bekerja!
9. Dapatkan nama dan alamat pegawai laki-laki yang
memiliki gaji kurang dari 40000!
10.Dapatkan nama dan gaji dari manajer departemen
Administration!

Anda mungkin juga menyukai