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
Page 3
Bahasa Query
• Definisi:
Bahasa yang dipakai oleh pengguna untuk
mengambil / meminta
informasi/data dari
basis data (database)
• 2 Macam bahasa query:
– 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
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
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
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
Page 16
Komposisi dari beberapa operasi
relasi
• Tampilkan nama fakultas yang jumlah
jurusannya lebih dari tiga
NamaFakultas ( jml_jur>3 (Fakultas))
• Ingat:
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
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)
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
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-305Page 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
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-17Page 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
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.
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
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
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) –
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 :
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
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?
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_uangPage 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
Page 51
CONTOH
Cari semua pinjaman diatas $1200
Cari semua nomor pinjaman untuk setiap
pinjaman yang lebih besar dari $1200
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) –
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)
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.
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))
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,
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
Page 65
LATIHAN
Employee (person_name, street, city)
Works (person_name, company_name,
salary)
Company (company_name, city)
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