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
Jawaban Latihan 1 1. SKS=“2” (MataKuliah) Hasil :
2. Jml_Jur>3 Jml_Dos>333(Fakultas) Hasil:
3. Golongan=“IV” (Dosen) Hasil:
Page 15
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 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 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 18
Jawaban Latihan 2 No. 1 1. Hasil dari : NRP, Nama_Mhs(fakultas = “Teknik”(Mahasiswa)) NRP
Nama_Mhs
0325116
Robert
0324027
Tori
0325100
Wina
Page 19
Jawaban Latihan 2 No. 2 2. Pilih semua nama mata kuliah dimana sks-nya sama dengan 3. • Nama_MK(sks = “3”(MataKuliah)) Nama_MK Basis Data Fisika Jaringan Komputer Bahasa Inggris
Page 20
Jawaban Latihan 2 No. 3 3. Pilih kode mata kuliah yang dipilih oleh mahasiswa dengan NRP 0325116 Kode_MK(NRP = “0325116”(Registrasi)) Kode_MK IF215 IF131
Page 21
Jawaban Latihan 2 No. 4 4. Apa hasil dari golongan(NIK > 250000 ^ NIK < 259999 (Dosen)) ?
Golongan IV IV IV
Page 22
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 23
• Tabel-tabel berikut digunakan sebagai acuan operasi-operasi yang akan dibahas selanjutnya……………….
Page 24
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 25
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 28
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 29
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 31
Operasi Union • Tujuan : menggabungkan nilai tabel-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 32
Operasi Union • Notasi :
• Contoh : sebutkan semua nama nasabah yang mempunyai tabungan atau pinjaman nama_nasabah (penabung)
nama_nasabah (peminjam)
Page 33
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 34
Operasi Union • Apakah kita bisa menggabungkan relasi PINJAMAN dengan PENABUNG? – 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 35
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)
Page 36
Operasi Selisih • Tujuan
mengurangkan baris pada tabel pertama dengan baris pada tabel kedua • Hasil operasi ini adalah: 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 37
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
Page 38
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 39
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 40
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 41
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 42
Operasi Perkalian Kartesian • Operasi perkalian Kartesian antara dua tabel akan menghasilkan tabel baru di mana kolom atributnya berisikan semua atributnya berasal dari kedua tabel asal, dan berisi baris yang merupakan kombinasi dari baris-baris yang terdapat dalam tabel asal.
Page 43
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 44
Contoh Perkalian Kartesian TABEL A:
TABEL B:
C1 C2 C3
C4 C5
A
C
E
E
G
B
D
F
F
H
Page 45
Tabel yang dihasilkan
Page 46
Operasi Perkalian Kartesian • Contoh : Peminjam (nama_nasabah, nomor_pinjaman) Pinjaman (nomor_pinjaman, nama_cabang, jumlah_uang)
• Skema tabel yang dihasilkan dari: r = peminjam x pinjaman adalah (peminjam.nama_nasabah, peminjam.nomor-pinjaman, 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_pinjaman, pinjaman.nomor_pinjaman, nama_cabang, jumlah_uang)
Page 47
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
Note: Tuliskan semua operasi yang terjadi (seleksi, kolom, baris, dan Page 48 perkalian kartesian)
Hasil
Page 49
Penjelasan Contoh (1) Operasi Perkalian Kartesian: (registrasi x mata kuliah) Menghasilkan:
Page 50
Penjelasan Contoh (tahap 2)
Page 51
Penjelasan Contoh (tahap 3)
Page 52
Contoh • Cari semua nama nasabah yang mempunyai pinjaman di cabang Perryridge. • Untuk mendapatkan data tersebut, kita memerlukan tabel peminjam dan pinjaman.
• Peminjam (nama_nasabah, nomor_pinjaman) Pinjaman (nomor_pinjaman, nama_cabang, jumlah_uang) • Apakah ini benar?
nama_cabang = “Perryridge” (peminjam pinjaman)
Page 53
Hasil Contoh • nama_cabang = “Perryridge” (peminjam pinjaman) • Hasil dari operasi tersebut adalah relasi dengan cabang “Perryridge”. • Akan tetapi, kolom nama_nasabah akan berisikan nasabah-nasabah yang tidak mempunyai pinjaman di cabang “Perryridge” • Hal ini dikarenakan perkalian kartesian menghasilkan semua pasangan : satu dari tabel peminjam dan satu dari tabel pinjaman.
Page 54
Hasil contoh continue…..
Page 55
Hasil Contoh • Karena operasi perkalian kartesian menghubungkan setiap tupel dari pinjaman dengan setiap tupel dari peminjam. • Maka, kita tahu bahwa jika seorang nasabah memiliki pinjaman di cabang “Perryridge”, maka ada beberapa tupel di peminjam x pinjamanan yang memiliki nama orang tersebut dan peminjam. nomor pinjaman = pinjaman.nomor_pinjaman
• Maka kita tuliskan:
Page 56
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 57
Hasil contoh continue……….
Page 58
Hasil contoh continue………..
Page 59
Hasil contoh continue………..
Page 60
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. • Oleh karena itu, apabila kita ingin mengalikan suatu tabel dengan dirinya sendiri, maka digunakan Operasi Menamakan Kembali (Rename Operation)
Page 61
Rename operation • Operasi ini memungkinkan kita untuk memberi nama ke hasil dari relasi aljabar pada tabel dan memungkinkan kita untuk memanggil relasi yang sama dengan nama yang berbeda. • 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 62
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 63
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 64
Penjelasan Step 1 tabungan.jumlah_uang < d.jumlah_uang (tabungan x d (tabungan))
Page 65
tabungan.jumlah_uang (
tabungan.jumlah_uang < d.jumlah_uang
(tabungan x d (tabungan)))
Page 66
Penjelasan Step 2 jumlah_uang (tabungan) - tabungan.jumlah_uang ( tabungan.jumlah_uang < d.jumlah_uang (tabungan x d (tabungan)))
Page 67
Hasil akhir
Page 68
Latihan – bonus point • Cari semua nama nasabah yang tinggal di jalan dan kota yang sama dengan Smith
Page 69
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 70
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 71
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 74
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 75
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 76
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 77
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 78
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 79
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 80
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 81
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 82
LATIHAN Employee (person_name, street, city) Works (person_name, company_name, salary)
Company (company_name, city) Manages (person_name, manager_name)
Page 83
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 84
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 85