PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS SINGAPERBANGSA KARAWANG
Bahasa Query Formal Procedural
Pertemuan 8
Bahasa Query Formal Prosedural
Bahasa Query adalah bahasa yang dikhususkan untuk
mengajukan pertanyaan atau Query, yang melibatkan data
dalam sebuah database.
Input dan output suatu query adalah relasi.
Query dievaluasi dengan menggunakan contoh input relasi
dan menghasilkan contoh output relasi.
Bahasa Query Relasional
(Relational Query Language)
Bahasa Query : memungkinkan manipulasi dan pemanggilan
data dari suatu basis data.
Model Relasional mendukung kesederhanaan, dengan
kemampuannya untuk melakukan bahasa Query.
Dasar formal yang kuat berdasarkan logika
Bisa dioptimasi ·
Bahasa Query tidak sama dengan bahasa pemrograman
Bahasa Query tidak dimaksudkan untuk digunakan pada proses kalkulasi
yang kompleks.
Bahasa Query bisa dilakukan dengan mudah, mempunyai akses yang
efisien terhadap himpunan data yang besar.
Relasi Formal dari Bahasa Query
Terdapat dua macam bentuk bahasa Query :
Aljabar Relasional : lebih bersifat operasional, sangat
berguna untuk merepresentasikan eksekusi perencanaan.
Kalkulus Relasional : Memungkinkan user menggambarkan apa
yang mereka inginkan, tidak pada bagaimana cara melakukan
komputasi terhadap apa yang mereka inginkan tersebut. (tidak
bersifat operasional, tapi bersifat deklaratif)
Aljabar Relational
Yaitu sekumpulan operasi yang digunakan untuk melakukan
proses manipulasi data dalam rangka untuk mendapatkan
informasi yang diperlukan dari database
Aljabar Relational
Secara umum dibagi menjadi 2:
operasi himpunan (UNION, INTERSECTION,
DIFFERENCE, dan CARTESIAN PRODUCT)
operasi yang dikembangkan secara khusus untuk
database relational. (SELECT, PROJECT dan JOIN)
Istilah Relasi, dalam bahasan ini dipergunakan untuk penamaan
tabel beserta datanya baik yang murni maupun yang sudah
dilakukan modifikasi dengan operasi-operasi aljabar relasional.
Berikut ini adalah contoh relasi Sailors dan Reserves.
Selection ( ) Lower Case Omega
Operasi selection menyeleksi tupel-tupel pada sebuah relation
yang memenuhi predicate/syarat yang sudah ditentukan
Contoh :
1. Mencari tuple-tuple dari MAHASISWA yang memiliki jenis kelamin laki-laki,
Ekspresi aljabar relational :
σ J_KEL=“LAKI-LAKI” (MAHASISWA)
2. Tampilkan data mata kuliah yang memiliki kode 360 atau yang
memilki sks 4
σ KD_MK=“306” V SKS=4 (MATAKULIAH)
jika diberikan query :
Maka table ralsi yang dihasilkan :
Projection ( )
Operator projection beroperasi pada sebuah relation, yaitu
membentuk relation baru dengan mengcopy atribute-atribute
dan domain-domain dari relation tersebut berdasarkan
argumen-argumen pada operator tersebut.
Contoh :
Tampilkan nama beserta gaji dari dosen
nama_dos,gaji (DOSEN)
Menghapus atribut yang tidak dikehendaki dari relasi
Jika diberikan query :
Maka table relasi yang dihasilkan dari query tersebut
adalah :
Jika pada relasi S2diberikan query :
Maka table relasi yang dihasilkan :
Dari hasil tersebut, dpaat dilihat bahwa operasi projection
dapat mengeleminasi duplikat (filed yang bernilai sama)
jika diberikan query berikut untuk relasi S2 :
Maka table relasi yang dihasilkan :
Operasi-operasi Teori Set
Operasi-operasi teori set, yaitu : union (), intersection
( ), difference (-).
Semua operasi ini membutuhkan dua relasi, syarat yang
harus dipenuhi adalah :
Mempunyai jumlah field yang sama
Field yang berkorespondensi memiliki tipe yang sama.
A. OPERATOR HIMPUNAN
1. Union atau gabungan ( )
Union dari relasi A dan B dinyatakan sebagai A B. A B
Menghasilkan suatu relasi yang berisi instan – instan yang
terjadi dalam suatu relasi A atau suatu relasi B. A dan B
haruslah Union – Compatible dan skema hasil identik dengan
skema A.
a b
2. Intersection atau irisan ( )
Intersection dari relasi A dan B dinyatakan sebagai A B.
a b
3. Set-Difference
Difference dari relasi A dan B dinyatakan dengan A - B
a b
4. Cross – Product ()
Membentuk suatu relasi dari dua relasi ya ng terdiri dari kombinasi
tupel -tupel yang mungkin
Menggabungkan data dari dua tabel atau hasil query. Umumnya
operasi ini tidak berdiri sendiri, tetapi digunakan bersama dengan
operasi lainnya seperti operasi seleksi dan projeksi.
Operasi perkalian kartesian antara dua tabel akan menghasilkan
tabel baru dengan kolom atribut, semua kolom atribut dari kedua
tabel asal, dan berisi baris yang merupakan kombinasi dari baris
baris yang terdapat dalam tabel asal
Operasi Cross – Product disebut juga Cartesian – Product.
Contoh Operasi Cartesian-Product
Join
Digunakan untuk mengkombinasikan baris-baris yang berhubungan
dari dua relasi atau lebih menjadi baris-baris tunggal ( ).
Condition Join / Theta Join
Equijoin
Natural Join
Condition Join
Condition Join identik dengan Selection Condition. Bentuk
operasinya yakni :
R c S = c (R S)
Jadi, Condition Join ditentukan untuk menjadi sebuah Cross –
Product yang diikuti dengan satu selection.
Lebih sedikit tupel yang dihasilkan, dibandingkan dengan
menggunakan operator cross-product, karena komputasinya lebih
efisien
Equijoin
Satu kasus khusus yang biasa terjadi pada operasi join R S adalah
pada saat condition join hanya terdiri dari equality dari bentuk
R.name1 = S.name1, yakni equality antara 2 field dalam R dan S.
Operasi join seperti ini disebut Equijoin.
Kondisi join yang operator pembandingannya berupa =, disebut
dengan Equijoin
Jika diberikan perintah sbb :
Maka tabel relasi yang dihasilkan :
Natural Join
Kasus selanjutnya dari operasi join R S adalah satu equijoin
dimana equality ditentukan pada semua field yang mempunyai
nama sama dalam R dan S. Dalam kasus ini, kita dapat
mengabaikan condition join, defaultnya adalah condition join
yang merupakan kumpulan equality pada semua field biasa.
Kasus seperti ini disebut Natural Join, dan properti bagusnya
adalah hasilnya dijamin tidak memiliki 2 field dengan nama
sama.
Equi-join pada semua fields.
Division
Tidak mendukung operator primitif, tapi sangat berguna untuk
mengekspresikan query seperti ini :
Find sailors who have reserved all boats. ·
Misal A memiliki 2 fields yaitu x dan y; sedangkan B hanya memiliki 1
field yaitu y , A/B berisi semua tupel x (sailors) dimana untuk setiap
tupel y (boat) dalam B, terdapat tupel xy dalam A.
Pada umumnya, x dan y dapat menjadi anggota fields; y adalah
daftar fields dalam B, dan x U y adalah daftar fields dari A.
Contoh Division
A, B (T1) B ( B = b1 (T1))
A B B
a1 b1 b1
a2 b1
a2 b2
a3 b2
B (T1)
B
b1
b2
Fungsi Aggregate( )
SUM : menjumlah nilai dari suatu atribut
AVERAGE : mencari rata-rata nilai dari suatu atribut
MAXIMUM : mencari nilai paling besar dari suatu atribut
MINIMUM : mencari nilai paling besar dari suatu atribut
COUNT : menghitung jumlah record
Dapatkan setiap nomer department, jumlah pegawai
dalam department dan gaji rata-rata mereka.
R(DNO,jumlah_peg, gaji_rata2) <= DNO, COUNT SSN,
AVERAGE SALARY (EMPLOYEE)
31
Contoh Query Aljabar
Misalkan :
Customers ( CustomerID, ContactName, Genre, Address, City, Region,
Country, ZIP, Phone )
Products ( ProductID, ProductName, UnitPrice, UnitInStock, UnitOnOrder )
Orders ( OrderID, CustomerID, OrderDate )
Order Detail ( OrderID, ProductID, UnitPrice, Quantity, Discount )
Contoh Query Aljabar (Lanjutan)
Cari nama pelanggan yang pernah memesan barang pada tanggal “xx / xx /
xxxx”.
ContactName (( OrderDate = ‘xx / xx / xxxx’ Orders) Customers)
Atau
(Temp1, OrderDate = ‘xx / xx / xxxx’ Orders)
(Temp2, Temp1 Customers)
ContactName (Temp2)
Cari nama sailor yang mempunyai reserved boar #103
Solusi 1 :
Solusi 2 :
Solusi 3 :
Cari nama Sailor yang mempunyai reserved a red
boat
Informasi tentang color hanya ada dalam relasi Boats;
sehingga diperlukan extra join :
Latihan :
Diketahui skema basis data sbb:
employee (person-name, street, city)
works (person-name, company-name, salary)
company (company-name, city)
manages (person-name, manager-name)
a. Cari nama employee yang bekerja pada First Bank Corporation.
b. Cari nama dan kota tempat tinggal semua employee yang bekerja di
First Bank Corporation.
c. Cari nama, alamat dan kota tempat tinggal semua employee yang
bekerja di First Bank Corporation dan berpenghasilan lebih dari
$10,000.
d. Cari nama semua employee yang tinggal di kota yang sama dengan
perusahaan dimana mereka bekerja.
e. Cari nama semua employee yang tinggal di kota dan jalan yang
sama dengan manager mereka.
f. Cari nama semua employee yang tidak bekerja di First Bank
Corporation.
g. Cari semua nama employee yang penghasilannya lebih dari
employee di Small Bank Corporation.
h. Asumsikan perusahaan berlokasi di beberapa kota. Cari semua
perusahaan yang berlokasi di setiap kota dimana Small Bank
Corporation berada.
Relational Schema
Relational schemas for five relations in a movie database
are depicted below.
movie(movieName, whenMade)
star(starName, age)
studio(studioName, where)
produces(studioName, movieName)
starsIn(starName, movieName)
Exercise
1. When was the movie Titanic made?
2. Who stars in Titanic?
3. Which stars that are over 40 appear in Titanic?
4. Which stars do not appear in Titanic?
5. Which studio produces Titanic?
6. What are the names of stars who star in movies produced
by studios located in Townsville?
7. Which movies star Kate Winslet?
8. Which Titanic stars are under 20?
9. Give me the stars and the studios they work for who starred
in Titanic