Page 2
Outline
• „Bahasa Query
• „Pengenalan Relasi Aljabar
• „Operasi pada Relasi Aljabar:
– „Operasi Seleksi Baris
– „Operasi Seleksi Kolom
– „Operasi Union
– „Operasi Selisih
– „Operasi Perkalian Kartesian
– „Operasi Rename
– „Operasi Interseksi
– „Operasi Natural Join
• „Latihan
Page 3
Bahasa Query
• Definisi:
Bahasa yang dipakai oleh pengguna untuk
mengambil / meminta informasi/data dari
basis data (database)
• 2 Macam bahasa query:
– Procedural
– Non Procedural
Page 4
Bahasa Query
• Yang murni (“Pure”) :
– Relational Algebra (Relasi Aljabar)
– Tuple Relational Calculus
– Domain Relational Calculus
• Bahasa murni tersebut adalah dasar dari beberapa bahasa query yang sekarang sedang populer digunakan, yaitu SQL.
• Dengan kata lain, SQL itu sendiri bukanlah bahasa query yang murni. SQL pada umumnya menggunakan bahasa inggris sederhana
Page 5
Relasi Aljabar
• Bahasa Query yang tergolong “procedural”.
• Digunakan untuk manipulasi data dalam basis data,
misalnya untuk melakukan seleksi isi baris pada tabel
dan kemudian dikombinasikan dengan tabel lain untuk
memperoleh informasi yang diinginkan.
• Perintah operasi relasi aljabar ditulis dalam bentuk
pertanyaan (“query”).
Page 6
Relasi Aljabar
• Operasi aljabar dikelompokkan dlm dua kategori:
– Kategori I : operasi seleksi baris, seleksi kolom (proyeksi), dan
operasi penggabungan (“join”)
– Kategori II : operasi UNION, INTERSEKSI, SELISIH
(DIFFERENCE), dan PERKALIAN KARTESIAN (Cartesian
Product).
• Hasil relasi aljabar berupa tabel/relasi baru, dan
tabel/relasi ini juga dapat dimanipulasi lagi.
Page 7
Operasi Seleksi
• Digunakan untuk memilih isi baris pada tabel yang memenuhi kondisi yang ditentukan.
• Lambang : Sigma () untuk operasi seleksi
<kondisi> (<nama_tabel>)
• Contoh : untuk menampilkan nama mahasiswa yang masuk Jurusan Teknik Informatika
Jurusan=“Teknik Informatika”(Mahasiswa)
Page 8
Tabel Mahasiswa
NRP Nama_Mhs Jurusan Fakultas
0325116 Robert Teknik Informatika Teknik
0324027 Tori Informasi Teknologi Teknik
0325100 Wina Teknik Informatika Teknik
0313126 Mia Ekonomi Ekonomi
0312050 Budi Bahasa Inggris Sastra
0313018 Veni Ekonomi Ekonomi
0311050 Sila Bahasa Jepang Sastra
Page 9
Predikat Seleksi
• Notasi : =, , >, ,<,
• Kita dapat menggabungkan beberapa predikat menjadi
predikat yang lebih besar dengan menggunakan
connectives (and), (or), (not).
• Contoh :
untuk menampilkan fakultas dengan syarat Jml_Dos < 300 dan Jml_Mhs > 3000
Jml_Dos<300 Jml_Mhs>3000(Fakultas)
Page 10
Tabel Fakultas
Fakultas Jml_Dos Jml_Mhs Jml_Jur
Ekonomi 200 5010 4
Teknik 350 7505 8
Sastra 150 4000 3
Psikologi 120 3500 3
Kedokteran 300 3600 2
Hukum 250 5009 3
Page 11
Tabel MataKuliah
Kode_MK Nama_MK SKS NIK
IF215 Basis Data 3 250001
IF116 Fisika 3 240012
IF114 Kalkulus 4 250003
IF241 Jaringan Komputer 3 250013
IF131 Bahasa Inggris 3 240012
Page 12
Tabel Registrasi
Kode_MK NRP
IF215 0325116
IF215 0324027
IF131 0325116
IF114 0313126
IF116 0312050
Page 13
Tabel Dosen
NIK Nama_Dos Golongan
250001 Suryo IV
240012 Susie IV
250003 Sinta IV
250013 Hasan IV
240011 Amir III
Page 14
Latihan 1
Seleksi dan Predikat Seleksi
1. Pilih baris pada tabel Mata Kuliah dimana
SKS-nya sama dengan 2
2. Pilih baris pada tabel Fakultas dimana jumlah
jurusan lebih dari 3 dan jumlah dosen lebih
dari 333.
3. Pilih baris pada tabel dosen dimana golongan
sama dengan IV.
Page 15
Seleksi Kolom
• Digunakan untuk memilih kolom atribut pada tabel.
• Lambang : pi ()
• Bentuk Umum :
<kolom atribut pilihan> (<nama tabel>)
• Contoh: untuk menampilkan NIP dan Nama Dosen saja dari tabel Dosen
NIP, Nama_Dos (Dosen)
Page 16
Komposisi dari beberapa operasi
relasi
• Tampilkan nama fakultas yang jumlah
jurusannya lebih dari tiga
NamaFakultas ( jml_jur>3 (Fakultas))
• Ingat:
Hasil dari operasi relasi adalah relasi!!!
Page 17
Latihan 2
1. Apa hasil dari :
NRP, Nama_Mhs( fakultas = “Teknik”(Mahasiswa)) ?
2. Pilih semua nama mata kuliah dimana sks-nya sama dengan 3.
3. Pilih kode mata kuliah yang dipilih oleh mahasiswa dengan NRP 0325116
4. Apa hasil dari
golongan( NIK > 250000 ^ NIK < 259999 (Dosen)) ?
Page 18
Assigment Operator
• Lambang :
• Digunakan biasanya untuk
menyederhanakan agar tidak terlalu
panjang
• Contoh Bila ingin menyederhanakan relasi berikut
Nama_Fakultas ( jml_jur>3 (Fakultas)) Maka
JMLJUR jml_jur>3 (Fakultas)
Nama_Fakultas (JMLJUR)
Page 19
CONTOH BANK
cabang (nama_cabang, kota_cabang, aset)
nasabah (nama_nasabah, jalan_nasabah, kota_nasabah) tabungan (nomor_rekening, nama_cabang, jumlah_uang) pinjaman (nomor_pinjaman, nama_cabang, jumlah_uang) penabung (nama_nasabah, nomor_rekening) peminjam (nama_peminjam, nomor_pinjaman)
TABEL TABUNGAN
Nomor_Rekening Nama_Cabang Jumlah_Uang
A-101 Downtown 500
A-102 Perryridge 400
A-201 Brighton 900
A-215 Mianus 700
A-217 Brighton 750
A-222 Redwood 700
A-305 Round Hill 350
TABEL NASABAH
Nama_Nasabah Jalan_Nasabah Kota_Nasabah
Adams Spring Pittsfield
Brooks Senator Brooklyn
Curry North Rye
Glenn Sand Hill Woodside
Green Walnut Stamford
Hayes Main Harrison
Johnson Alma Palo Alto
Jones Main Harrison
Lindsay Park Pittsfield
Smith North Rye
Turner Putnam Stamford
Williams Nassau Princeton
Page 22
TABEL PENABUNG
Nama_Nasabah Nomor_Rekening
Hayes A-102
Johnson A-101
Johnson A-201
Jones A-217
Lindsay A-222
Smith A-215
Turner A-305
Page 23
TABEL CABANG
Nama_Cabang Kota_Cabang Aset
Brigthon Brooklyn 7100000
Downtown Brooklyn 9000000
Mianus Horseneck 400000
North Town Rye 3700000
Perryridge Horseneck 1700000
Pownal Bennington 300000
Redwood Palo Alto 2100000
Round Hill Horseneck 8000000
TABEL PINJAMAN
Nomor_Pinjaman Nama_Cabang Jumlah_Uang
L-11 Round Hill 900
L-14 Downtown 1500
L-15 Perryridge 1500
L-16 Perryridge 1300
L-17 Downtown 1000
L-23 Redwood 2000
L-93 Mianus 500
Page 25
TABEL PEMINJAM
Nama_Nasabah Nomor_Pinjaman
Adams L-16
Curry L-93
Hayes L-15
Jackson L-14
Jones L-17
Smith L-11
Smith L-23
Williams L-17
Page 26
Operasi Union
• Tujuan :
menggabungkan nilai-nilai tabel sehingga menghasilkan tabel baru yang berisi semua baris dari tabel asal dengan menghilangkan nilai baris yang sama (tidak ada duplikat).
• Batasan :
Hanya dapat dilakukan pada 2 tabel atau lebih, yang mempunyai kolom-kolom atribut dengan domin (domain) yang sama.
Page 27
Operasi Union
• Notasi :
<nama tabel1> <nama tabel2>
• Contoh : sebutkan semua nama nasabah
yang mempunyai tabungan atau pinjaman nama_nasabah (penabung) nama_nasabah (peminjam)
Page 28
nama_nasabah (penabung) nama_nasabah (peminjam)
Adams
Curry
Jackson
Williams
Nama_Nasabah
Hayes
Johnson
Jones
Lindsay
Smith
Turner
Nama_Nasa
bah
Nomor_Reke
ning
Hayes A-102
Johnson A-101
Johnson A-201
Jones A-217
Lindsay A-222
Smith A-215
Turner A-305
Nama_Nasa
bah
Nomor_Pinja
man
Adams L-16
Curry L-93
Hayes L-15
Jackson L-14
Jones L-17
Smith L-11
Smith L-23
Williams L-17
Page 29
Operasi Union (pelajari)
• Penggabungan antara relasi pinjaman dan penabung
tidak masuk akal, karena relasi pinjaman mempunyai 3
atribut sedangkan relasi penabung mempunyai 2 atribut.
• Untuk contoh lain, pertimbangkan gabungan antara
kumpulan nama nasabah dan kumpulan nama kota.
Gabungan seperti ini tidak masuk akal di banyak situasi
Page 30
Operasi Union
• Union yang “valid”, harus:
1. Dua atau lebih tabel yang digabungkan harus mempunyai jumlah atribut yang sama (same arity)
2. Domin (Domain) dari atribut yang digabungkan harus cocok (compatible) (kolom kedua dari tabel pertama harus mempunyai tipe yang sama dengan kolom kedua dari tabel kedua)
Page 31
Operasi Selisih
• Tujuan
mengurangkan baris pada tabel pertama
dengan baris pada tabel kedua dengan hasil
tabel baru yang hanya berisi baris pada tabel
pertama yang tidak muncul pada tabel kedua.
Atau dengan kata lain tabel hasil merupakan
tabel pertama dengan menghilangkan baris
yang muncul pada tabel kedua.
Page 32
Operasi Selisih
• Notasi:
<name tabel1> – <nama tabel2>
• Selisih harus dilakukan pada relasi yang cocok atau “compatible,” dalam arti:
– Kedua relasi harus mempunyai jumlah atribut yang sama (same arity)
– Domain dari atribut yang diselisihkan harus cocok (compatible) atau
kolom kedua dari tabel pertama harus mempunyai tipe yang sama dengan kolom kedua dari tabel kedua.
Page 33
Contoh Operasi Selisih
• Temukan semua nama nasabah yang
mempunyai tabungan tetapi tidak
mempunyai pinjaman.
nama_nasabah (penabung) - nama_nasabah (peminjam)
Nama_Nasabah
Johnson
Lindsay
Turner
Page 34
nama_nasabah (penabung) - nama_nasabah (peminjam)
Nama_Nasabah
Adams
Curry
Hayes
Jackson
Jones
Smith
Smith
Williams
Nama_Nasabah
Hayes
Johnson
Jones
Lindsay
Smith
Turner
Page 35
Operasi Interseksi
• Operasi interseksi digunakan untuk
menseleksi baris-baris yang muncul pada
kedua tabel asal.
• Notasi :
<nama tabel1> <nama tabel2>
• Kedua tabel harus compatibel dan
mempunyai jumlah atribut yang sama
Page 36
Contoh
• Cari semua nama nasabah yang
mempunyai pinjaman dan tabungan.
• Dengan menggunakan operasi interseksi
kita dapat menuliskan sebagai berikut:
nama_nasabah (peminjam) nama_nasabah (penabung)
• Dari pada harus menulis
nama_nasabah (peminjam) –
(nama_nasabah (peminjam) - nama_nasabah (penabung))
Page 37
Operasi Perkalian Kartesian
• Operasi perkalian Kartesian antara dua tabel
akan menghasilkan tabel baru dengan kolom
atribut, dimana semua atributnya berasal dari
kedua tabel asal, dan berisi baris yang
merupakan kombinasi dari baris-baris yang
terdapat dalam tabel asal.
Page 38
Operasi Perkalian Kartesian
• Misalnya tabel A mempunyai m atribut dengan jumlah baris a. Dan tabel B mempunyai n atribut dengan jumlah baris b.
• Apabila dilakukan perkalian karteseian antara 2 tabel tersebut, maka relasi baru akan mempunyai m + n atribut dan a x b baris
• Lambang : tanda kali (x)
• Notasi :
<nama tabel1> x <nama tabel2>
Page 39
Contoh Perkalian Kartesian
C1 C2 C3
A C E
B D F
C4 C5
E G
F H
TABEL A: TABEL B:
Page 40
Operasi Perkalian Kartesian
• Contoh : r = peminjam x pinjaman adalah
(peminjam.nama_nasabah,
peminjam.nomor-peminjam,
pinjaman.nomor_pinjaman,
pinjaman.nama_cabang,
pinjaman.jumlah_uang)
• Untuk atribut yang hanya ada di salah satu tabel, kita tidak
perlu menyebutkan prefix dari relasi tersebut. Maka akan
menjadi: (nama_nasabah, peminjam.nomor_peminjam,
pinjaman.nomor_pinjaman, nama_cabang, jumlah_uang)
Page 41
Contoh
• Tampilkan NRP & Nama Mata Kuliah yang
diambil!
NRP Kode_MK
01 A
02 B
Kode_MK Nama_MK
A Kalkulus
B Algoritma
C Agama
D Etika
TABEL Registrasi: TABEL MataKuliah:
Page 42
Contoh
• Cari semua nama nasabah yang
mempunyai pinjaman di cabang
Perryridge. Untuk mendapatkan data
tersebut, kita memerlukan tabel pinjaman
dan peminjam.
• Apakah ini benar?
nama_cabang = “Perryridge” (peminjam pinjaman)
Page 43
Hasil Contoh
• Hasil dari operasi tersebut adalah relasi dengan
cabang “Perryridge”. Tetapi, kolom
nama_nasabah termasuk nasabah-nasabah
yang tidak mempunyai pinjaman di cabang
“Perryridge”, karena perkalian kartesian
menghasilkan semua pasangan : satu dari tabel
peminjam dan satu dari tabel pinjaman.
Page 44
Hasil Contoh
• Karena operasi perkalian kartesian
menghubungkan setiap tupel dari pinjaman
dengan setiap tupel dari peminjam.
• Kita tahu bahwa jika seorang nasabah memiliki
pinjaman di cabang “Perryridge”, maka ada
beberapa tupel di peminjaman x pinjaman yang
memiliki nama orang tersebut dan peminjam.
nomor pinjaman = pinjaman.nomor_pinjaman
Page 45
Contoh
peminjam.nomor_pinjaman =
pinjaman.nomor_pinjaman ( nama_cabang=“Perryridge”
(peminjam x pinjaman))
• Kita mendapatkan tupel peminjam x pinjaman untuk
nasabah yang mempunyai pinjaman di cabang
Perryridge. Dan karena kita hanya memerlukan nama
nasabah, kita melakukan projeksi:
nama_nasabah (peminjam.nomor_pinjaman = pinjaman.nomor_pinjaman
( nama_cabang=“Perryridge” (peminjam x pinjaman)))
Page 46
Operasi Perkalian Kartesian
• Bagaimana kalau kita mengalikan pada tabel
yang sama?
• Naming convention mengharuskan relasi yang
menjadi argumen dari operasi perkalian
kartesian mempunyai nama berbeda. Maka
digunakan Operasi Menamakan Kembali
(Rename Operation)
Page 47
Rename operation
• Mengijinkan kita untuk memberi nama ke hasil dari relasi
aljabar pada tabel dan mengijinkan kita untuk memanggil
relasi dengan lebih dari satu nama.
• Contoh :
x (E)
menghasilkan relasi E dengan nam X
• Kalau ekspresi relasi aljabar E mempunyai n atribut, maka
x (A1, A2, …, An) (E)
menghasilkan ekspresi E dengan nama X dan atribut-atributnya
diganti nama menjadi A1, A2, …., An.
Page 48
Rename Operation
• Mengijinkan kita untuk memberi nama ke hasil dari relasi aljabar pada tabel dan mengijinkan kita untuk memanggil relasi dengan lebih dari satu nama.
• Contoh:
x (E)
menghasilkan relasi E dengan nama X
• Kalau ekspresi relasi aljabar E mempunyai n atribut, maka
x (A1, A2, …, An) (E)
menghasilkan ekspresi E dengan nama X dan atribut-atributnya diganti nama menjadi A1, A2, …., An.
Page 49
CONTOH
• Cari rekening tabungan dengan jumlah uang
terbesar di bank.
• Strategi:
1. Pertama komputasikan relasi sementara
yang terdiri dari tabungan dengan jumlah
uang yang bukan terbesar.
2. Ambil selisih antara relasi jumlah_uang
(tabungan) dengan relasi hasil nomor 1
Page 50
Step
• Step 1:
tabungan.jumlah_uang ( tabungan.jumlah_uang < d.jumlah_uang
(tabungan x d (tabungan)))
Ekspresi ini menghasilkan relasi tabungan dimana
jumlah uang yang lebih besar ada di relasi
tabungan (dinamakan d). Hasilnya adalah semua
tabungan dengan jumlah uang selain yang
terbesar.
• Step 2:
jumlah_uang (tabungan) - tabungan.jumlah_uang (
tabungan.jumlah_uang < d.jumlah_uang (tabungan x d
(tabungan)))
Page 51
CONTOH
Cari semua pinjaman diatas $1200
Cari semua nomor pinjaman untuk setiap
pinjaman yang lebih besar dari $1200
jumlah_uang > 1200 (pinjaman)
nomor_pinjaman (jumlah_uang > 1200 (pinjaman))
Page 52
CONTOH
Cari semua nama nasabah yang memiliki pinjaman, tabungan, atau dua-duanya di bank.
Cari nama semua nasabah yang memiliki pinjaman
dan tabungan di bank.
nama_nasabah (peminjam) nama_nasabah (penabung)
nama_nasabah (peminjam) –
(nama_nasabah (peminjam) - nama_nasabah (penabung))
CONTOH
Cari semua nama nasabah yang mempunyai pinjaman di
cabang Perryridge.
Cari semua nama nasabah yang mempunyai pinjaman di cabang
Perryridge tetapi tidak mempunyai tabungan di cabang manapun.
nama_nasabah (kota_cabang = “Perryridge”
(peminjam.nomor_pinjaman = pinjaman.nomor_pinjaman
(peminjam x pinjaman))) – nama_nasabah(penabung)
nama_nasabah (nama_cabang=“Perryridge”
(peminjam.nomor_pinjaman = pinjaman.nomor_pinjaman
(peminjam x pinjaman)))
CONTOH
• Cari semua nama nasabah yang mempunyai pinjaman di cabang Perryridge.
Query 2
nama_nasabah(pinjaman_nomor_pinjaman = peminjam.nomor_pinjaman(
(nama_cabang = “Perryridge”(pinjaman)) x peminjam))
Query 1
nama_nasabah(nama_cabang = “Perryridge” (
peminjam.nomor_pinjaman = pinjaman.nomor_pinjaman(peminjam x
pinjaman)))
Page 55
CONTOH
Cari jumlah uang terbesar di tabungan
• Namakan tabel tabungan sebagai d
jumlah_uang(tabungan) - tabungan.jumlah_uang
(tabungan.jumlah_uang < d.jumlah_uang (tabungan x d
(tabungan)))
Page 56
LATIHAN
• Cari semua nama nasabah yang
tinggal di jalan dan kota yang sama
dengan Smith.
Page 57
Operasi Tambahan
Kita mendefinisikan operasi lain yang tidak ada
nilai tambahan bagi relasi aljabar, tetapi yang
menyederhanakan query umum.
• Set intersection (operasi interseksi)
• Natural join (penggabungan alamiah)
• Division (pembagian)
• Assignment (=)
Page 58
Operasi Natural-Join
• Adalah operasi biner yang mengijinkan kita untuk
menggabungkan seleksi tertentu dan perkalian
Kartesian dalam satu operasi.
• Dilambangkan dengan simbol “join”
• Langkah-langkah:
1. Bentuk perkalian kartesian dari kedua tabel.
2. Lakukan seleksi dengan memaksa persamaan
antara atribut-atribut yang yang tampak di kedua
skema relasi.
3. Hapus atribut yang duplikat.
Page 59
CONTOH
Cari semua nama nasabah yang mempunyai
pinjaman di cabang Perryridge.
nama_nasabah(nama_cabang = “Perryridge” (
peminjam.nomor_pinjaman = pinjaman.nomor_pinjaman (peminjam x
pinjaman)))
nama_nasabah(nama_cabang = “Perryridge” (peminjam
pinjaman))
Dengan menggunakan NATURAL JOIN:
Page 60
CONTOH
Cari semua nama nasabah yang memiliki pinjaman di bank,
dan cari jumlah uang pinjaman
nama_nasabah, nomor_pinjaman, jumlah_uang (peminjam pinjaman)
Karena skema untuk peminjam dan pinjaman keduanya
memiliki atribut nomor_pinjaman, operasi natural-join
menampilkan hanya pasangan tupel yang mempunyai nilai
yang sama untuk nomor_pinjaman.
Operasi ini menggabungkan setiap pasangan tupel tersebut ke
dalam satu tupel di dalam gabungan dari dua skema (yaitu,
nama_nasabah, nama_cabang, nomor_pinjaman,
jumlah_uang).
Page 61
CONTOH
• Cari semua nama cabang dengan nasabah yang
memiliki tabungan di bank dan tinggal di Harrison
Catatan: natural join adalah associative, artinya
(nasabah tabungan ) penabung =
(nasabah tabungan penabung)
nama_cabang (kota_nasabah = “Harrison” (nasabah tabungan penabung))
Page 62
CONTOH
• Cari semua nama nasabah yang mempunyai pinjaman
dan tabungan di bank:
nama_nasabah (peminjam penabung)
• Hasilnya sama dengan kita menggunakan:
nama_nasabah (peminjam) nama_nasabah (penabung)
• Contoh ini mengilustrasikan bahwa memungkinkan
untuk menulis beberapa ekspresi relasi aljabar yang
bentuknya berbeda tetapi hasilnya sama.
Page 63
CONTOH
• Cari semua nasabah yang mempunyai tabungan di
cabang “Downtown” dan Uptown.”
Query 1
Nama_nasabah(Nama_cabang=“Downtown”(penabung
tabungan))
Nama_nasabah(Nama_cabang=“Uptown”(penabung
tabungan))
Page 64
DEFINISI FORMAL
• E1 dan E2 adalah ekspresi relasi aljabar; berikut ini
adalah semua ekspresi relasi aljabar:
o E1 E2
o E1 - E2
o E1 x E2
o p (E1), P adalah predikat dari atribut E1
o s(E1), S adalah daftar yang terdiri dari beberapa
atribut di E1
o x (E1), x adalah nama baru untuk hasil dari E1
Page 65
LATIHAN
Employee (person_name, street, city)
Works (person_name, company_name,
salary)
Company (company_name, city)
Manages (person_name, manager_name)
Page 66
LATIHAN
1. Find the names of all employees who work for
First Bank Corporation.
2. Find the names and cities of residence of all
employees who work for First Bank Corporation.
3. Find the names, street addres, and cities of
residence of all employees who work for First
Bank Corporation and earn more than $10,000 per
annum.
Page 67
LATIHAN
4. Find the names of all employees in this database
who live in the same city as the company for
which they work.
5. Find the names of all employees who live in the
same city and on the same street as do their
managers.
6. Find the names of all employees in this database
who do not work for First Bank Corporation.
7. Find the names of all employees who earn more
than every employee of Small Bank Corporation.