Bahasa query formal adalah bahasa yang digunakan dalam basis data, misalnya SQL yang dikonversi menjadi bahasa relasional formal sehingga bisa diterapkan untuk mendapatkan informasi dengan efisien. Ada dua jenis bahasa query formal, yaitu aljabar relasional dan kalkulus aljabar.
Sekarang kita akan membahas mendalam tentang aljabar relasional, berikut penjelasannya.
Relasi Aljabar
Merupakan sekumpulan operasi aljabar yang terdiri dari himpunan operator level tinggi yang dioperasikan pada sebuah relasi, dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru yang digunakan untuk melakukan proses manipulasi data dalam rangka untuk mendapatkan informasi yang diperlukan dari database. Lebih bersifat operasional, sangat berguna untuk merepresentasikan eksekusi perencanaan.
Secara umum dibagi menjadi 2:
- Operasi Unary terdiri dari selection, projection. Disebut operasi unary, karena dapat digunakan hanya pada satu relasi.
- Operasi Binary terdiri dari union, intersection, set difference, cartesian product, join dan division. Disebut operasi binary, karena memerlukan sepasang relasi.
Operator Dasar
Operasi Seleksi (select)
Untuk memilih baris tertentu dari sebuah himpunan baris data (record) yang memenuhi kondisi dan membuang baris yang lain.
Simbol ““
Notasi : σp(r)
p disebut selection predicate (yang menentukan pemilihan)
p merupakan formula dari kalkulus perbandingan (proportional calculus) yang berisi terms yang dihubungkan oleh : ^ (and), v (or), ~ (not)
setiap term salah satu dari :
<atribut> op <atribut> or <konstanta>
atau
<atribut> op <atribut>
dengan op salah satu dari : =, ≠, >, ≥, <, ≤
Contoh : dilakukan operasi σjenis=“action”(film) pada relas film sebagai berikut :
kode_film
|
jenis
|
judul
|
jml_keping
|
jml_film
|
A01
|
action
|
Spiderman
|
2
|
3
|
A02
|
action
|
Spiderman 2
|
2
|
5
|
D01
|
drama
|
Love Story
|
2
|
3
|
H01
|
horor
|
Evil Death
|
2
|
2
|
Hasilnya : suatu relasi dengan tuple-tuple yang memiliki jenis sama dengan action.
kode_film
|
jenis
|
judul
|
jml_keping
|
jml_film
|
A01
|
action
|
Spiderman
|
2
|
3
|
A02
|
action
|
Spiderman 2
|
2
|
5
|
Operasi Projeksi (Project)
Digunakan untuk menentukan field-field data dari suatu tabel yang akan ditampilkan
Simbol “Π”
Notasi: <daftar attribut> (<nama relasi>)
Jika <daftar attribut> tidak menyertakan primary key, maka dimungkinkan akan terjadi duplikasi. Duplikasi ini akan dihilangkan sehingga hanya sekali yang muncul.
Contoh : dilakukan operasi pkode_film, jenis, judul(film) pada relasi film sebagai berikut :
kode_film
|
jenis
|
judul
|
jml_keping
|
jml_film
|
A01
|
action
|
Spiderman
|
2
|
3
|
A02
|
action
|
Spiderman 2
|
2
|
5
|
D01
|
drama
|
Love Story
|
2
|
3
|
H01
|
horor
|
Evil Death
|
2
|
2
|
Hasilnya:
kode_film
|
jenis
|
judul
|
A01
|
action
|
Spiderman
|
A02
|
action
|
Spiderman 2
|
D01
|
drama
|
Love Story
|
H01
|
horor
|
Evil Death
|
Operasi Cartesian Product
Simbol “X”
Bentuk : E1 X E2
Digunakan untuk menggabungkan data dari dua buah tabel atau hasil query. Dengan operasi ini maka berakibat record pada table pertama akan dipasangkan dengan semua record pada tabel ke dua. Jika E1 memiliki n1 tuple, dan E2 memiliki n2 tuple maka E1 X E2 mempunyai (n1*n2) tuple.
Contoh :
Dosen_Wali
Nip
|
Nama_Dos
|
D01
|
James
|
D02
|
Schole
|
Mahasiswa
Nim
|
Nama
|
IPK
|
Nip
|
53666
|
Jones
|
3.0
|
D01
|
53668
|
Smith
|
2.7
|
D02
|
53650
|
Smith
|
3.8
|
D02
|
Mahasiswa X Dosen_Wali
Nip
|
Nama_Dos
|
Nim
|
Nama
|
IPK
|
Nip
|
D01
|
James
|
53666
|
Jones
|
3.0
|
D01
|
D02
|
Schole
|
53668
|
Smith
|
2.7
|
D02
|
53650
|
Smith
|
3.8
|
D02
|
Outer Join
Operasi Outer-Join
Terdiri dari tiga jenis: Left Outer Join, Right Outer Join, Full Outer Join
Left Outer Join :
Simbol “ ”
Bentuk : E1 E2
Menampilkan relasi dengan menjadikan tabel pertama sebagai acuan
Contoh Left Outer Join:
Matakuliah
Kode
|
Nama_kul
|
SKS
|
NIP
|
IF001
|
Struktur Data
|
2
|
0602
|
IF002
|
Pemrograman I
|
2
|
0603
|
IF003
|
Basis Data
|
4
|
0602
|
IF004
|
Sistem Pakar
|
2
|
0605
|
Dosen
Nama_kul
|
Nama_dos
|
Struktur Data
|
Ani, S.Kom
|
Pemrograman I
|
Suparman, ST
|
Basis Data
|
Ani, S.Kom
|
Sistem Pakar
|
Null
|
∏nama_kul, nama_dos (Matakuliah Dosen)
NIP
|
Nama_dos
|
0601
|
Agung, ST
|
0602
|
Ani, S.Kom
|
0603
|
Suparman, ST
|
0604
|
Suratman, M.Kom
|
Right Outer Join
Simbol: “ ”
Bentuk: E1 E2
Kebalikan dari Left Outer Join yakni menampilkanrelasi dengan mengacu pada tabel kedua.
Contoh : dengan mengacu pada tabel mahasiswadan dosen pada contoh sebelumnya.
∏ nama_dos, nama_kul (Matakuliah Dosen)
Nama_dos
|
Nama_kul
|
Agung, ST
|
Null
|
Ani, S.Kom
|
Struktur Data
|
Ani, S.Kom
|
Basis Data
|
Suparman, ST
|
Pemrograman I
|
Suratman, M.Kom
|
Null
|
Full Outer Join
Simbol : “ “
Bentuk : E1 E2
Gabungan dari operasi Left Outer Join, dan Right Outer Join yang akan menghasilkan semua baris data di kedua tabel
Contoh : dengan mengacu pada tabel mahasiswa dan dosen pada contoh sebelumnya.
∏ nama_kul, nama_dos (Matakuliah Dosen)
Nama_kul
|
Nama_dos
|
Struktur Data
|
Ani, S.Kom
|
Pemrograman I
|
Suparman, ST
|
Basis Data
|
Ani, S.Kom
|
Sistem Pakar
|
Null
|
Null
|
Agung, ST
|
Null
|
Suratman, M.Kom
|
Operasi Natural-Join
Simbol “|x|”
Bentuk: E1 |x| E2
Merupakan equijoin dimana pasangan atributyang akan di joinkan memiliki nama yang sama. Jika tidak maka akan menjadi cartesian.
Contoh:
Matakuliah
Kode
|
Nama_kul
|
SKS
|
NIP
|
IF001
|
Struktur Data
|
2
|
0602
|
IF002
|
Pemrograman I
|
2
|
0603
|
IF003
|
Basis Data
|
4
|
0602
|
IF004
|
Sistem Pakar
|
2
|
0606
|
Dosen
Nama_kul
|
Nama
|
Struktur Data
|
Ani, S.Kom
|
Pemrograman I
|
Suparman, ST
|
Basis Data
|
Ani, S.Kom
|
∏ Matakuliah.nama_kul, Dosen.nama ((Matakuliah) |x| (Dosen))
NIP
|
NAMA
|
0601
|
Agung, ST
|
0602
|
Ani, S.Kom
|
0603
|
Suparman, ST
|
0604
|
Suratman, M.Kom
|
Operasi Divisi
Simbol : “÷”
Bentuk: E1 ÷ E2
Operasi division banyak digunakan dalam query yang mencangkup frase “setiap” atau “untuk semua”, operasi ini juga merupakan pembagian atas tuple-tuple dari dua relasi.
Contoh:
Matakuliah
Kode_Kul
|
Nama_kul
|
SKS
|
IF001
|
Struktur Data
|
2
|
IF002
|
Pemrograman I
|
2
|
IF003
|
Basis Data
|
4
|
IF004
|
Sistem Pakar
|
2
|
Mahasiswa
NIM
|
Nama_mhs
|
3304
|
Ahmad
|
3305
|
Salim
|
3306
|
Ranto
|
3307
|
Gima
|
Nilai
Kode_kul
|
NIM
|
Nilai
|
IF001
|
3304
|
A
|
IF001
|
3305
|
B
|
IF002
|
3304
|
A
|
IF003
|
3307
|
D
|
Dari tabel matakuliah, mahasiswa, dan nilai tersebut jika diberikan ekspresi aljabar relasi sbb: ∏nama_mhs, kode_kul ((Mahasiswa) |x|(Nilai)) ÷ ∏ kode_kul (σ sks=2 (Matakuliah) )
Maka hasilnya:
Nama_mhs
|
Ahmad
|
Salim
|
Operator Assignment
Simbol “ ”
Bentuk : Temp1 E1
Berfungsi sama seperti assignment dalam bahasapemrograman yakni menuangkan hasil query ke dalam sebuah variabel relasi temporer.
Contoh : Dari aljabar relasi pada operator sebelumnya (division), dengan operator assignment kita dapat ubah ke dalam bentuk sbb:
∏nama_mhs, kode_kul ((Mahasiswa) |x|(Nilai)) ÷ ∏ kode_kul (σ sks=2 (Matakuliah) )
Menjadi:
Temp1 ∏nama_mhs, kode_kul ((Mahasiswa) |x|(Nilai))
Temp2 ∏ kode_kul (σ sks=2 (Matakuliah) )
Hasil Temp1 ÷ Temp2
Operasi Union
Simbol “U”
Bentuk E1 U E2
Operasi yang digunakan untuk menggabungkan hasil dari beberapa query yang sejenis (memiliki projeksi yang sama).
Notasi : r s, menghasilkan suatu relasi baru yang elemen barisnya merupakan elemen dari r dan s, tidak ada duplikasi data. Untuk r s harus valid : r, s harus memiliki jumlah atribut yang sama.
Relasi r
A
|
B
|
C
|
aa
|
1
|
7
|
bb
|
5
|
7
|
bb
|
12
|
7
|
dd
|
23
|
10
|
Relasi s
A
|
B
|
C
|
aa
|
5
|
7
|
cc
|
4
|
4
|
dd
|
10
|
7
|
aa
|
6
|
10
|
A(r) A(s)
A
|
aa
|
bb
|
dd
|
cc
|
Operasi Set-Intersection
Simbol : “”
Bentuk: E1 E2
Digunakan untuk menyatakan/mendapatkan irisan (kesamaan anggota) dari dua buah kelompok data dari suatu tabel atau hasil query.
Notasi : r s, menghasilkan suatu relasi baru dengan elemen barisnya merupakan elemen yang terdapat pada relasi r dan elemen tersebut juga terdapat pada relasi s, tidak ada duplikasi data. r dan s harus memiliki jumlah atribut yang sama.
Relasi r
A
|
B
|
a
|
1
|
a
|
2
|
b
|
1
|
Relasi s
A
|
B
|
a
|
2
|
b
|
3
|
r s
A
|
B
|
a
|
2
|
Operasi Set-Difference
Simbol “–”
Bentuk :E1–E2
Merupakan kebalikan dari operasi union, yakni pengurangan data di tabel pertama oleh data di tabel ke dua.
Notasi r – s, hasilnya relasi yang elemen barisnya terdapat pada r tetapi tidak terdapat di s. r dan s harus memiliki jumlah atribut yang sama.
Relasi r
A
|
B
|
C
|
aa
|
1
|
7
|
bb
|
5
|
7
|
bb
|
12
|
7
|
dd
|
23
|
10
|
Relasi s
A
|
B
|
C
|
aa
|
1
|
7
|
cc
|
5
|
7
|
dd
|
12
|
7
|
aa
|
23
|
10
|
A(r) - A(s)
A
|
bb
|
Modifikasi Data
- Operasi Penambahan Baris Data
Dalam aljabar relasional, penambahan baris data barudieksrepsikan sebagai :
R R U E
Tambahkan pada tabel matakuliah dengan data berikut : ‘IF005’,’Organisasi Komputer’,2,’0604’ – Maka aljabar relasionalnya sbb:
Kuliah Kuliah U {(‘IF005’,’Organisasi Komputer’,2,’0604’)}
- Operasi Pengubahan Data
Untuk pengubahan data, dapat digunakan operasiprojeksi tergeneralisasi sbb:
r ∏f1, f2,…, fn (r)
Contoh: kosongkan semua kode_dos pada tabelmatakuliah
matakuliah ∏kode_kul, nama_kul, sks, nip null (matakuliah)
- Operasi Penghapusan Data
Dalam aljabar relasional operasi penghapusan data diekspresikan sbb:
R R ─ E
Contoh: hapus semua matakuliah 2 sks
matakuliah Matakuliah ─ (σ sks=2 (matakuliah))
Tidak ada komentar:
Posting Komentar