Anda di halaman 1dari 11

LAPORAN PRAKTIKUM BASIS DATA

MODUL XII
“Aljabar Relasional”

Laporan ini disusun untuk memenuhi Tugas Mata Kuliah


Praktikum Basis Data

Disusun Oleh :
ISHIKA NUR AISYAH ERDIANI
21103047

PROGRAM STUDI S1 SISTEM INFORMASI


FAKULTAS INFORMATIKA
INSTITUT TEKNOLOGI TELKOM PURWOKERTO
2022
I. DASAR TEORI
A. Bahasa Query
1. Formal Prosedural, yang mensyaratkan agar pemakai menentukan data apa
yang diinginkan serta bagaimana cara mendapatkannya, contohnya Aljabar
Relasional.
2. Formal Non Prosedural, yang membuat pemakai dapat menentukan data apa
yang diinginkan tanpa menyebutkan bagaimana cara mendapatkannya,
contohnya Kalkulus Relasional.
3. Komersial, bahasa query yang dirancang sendiri oleh programmer menjadi
suatu program aplikasi agar pemakai lebih mudah menggunakannya (user
friendly), contohnya SQL, QBE, QUEL.
B. Aljabar Relasional
merupakan sekumpulan operasi terhadap relasi/table dimana setiap
operasi tersebut menggunakan satu atau lebih relasi/table untuk menghasilkan
satu relasi/table yang baru dan menyediakan seperangkat operator untuk
memanipulasi data.Termasuk dalam kategori prosedural, fokus pada langkah-
langkah untuk menghitung jawaban yang diinginkan berdasarkan urutan
operator di dalam query.
Operasi-operasi dasar dalam aljabar relasional antara lainnya :
1. Select ()
2. Project ()
3. Union ()
4. Intersection ()
5. Set difference (–)
6. Cartesian product (x)
7. Rename ()
Disamping operasi-operasi dasar terdapat beberapa operasi lainnya seperti set
intersection, natural join, division dan assignment.

1. SELECT ()
Digunakan untuk menyeleksi sekumpulan tupel dari sebuah relasi yang
memenuhi predikat/kondisi seleksi,notasinya : p(r). Predikat (p) muncul
sebagai subcript dari . Argumen relasi diberikan dalam kurung yang
mengikuti .
Dijabarkan :
p(r) = {t | t  r and p(t)}
Penggabungan formula :
^ (and), v(or), ¬(not)
Operator :
=, ≠, >, ≥,<,≤
Contoh :
Tampilkan data mahasiswa yang tempat tinggalnya di Bogor.
kota = ‘Bogor’ (mahasiswa)
Tampilkan daftar dosen yang tempat lahirnya di ‘Bekasi
tempat_lhr=’Bekasi’ (Dosen)
Tampilkan daftar dosen yang tempat lahirnya di ‘Jakarta’ atau ‘Bogor’
tempat_lhr =’Jakarta’ v tempat_lhr=’Bogor’ (Dosen)
Tampilkan daftar dosen yang lahir di ‘Bogor’ dan berjenis kelamin ‘Pria’
tempat_lhr=’Bogor’ ^ jkelamin=’Pria’ (Dosen)

2. PROJECT ()
Operasi untuk memperoleh kolom – kolom tertentu. Hasilnya adalah
sebuah relasi dari beberapa yang didefinisikan pada query. Hasil yang
duplikat akan diambil salah satu. Notasinya :  A1, A2, A3, A4,…,An ( r
), dimana A1, A2, … , An adalah nama atribut dan r adalah nama relasi.
Contoh:
Untuk mengambil data hanya pada kolom nama_mahasiswa dari
relasi/tabel Mahasiswa
 nama_mahasiswa (Mahasiswa)
Tampilkan nid,nama_d,alamat,kota dari relasi Dosen
 nid,nama,alamat,kota(Dosen)
Tampilkan nid, nama, alamat, kota, gajipokok dari relasi Dosen, dimana
gaji pokoknya lebih besar dari Rp.1200000
 nid, nama, alamat, kota, gajipokok (gajipokok>1200000(Dosen))

3. UNION ()
Notasi:
rs
Dijabarkan :
r  s = {t | t  r or t s}
Syarat r  s valid :
1. r, s harus memiliki jumlah atribut yang sama
2. Domain atribut harus kompatibel (contoh: kolom kedua r tipe nilai
yang dikeluarkan sama dengan kolom kedua s) → union-compatible
3. Dua relasi dikatakan union-compatible jika memiliki derajat yang
sama(jumlah atribut yang sama ) dan urutan atribut memiliki domain
yang sama
Asumsi ada 2 tabel :
Checking-Account (c-num, c-owner, c-balance)
Saving-Account (s-num, s-owner, s-balance)
Kedua tabel tersebut union-compatible.
Union, intersection dan set difference membutuhkan tabel-tabel yang
union-compatible.
Contoh :
carilah nama customer yang memiliki deposito dan pinjaman
 customer_name (depositor)   customer_name (borrower)
4. INTERSECTION ()
Hasil dari operasi ini, dinotasikan dengan R ∩ S, adalah sebuah relasi
yang mengandung semua tuple yang muncul pada R dan S. Harus
"type compatible".
Union and intersection adalah operasi komutatif dimana R ∪ S = S ∪
R, and R ∩ S = S ∩ R. Union and intersection dapat ditangani dalam
bentuk operasi n-ary yang menangani banyak relasi dan merupakan
operasi asosiasi dimana R ∪ (S ∪ T) = (R ∪ S) ∪ T, and (R ∩ S) ∩ T
= R ∩ (S ∩ T)

5. SET DIFFERENCE (–)


Memiliki notasi :
r–s
Dijabarkan :
r – s = {t | t  r and t  s}
Set difference harus diambil dari relasi yang union compatible, r dan
s memiliki jumlah atribut sama, domain atribut dari r and s harus
compatible.
Contoh :
Menampilkan nama mata kuliah yang terdapat pada tabel Kuliah_S1
tapi tidak terdapat pada tabel Kuliah_D3
 nama_kul (Kuliah_S1) -  nama_kul (Kuliah_D3)

6. CARTESIAN PRODUCT (X)


adalah operasi untuk menghasilkan table hasil perkalian kartesian.
Operasi cartesian-product memungkinkan kita mengkombinasikan
informasi beberapa relasi, operasi ini adalah operasi biner.
Notasinya adalah r x s, dijabarkan :
r x s = {t q | t  r and q  s}
Anggap atribut dari r(R) and s(S) disjoint. (Yaitu, R  S = ). Jika
atribut r(R) and s(S) tidak disjoint, maka operasi renaming harus
dilakukan. Cartesian Product : kombinasi informasi dari kedua tabel,
menghasilkan semua kombinasi yang mungkin
Contoh :
Tampilkan nid,nama_d (dari relasi Dosen), nama_mk (dari relasi
Matakuliah), thn_akademik, smt, hari, jam_ke, waktu,kelas (dari
relasi Mengajar) dimana semester mengajar adalah pada semester ‘1’.
 nid,nama_d,nama_mk, thn_akademik, smt, hari, jam_ke, waktu,
kelas ( smt=1 ^Dosen.nid=Mengajar.nid
^Mengajar.kdmk=Matakuliah.kdmk (DosenxMatakuliah x
Mengajar))
Tampilkan nama_d (dari relasi Dosen), nama_mk,sks (dari relasi
Matakuliah), hari,jam_ke,waktu (dari relasi Mengajar) dimana sks
matakuliah >3 atau hari mengajar = ‘Jumat’.
 nama_d, nama_mk, sks, hari, jam_ke,waktu (sks>3 v hari=’Jumat’
^Mengajar.nid=Dosen.nid^Mengajar.kdmk = Matakuliah.kdmk
(MengajarxDosenxMatakuliah))

7. RENAME ()
Mengubah nama dari hasil aljabar relasional, notasinya  x (E) yang
berarti menghasilkan E dengan nama X. Jika aljabar relasional E
memiliki dari 1 atribut lebih , maka  x(A1, A2, … , An) ( E ),
menghasilkan E dengan nama X, dan dengan nama atribut A1 , A2 ,
…., An.
Menghasilkan relasi baru dengan skema yang sama dan konten sama,
hanya berbeda nama baik nama relasi maupun nama atribut. Relasi
aslinya tidak berubah.
Contoh,
salinlah data dari table Dosen, dimana jenis kelaminnya adalah ‘Pria’
kedalam table baru dengan nama DosenNew.
 DosenNew (  jkelamin=’Pria’ (Dosen))
II. GUIDED
Aktifkan basisdata db_akademik yang telah dibuat pada praktikum
sebelumnya/dibagikan saat praktikum berlangsung. Kemudian jawablah
pertanyaan-pertanyaan dibawah ini dengan benar.
1.  fakultas = “FTII” (Dosen)

2.  nama_matkul, hari_kuliah, ruang_kuliah(Mata_kuliah)

3.  nama_mahasiswa, jenis_kelamin, alamat ( alamat = “Bandung”


(Mahasiswa))

4.  nama mahasiswa, usia, alamat ( usia < 23 (Mahasiswa))

5.  nama_dosen, nama_matkul, sks, hari_kuliah, jam_kuliah, ruang_kuliah (


hari_kuliah =’senin’ ^Dosen.nidn=Mengampu.nid^Mengampu.kd_matkul =
Mata_kuliah.kd_matkul (MengampuxDosenxMata_kuliah))

6.  usia(mahasiswa)   usia(dosen)

7.  usia(mahasiswa)   usia(dosen)

8.  usia(mahasiswa) -  usia(dosen)
9.  usia(dosen) -  usia(mahasiswa)

10. Siapakah mahasiswa yang sudah menikah dan tampilkan mata kuliah apa saja
yang diambil oleh mahasiswa yang sudah menikah (tampilkan
nama_mahasiswa diberi nama dengan “Mahasiswa Dewasa”, status
pernikahan, dan nama_matkul)

11. Tampilkan nama dosen yang memiliki usia yang sama dengan usia mahasiswa
(tampilkan nama_dosen, nama_mahasiswa, dan usia keduanya)

12. Tampilkan nama dosen yang tidak memiliki usia yang sama dengan
mahasiswa (tampilkan nama_dosen, nama_mahasiswa, dan usia keduanya)

13. Siapakah dosen yang memiliki gaji lebih kecil dari rerata gaji ? Tampilkan
nama dosen, besar gaji, dan golongan.

14. Berapakah gaji dosen yang mengajarkan diruang Rek202, sertakan nama
dosen, gaji, nama mata kuliah, dan ruang kuliah

15. Siapakah dosen dari Fakultas FTII yang memiliki gaji terbesar ?
16. Siapakah mahasiswa yang memiliki usia diatas rerata usia ? Tampilkan nama
mahasiswa dan usianya

17. Siapa sajakah dosen yang berpendidikan teknik ? Tampilkan nama dosen,
pendidikan, dan nama_matkul yang diampu

18. Apakah Annisa mengajar pada hari Rabu ?


III. UNGUIDED
Dari persoalan GUIDED, ubahlah query dari no 10 hingga 18 (akhir) kedalam
bentuk aljabar relasional. Sajikan dalam tabel supaya rapi.
No Pertanyaan Bentuk Aljabar Relasional
.
1. Siapakah mahasiswa yang  nama_mahasiswa,status_pernikahan (
sudah menikah dan status_pernikahn = ‘M’ (mahasiswa))
tampilkan mata kuliah apa
saja yang diambil oleh
mahasiswa yang sudah
menikah (tampilkan
nama_mahasiswa diberi
nama dengan “Mahasiswa
Dewasa”, status
pernikahan, dan
nama_matkul)
2. Tampilkan nama dosen dosen.usia,dosen.nama_dosen(dosen.usia=
yang memiliki usia yang mahasiswa.usia (mahasiswa))
sama dengan usia
mahasiswa (tampilkan mahasiswa.usia,mahasiswa.nama_mhs(ma
nama_dosen, hasiswa.usia=dosen.usia (dosen))
nama_mahasiswa, dan
usia keduanya)
3. Tampilkan nama dosen dosen.usia,dosen.nama_dosen(dosen.usia-
yang tidak memiliki usia mahasiswa.usia (mahasiswa))
yang sama dengan
mahasiswa (tampilkan mahasiswa.usia,mahasiswa.nama_mhs(ma
nama_dosen, hasiswa.usia-dosen.usia (dosen))
nama_mahasiswa, dan
usia keduanya)
4. Siapakah dosen yang Πnama_dosen,gaji (σdetail_dosen.gaji < avg
memiliki gaji lebih kecil detail_dosen.gaji(detail_dosen) ^dosen.nidn =
dari rerata gaji ? detail_dosen.nidn(dosen x detail_dosen))
Tampilkan nama dosen,
besar gaji, dan golongan.
5. Berapakah gaji dosen yang Πnama_dosen,gaji,nama_matkul,ruang_kulia
mengajarkan diruang h (σmata_ kuliah.ruang_kuliah = ‘REK202’ ^
Rek202, sertakan nama dosen.nidn = mengampu.nidn ^
dosen, gaji, nama mata dosen.nidn=detail_dosen.nidn ^
kuliah, dan ruang kuliah mata_kuliah.prodi = mengampu.prodi (dosen
x mata_kuliah x mengampu x detail_dosen))
6. Siapakah dosen dari Πnama_dosen,gaji(σfakultas = ‘FTII’,gaji
Fakultas FTII yang (detail_dosen) ^ dosen.nidn=detail_dosen.nidn
memiliki gaji terbesar ? (dosen x detail_dosen))
7. Siapakah mahasiswa yang Πnama_mhs,usia (σmahasiswa.usia > avg
memiliki usia diatas rerata mahasiswa.usia(mahasiswa)(mahasiswa))
usia ? Tampilkan nama
mahasiswa dan usianya
8. Siapa sajakah dosen yang Πnama_dosen,pendidikan,nama_matkul(σ.do
berpendidikan teknik ? sen.pendidikan ‘%Teknik%’ ^dosen.nidn =
Tampilkan nama dosen, mengampu.nidn ^mata_kuliah.kd_matkul =
pendidikan, dan mengampu.kd_matkul(dosen x mengampu x
nama_matkul yang mata_kuliah))
diampu
9. Apakah Annisa mengajar Πnama_dosen,pendidikan,hari_kuliah(σdosen
pada hari Rabu ? .nama_dosen = ‘Annisa’
^mengampu.hari_kuliah = ‘Rabu’ ^dosen.nidn
= mengampu.nidn(dosen x mengampu))
IV. RINGKASAN
Pada modul ke 12 ini mempelajari mengenai Aljabar Relasional.Pengertian dari
Aljabar Relasional itu sendiri merupakan sekumpulan operasi terhadap relasi/table
dimana setiap operasi tersebut menggunakan satu atau lebih relasi/table untuk
menghasilkan satu relasi/table yang baru dan menyediakan seperangkat operator
untuk memanipulasi data.
Operasi-operasi dasar dalam aljabar relasional antara lainnya :
1. Select ()
2. Project ()
3. Union ()
4. Intersection ()
5. Set difference (–)
6. Cartesian product (x)
7. Rename ()

• SELECT () : digunakan untuk menyeleksi sekumpulan tupel dari sebuah


relasi.
Contoh : Tampilkan data mahasiswa yang tempat tinggalnya di Bogor.
kota = ‘Bogor’ (mahasiswa)
• PROJECT () : digunakan untuk memperoleh kolom umum.
Contoh : Tampilkan nid,nama_d,alamat,kota dari relasi Dosen
 nid,nama,alamat,kota(Dosen)
• UNION () : digunakan untuk menggabungkan data yang berbeda.
Contoh : carilah nama customer yang memiliki deposito dan pinjaman
 customer_name (depositor)   customer_name (borrower)
• INTERSECTION () : digunakan untuk mencari data yang sama.
• SET DIFFERENCE (–) : digunakan untuk mencari data dari table A tidak
terdapat pada table B.
Contoh : Menampilkan nama mata kuliah yang terdapat pada tabel
Kuliah_S1 tapi tidak terdapat pada tabel Kuliah_D3
 nama_kul (Kuliah_S1) -  nama_kul (Kuliah_D3)
• CARTESIAN PRODUCT (X) : kombinasi beberapa tupel untuk
menghasilkan semua kombinasi yang mungkin.
Contoh : Tampilkan nid,nama_d (dari relasi Dosen), nama_mk (dari relasi
Matakuliah), thn_akademik, smt, hari, jam_ke, waktu,kelas (dari relasi
Mengajar) dimana semester mengajar adalah pada semester ‘1’.
 nid,nama_d,nama_mk, thn_akademik, smt, hari, jam_ke, waktu, kelas
( smt=1 ^Dosen.nid=Mengajar.nid
^Mengajar.kdmk=Matakuliah.kdmk (DosenxMatakuliah x Mengajar))
• RENAME () : digunakan untuk mengubah nama dari hasil aljabar
relasional.
Contoh : salinlah data dari table Dosen, dimana jenis kelaminnya adalah
‘Pria’ kedalam table baru dengan nama DosenNew.
 DosenNew (  jkelamin=’Pria’)

Anda mungkin juga menyukai