BASIS DATA (BS203) RELASI ALJABAR
[email protected] fb: NDoro Edi
Page 1
Outline • B „ ahasa Query • „Pengenalan Relasi Aljabar • „Operasi pada Relasi Aljabar: – – – – – – – –
„ perasi Seleksi Baris O „Operasi Seleksi Kolom „Operasi Union „Operasi Selisih „Operasi Perkalian Kartesian „Operasi Rename „Operasi Interseksi „Operasi Natural Join
• „Latihan Page 2
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 3
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 4
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 5
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 6
Operasi Seleksi • Digunakan untuk memilih isi baris pada tabel yang memenuhi kondisi yang ditentukan. • Lambang : Sigma () untuk operasi seleksi
()
• Contoh : untuk menampilkan nama mahasiswa yang masuk Jurusan Teknik Informatika Jurusan=“Teknik Informatika”(Mahasiswa)
Page 7
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 8
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 9
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 10
Tabel MataKuliah Kode_MK IF215 IF116 IF114 IF241 IF131
Nama_MK Basis Data Fisika Kalkulus Jaringan Komputer Bahasa Inggris
SKS 3 3 4 3 3
NIK 250001 240012 250003 250013 240012
Page 11
Tabel Registrasi Kode_MK IF215 IF215 IF131 IF114 IF116
NRP 0325116 0324027 0325116 0313126 0312050
Page 12
Tabel Dosen NIK 250001 240012 250003 250013 240011
Nama_Dos Suryo Susie Sinta Hasan Amir
Golongan IV IV IV IV III
Page 13
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 14
Seleksi Kolom • Digunakan untuk memilih kolom atribut pada tabel. • Lambang : pi () • Bentuk Umum : ()
• Contoh: untuk menampilkan NIP dan Nama Dosen saja dari tabel Dosen NIP, Nama_Dos (Dosen)
Page 15
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 16
Latihan 2 1. Apa hasil dari :
NRP, Nama_Mhs(
fakultas = “Teknik”(Mahasiswa))
?
2. Pilih semua nama mata kuliah dimana sksnya 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 17
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 18
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)
Page 19
TABEL TABUNGAN Nomor_Rekening A-101
Nama_Cabang Downtown
Jumlah_Uang 500
A-102 A-201 A-215
Perryridge Brighton Mianus
400 900 700
A-217 A-222 A-305
Brighton Redwood Round Hill
750 700 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
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 22
TABEL CABANG Nama_Cabang
Kota_Cabang
Aset
Brigthon Downtown Mianus North Town Perryridge Pownal Redwood Round Hill
Brooklyn Brooklyn Horseneck Rye Horseneck Bennington Palo Alto Horseneck
7100000 9000000 400000 3700000 1700000 300000 2100000 8000000
Page 23
TABEL PINJAMAN Nomor_Pinjaman Nama_Cabang Jumlah_Uang L-11 L-14 L-15
Round Hill Downtown Perryridge
900 1500 1500
L-16 L-17 L-23 L-93
Perryridge Downtown Redwood Mianus
1300 1000 2000 500
TABEL PEMINJAM Nama_Nasabah Nomor_Pinjaman
Adams Curry Hayes Jackson Jones Smith Smith Williams
L-16 L-93 L-15 L-14 L-17 L-11 L-23 L-17
Page 25
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 26
Operasi Union • Notasi :
• Contoh : sebutkan semua nama nasabah yang mempunyai tabungan atau pinjaman nama_nasabah (penabung)
nama_nasabah (peminjam)
Page 27
nama_nasabah (penabung) Nama_Nasa bah
Nomor_Reke ning
Hayes
A-102
Johnson
A-101
Johnson
A-201
Jones
A-217
Lindsay
A-222
Smith Turner
A-215 A-305
nama_nasabah (peminjam)
Nama_Nasa bah
Nomor_Pinja man
Nama_Nasabah
Adams
L-16
Hayes
Curry
L-93
Johnson
Hayes
L-15
Jones
Jackson
L-14
Lindsay
Jones
L-17
Smith
L-11
Smith
L-23
Williams
L-17
Smith Turner Adams
Curry Jackson Williams
Page 28
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 29
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 30
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 31
Operasi Selisih • Notasi:
– • 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 32
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 33
nama_nasabah (penabung) - nama_nasabah (peminjam)
Nama_Nasabah
Nama_Nasabah
Hayes Johnson
Adams Curry Hayes Jackson Jones Smith Smith Williams
Jones Lindsay Smith Turner
Page 34
Operasi Interseksi • Operasi interseksi digunakan untuk menseleksi baris-baris yang muncul pada kedua tabel asal. • Notasi :
• Kedua tabel harus compatibel dan mempunyai jumlah atribut yang sama
Page 35
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 36
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 37
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 : x
Page 38
Contoh Perkalian Kartesian TABEL A:
TABEL B:
C1 C2 C3
C4 C5
A
C
E
E
G
B
D
F
F
H
Page 39
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 40
Contoh • Tampilkan NRP & Nama Mata Kuliah yang diambil! TABEL Registrasi:
NRP Kode_MK
TABEL MataKuliah:
Kode_MK Nama_MK
01
A
A
Kalkulus
02
B
B
Algoritma
C
Agama
D
Etika
Page 41
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 42
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 43
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 44
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 45
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 46
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 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 nama X • Kalau ekspresi relasi aljabar E mempunyai n atribut, maka
x (A1, A2, …, An) (E) menghasilkan ekspresi E dengan nama X dan atributatributnya diganti nama menjadi A1, A2, …., An.
Page 48
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 49
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 50
CONTOH Cari semua pinjaman diatas $1200 jumlah_uang > 1200 (pinjaman)
Cari semua nomor pinjaman untuk setiap pinjaman yang lebih besar dari $1200 nomor_pinjaman (jumlah_uang > 1200 (pinjaman))
Page 51
CONTOH Cari semua nama nasabah yang memiliki pinjaman, tabungan, atau dua-duanya di bank. nama_nasabah (peminjam) nama_nasabah (penabung)
Cari nama semua nasabah yang memiliki pinjaman dan tabungan di bank. nama_nasabah (peminjam) – (nama_nasabah (peminjam) - nama_nasabah (penabung))
Page 52
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)))
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)
CONTOH • Cari semua nama nasabah yang mempunyai pinjaman di cabang Perryridge. Query 1 nama_nasabah(nama_cabang = “Perryridge” ( peminjam.nomor_pinjaman = pinjaman.nomor_pinjaman(peminjam x pinjaman))) Query 2 nama_nasabah(pinjaman_nomor_pinjaman = peminjam.nomor_pinjaman( (nama_cabang = “Perryridge”(pinjaman)) x peminjam))
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 55
LATIHAN • Cari semua nama nasabah yang tinggal di jalan dan kota yang sama dengan Smith.
Page 56
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 57
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 58
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))) Dengan menggunakan NATURAL JOIN: nama_nasabah(nama_cabang = “Perryridge” (peminjam pinjaman))
Page 59
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 60
CONTOH • Cari semua nama cabang dengan nasabah yang memiliki tabungan di bank dan tinggal di Harrison nama_cabang (kota_nasabah = “Harrison” (nasabah tabungan penabung))
Catatan: natural join adalah associative, artinya (nasabah
tabungan )
(nasabah
tabungan
penabung =
penabung)
Page 61
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 62
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 63
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 64
LATIHAN Employee (person_name, street, city) Works (person_name, company_name, salary)
Company (company_name, city) Manages (person_name, manager_name)
Page 65
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 66
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.
Page 67