ALJABAR RELASIONAL DAN KALKULUS RELASIONAL
Bahasa query formal basis data
realtional adalah bahasa untuk meminta informasi dari basis data. Contoh dari
bahasa query relasional adalah SQL (Sructured Query Language) yang berbeda
dengan dengan emrogaman konvendional. SQL menspesifikan properti-properti
informasi yang hendak diambil tapi tidak mencantumkan rincian algoritma
pengambilan. SQL adalah deklaratif, yaitu pada query dideklarasikan informasi
yang merupakan jawaban yang dikehendaki bukan cara komputasi.
Bahasa
query relasional formal merupakan bahasa antara yang digunakan basis data,
yaitu SQL konvensi menjadi bahasa relasional formal sehingga dapat diterapkan
sekumpulan informasi untuk memperoleh query paling efisien. Jenis bahasa query relasional formal yang
utama, yaitu:
1. Aljabar
relasional.
Aljabar
relasional(Relational Algebra) merupakan kumpulan operasi terhadap relasi
dimana setiap operasi menggunakan satu relasi atau lebih untuk menghasilkan
satu relasi yang baru dan termasuk kategori prosedural dan juga menyediakan
seperangkat operator untuk manipulasi data.
Terapat
lima operasi dasar dalam aljabar relasional, yaitu:
a.
Selection (s)
b.
Projection (p)
c.
Cartesia-product (X, juga disebut sebagai cross
product)
d.
Union(È)
e.
Set-difference (-)
f.
Rename (r)
Operasi-operasi
turunan dari operasi-operasi dasar di atas adalah:
a.
Set intersection (Ç)
b.
Theta join (q)
c.
Natural-join ( )
d.
outer-join ( “g tau nih ap simbolnya” )
e.
Division (¸)
Operasi-operasi di atas menghasilkan relasi abru. Bahasa disebut
aljabar relasional karena bahasa berdasarkan sejumlah operator yang beroperasi
pada relasi-relasi(tabel-tabel). Masing-masing operator beroperasi pada satu
relasi atau lebih atau menghasilkan relasi-relasi lain sebagai hasil. Query
sekedar ekspresi yang melibatkan operator-operator itu. Hasil ekspresi adalah
relasi yaitu jawaban terhadap query.
SQL adalah bahasa yang
deklaratif, berarti tidak mengspesifikasikan algoritma yang digunakan untuk pengolahan
query. Pemrogaman menggunakan query SQL, DBMS menggunakan aljabar relasional
sebagai bahasa antara dalam spesifikasi algoritma query.
A.
Operasi Aljabar relasional
Mengimplementasikan ke dalam
operasi aljabar relasional. Berikut merupakan relasi dari database
Penjadwalan_mengajar_dosen pada STIMK ‘Revanda Jaya’. Relasi-relasi tersebut
meliputi:
1)
Dosen
Dosen={nid,nama,d_tempat_lhr ,jkelamin,kodepos,gpokok}
Primary ket relasi Dosen adalah nid, karena tidak ada
dosen dengan nid yang sama.
nid
|
Nama_id
|
Tempat_lht
|
jkelamin
|
kodepos
|
gajipokok
|
95001
|
Bambang
|
Jakarta
|
pria
|
21231
|
2000000
|
95002
|
Sinta
|
Bogor
|
Wanita
|
58461
|
1500000
|
95003
|
Anji
|
Solo
|
pria
|
58461
|
1700000
|
2)
Matakuliah
Matakuliah={kdmk,nama_mk,sks,semester}
Dengan kdmk sebagai primary key.
kdmk
|
nama_mk
|
sks
|
semester
|
Mkb4353
|
PBO
|
2
|
1
|
Mkk3212
|
ALPRO
|
2
|
1
|
Mpk5646
|
SBD
|
2
|
1
|
3)
Jurusan
Jurusan={kode_jur,nama_jur,jenjang,nama_kajur}
Primary key dari relasi Jurusan adalah kode_jur.
kode_jur
|
nama_jur
|
jenjang
|
nama_kajur
|
I8
|
PTIK
|
Strata 1
|
Tri Supriati
|
I6
|
PTIK
|
Strata 1
|
Sukono
|
B9
|
Teknik Elektro
|
Diploma 3
|
Slamet
|
B.
Operational Selection (s)
Merupakan operasi untuk menyeleksi tupel-tupel yang
memenuhi suatu predikat.operator perbandingan yang digunakan
(<,>,<=,>=,=,#). Predikan yang dapat dikombinasikan menjadi majemuk
menggunakan penghubung AND dan OR.
Contoh operasi select
-
Query : tapulkan daftar dosen yang tempat lahir
di Jakarta atau Solo.
-
Aljabar relasional :
stempat_lhr=’jakarta’ᴠtempat_lhr=’solo’
-
Hasilnya adalah
nid
|
Nama_id
|
Tempat_lhr
|
jkelamin
|
kodepos
|
gajipokok
|
95001
|
Bambang
|
Jakarta
|
pria
|
21231
|
2000000
|
95003
|
Anji
|
Solo
|
pria
|
58461
|
1700000
|
C.
Operasi Projection(p)
Adalah operasi untuk memperoleh kolom-kolom tertentu.
Merupakan operasi unary yang mengirim relasi argumen dangan kolom-kolom tertentu.
Karena relasi adalah himpunan, maka baris-baris duplikasi dihilangkan.
Sintaks yang digunakan dalam opersi proyeksi ini
adalah sebagai berikut :
p
colom1, ... ,colomn
Contoh operasi project:
-
Tampilkan nid,nama_d,Tempat_lhr dari relasi
Dosen
-
Aljabar relasional:
pnid,nama_d,alamat,kota
-
Hasil:
nid
|
Nama_d
|
Tempat_lhr
|
95001
|
Bambang
|
Jakarta
|
95002
|
Sinta
|
Bogor
|
95003
|
Anji
|
Solo
|
D.
Operasi Cartesian-product(X)
Adalah operasi untuk menghasilkan tabel hasil
perkalian kartesian Sintaks yang digunakan dalam operasi proyeksi ini adalah
berikut:
R X S={(x,y)|x ϵ R dan y ϵ
S}
Operasi Cartesian-product
memeungkinkan untuk mengkombinasikan informasi relasi,operasi ini adalah
operasi biner. Seperti telah dinyatakan
bahwa relasi adalah subset hasil cartesian-product dan himpunan domain relasi-relasi
tersebut. harus memilih atribut-atribut untuk relasi yang dihasilkan dari
Cartesian-product.
Contoh Operasi Cartesian-product
-
Query : tampilkan nid,nama_d(dari relasi dosen),
nama_mk (dari relasi Matakuliah), thn_akademik,smt,jam_kr,waktu,kelas(dari
relasi mengajar) dimana semester semester mengajar adalah semester ‘1’.
-
Aljabar relasional
p
(Mengajar.nid=Dosen.nid Ʌ Mengajar.kdmk) Ʌ smt=1 (((p nid,nama_d X (p nama_mk) X (p
thn_akademik,smt,hari,jam,ke,waktu,kelas))))
-
Hasilnya
Menapilkan tabel dengan isi tabel sebagai berikut
nid
|
Nama_d
|
Nama_mk
|
Thn_akademik
|
smt
|
hari
|
Jam_ke
|
waktu
|
kelas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E.
Operasi Union(È)
Adalah operasi untuk menghilangkan gabungan tabel
dengan syarat kedua tabel memiliki atribut yang sama, yaitu domain atribut ke-i
masing-masing tabel harus sama. Sintaks yang digunakan dalam operasi union ini
adalah
R È
S={x|x
ϵ R atau X ϵ S}
Operasi dilakukan saat R dan S memiliki operasi atribut yang sama
sehingga jumlah komponennya sama.
F.
Set-different(--)
Adalah operasi untuk mendapatkan tabel suatu relasi, tapi tidak ada
relasi yang lainnya. Sintaks yang digunakan:
R - S= {x|x ϵ R dan X bukan ϵ
S}
Operasi dapat dilaksanakan apabila R dan S mempunyai atribut yang tidak
sama yangakan ditampilkan, artinya adalah atribut R yagn ada di S akan
ditampilkan, sedangkan atribut yang sama tidak ditampilkan.
G.
Rename
Merupakan opersi untuk menyalin tabel lama kedalam tabel baru. Sintaks
yang digunakan:
r [nama_tabel]
H.
Set-intersection(Ç)
Termasuk dalam operasi pemanbahan, karena operator ini dapat diderivikasi
dari operator dasar seperti berikut :
A Ç B =
A – ( A –B ), atau A Ç
B= B – (B - A)
I.
Theta-join
Merupakan operasi untuk menghubungkan operasi selection dan
cartesia-product dengan suatu kriteria.
J.
Outer-join
Operasi untuk menghubungkan operasi selection dan cartesian-product dengan
suatu kriteria pada kolom yagn sama.
K.
Devision
Operasi yang digunkan dalam query yang mencangkup frase “setiap” atau
“untuk semua”, operasi ini juga merupakan pembagian atas tuple-tuple dari dua
relasi.
2. Kalkulus relasional
Spesifik untuk memperoleh informasi. Pada model
relasional, bahasa formal non proseduralyang adalah bahasa kalkulus. Kalkulus
relasional dibagi menjadi dua, yaitu:
1.
Kalkulus relasional tupel
Mendiskripsikan informasi tanpa
perlu memberikan prosedur/cara spesifik untuk memperoleh infomasi tersebut.
konsep dari kalkulus relasional tupel adalah konseb variabel tupel. Dimana
variabel merepresentasikan tupel-tupel padarelasi dan digunakan untuk
mengekstrak data dari relasi. Komponen-komponen lain rumus kalkulus tupel
adalah kualifikasi data dengan membatasi nilai-nilai dari atribut-atribut yang
dispesifikasikan.
Query
pada kalkulus realsional tupel dapat diekspresikan dengan:
{t|P(t)}
Yaitu himpunaan semua tupel t sehingga predikat P
bernilai true untuk t, notasi t[A] untuk menunjukan nilai tuple t pada atributr
A, dan menggunakan t ϵ r untuk menunjukan nilai tuple t di relasi r. Predikat P adalah
berupa rumus, beberapa rumus, beberapa variabel tuple dapat muncul di rumus.
Berikut ini contoh kalkulus relasional tuple yang diterapkan pada
SQL.
SELECT Dosen.nid,zdosen.nama_d,Dosen.gajipokok
FROM Dosen
WHERE
Dosen.jkelamin=’Pris’ AND Dosen.gajipokok>1000000
Pada query di atas menyatakan dua hal :
-
Mengambil atau mengekstra tupel-tupel pada
relasi Dosen yang mempunyai atribut jkelamin ‘Pria’ dan memiliki atribut
gajipokok adalah lebih besar dari 1000000.
-
Menampilkan atribut tertentu yaitu
nid,nama_d,gajipoko.
Dengan demikian Dosen.nid,Dosen.gajipokok adalah
variabel-variabel tupel. Bentuk umum dari kalkulus relasional tuple adalah:
TupleVariabel1 operator[TupleVariabel2 | constant]
SQL dikembangkan berbasis kalkulus relasional tuple.
Rumus-rumus kalkulus relasional tuple dibangun dari
atom-atom, atom mempunyai salah satu bentuk berikut:
a.
s ϵ R, dimana s merupalan variable tuple dan R merupakan
relasi
b.
s[x] u[y], dimana s atau u merupakan variabel
tupel, x adalah atribut yang didefinisikan di s, y adalah atribut didefinisikan
di u. Dimana atribut x dan y yang
mempunyai domain yang anggotanya dapat dibandingkan dengan operator pembanding.
c.
S[x] operator pembanding c, dimana s adalah
variabel tupel, x adalah atribut yang didefinisikan di s. C adalah konstanta
dari domain atribut x.
Aturan
pembuatan rumus:
-
Atom adalah rumus.
-
Jika P1 adalah rumus, maka bukan P1 dan (P1)
-
Jika P1 dan P2 adalah rumus, maka P1 atau P2, P1
dan P2, dan jika P1 makaP2.
-
Jika P1(x) adalah rumus di x, dimana x adalah
variabel tupel x, maka r ϵ R dan bilangan s ϵ S (r[a]=s[a])
2.
Kalkulus relasional domain
Kalkulus realsional domain menggunakan
variable-variable pada nilai-nilai domain atribut, bukan nilai-nilai untuk
sebuah tupel. Ekspresi pada relasional domain berbentuk:
{<X1,X2, ... ,Xn>|P(X1,X2, ... , Xn)}
X1, X2, ... ,Xn menyatakan variable-variable domain.
P menyatakan rumus-rumus yang disusun dari atom-atom.
Berdasarkan acuan model relasional, ada 2 bahasa query
kemersial yaitu SQL dan QBE.