- Pengertian Aljabar Relasional
Aljabar relasional adalah sekumpulan operasi yang digunakan untuk melakukan proses manipulasi data dalam rangka untuk mendapatkan informasi yang diperlukan dari database.
- Operasi Aljabar Relasional
1. Select dan Project
Contoh:
Aljabar relasional: σsemester<8(mhs)
Query: select *
from mhs where semester<8
Aljabar relasional: πnama(σipk>2.50 V semester<10(mhs))
Query: select nama from mhs where ipk>2.50 or semester<10
Hasil:
2. Operasi dengan dua tabel (Union, Intersection, Set
Difference, Cross Join, Natural Join)
Contoh:
Tabel mhs
NIM
|
NAMA
|
SEMESTER
|
IPK
|
2008-31-003
|
Clara
|
6
|
2,83
|
2007-31-002
|
Budi
|
8
|
2,76
|
2006-31-001
|
Amir
|
10
|
2,54
|
Tabel mhs2
NIM
|
NAMA
|
SEMESTER
|
IPK
|
2008-31-003
|
Clara
|
6
|
2,83
|
2007-31-002
|
Budi
|
8
|
2,76
|
2008-31-004
|
Didi
|
8
|
3
|
2007-31-005
|
Fahira
|
8
|
3,2
|
Tabel nilai
NIM
|
KDMTKUL
|
NILAI
|
2006-31-001
|
ICA626
|
A
|
2007-31-002
|
ICA323
|
B
|
- Union
Aljabar relasiona: mhs ∪ mhs2
Query: select *
from mhs union select * from mhs2
Hasil:
NIM
|
NAMA
|
SEMESTER
|
IPK
|
2006-31-001
|
Amir
|
10
|
2,54
|
2007-31-002
|
Budi
|
8
|
2,76
|
2007-31-005
|
Fahira
|
8
|
3,2
|
2008-31-003
|
Clara
|
6
|
2,83
|
2008-31-004
|
Didi
|
8
|
3
|
- Intersection
Aljabar relasional: mhs ∩ mhs2
Query: select *
from mhs intersect select * from mhs2
Hasil:
NIM
|
NAMA
|
SEMESTER
|
IPK
|
2007-31-002
|
Budi
|
8
|
2,76
|
2008-31-003
|
Clara
|
6
|
2,83
|
- Set Difference
Aljabar relasional: mhs - mhs2
Query: select *
from mhs minus select * from mhs2
Hasil:
NIM
|
NAMA
|
SEMESTER
|
IPK
|
2006-31-001
|
Amir
|
10
|
2,54
|
- Cross Join
Aljabar relasional: mhs X nilai
Query: select * from mhs cross join nilai
Hasil:
NIM
|
NAMA
|
SEMESTER
|
IPK
|
NIM
|
KDMTKUL
|
NILAI
|
2008-31-003
|
Clara
|
6
|
2,83
|
2006-31-001
|
ICA626
|
A
|
2007-31-002
|
Budi
|
8
|
2,76
|
2006-31-001
|
ICA626
|
A
|
2006-31-001
|
Amir
|
10
|
2,54
|
2006-31-001
|
ICA626
|
A
|
2008-31-003
|
Clara
|
6
|
2,83
|
2007-31-002
|
ICA323
|
B
|
2007-31-002
|
Budi
|
8
|
2,76
|
2007-31-002
|
ICA323
|
B
|
2006-31-001
|
Amir
|
10
|
2,54
|
2007-31-002
|
ICA323
|
B
|
- Natural Join
Aljabar relasional: mhs ∞ nilai
Query: select * from mhs natural join nilai
Hasil:
NIM
|
NAMA
|
SEMESTER
|
IPK
|
KDMTKUL
|
NILAI
|
2007-31-002
|
Budi
|
8
|
2,76
|
ICA323
|
B
|
2006-31-001
|
Amir
|
10
|
2,54
|
ICA626
|
A
|
- Query Decomposition
Pada
Lapis Pertama ini input adalah query dirubah
menjadi Aljabar query.
Query
Decomposition dibagi menjadi 4 bagian:
1. Normalisasi yaitu manipulasi query
Aturan untuk operasi logika
- p1
∧ p2
<=> p2 ^ p1
- p1
V p2 <=> p2 V p1
- p1
^ ( p2 ^p3) <=>
(p1 ^
p2) ^p3
- p1
V (p2 Vp3) <=>( p1 V
p2) Vp3
- p1
^ (p2 Vp3)<=>(p1 ^
p2) V (p1 ^ p3)
- p1
V (p2 ^ p3) <=>
(p1 V
p2) ^ (p1 V p3)
- ¬ ( p1 ^
p2)<=> ¬p1
V ¬p2
- ¬ ( p1 V
p2) <=>
¬p1 ^ ¬p2
- ¬(¬p) <=> p
Contoh:
Mencari nama pelanggan dengan ap ‘lenteng
agung ‘ dengan daya 1300 atau 900 watt
Query: select nmpel from
pelanggan p , daya_terpasang d where
p.idpel = d.idpel and ap
= “lenteng agung” and
(daya = 1300 Or daya = 900)
Normalisasi: p.idpel
= d.idpel ∧ ap=“lenteng agung” ∧ (daya = 1300 V Daya =900)
Atau
Query: select nmpel from
pelanggan p , daya_terpasang d where
(p.idpel = d.idpel And ap = 'lenteng
agung‘
and
daya = 1300 ) or (p.idpel
= d.idpel and ap
= 'lenteng agung' and
daya = 900 )
(p.idpel
= d.idpel ∧ ap=“lenteng agung” ∧ Daya = 1300) V
(p.idpel
= d.idpel ∧ ap=“lenteng agung” ∧ Daya = 900)
(p.idpel
= d.idpel ∧ ap=“lenteng agung” ∧ Daya = 1300) V
(p.idpel
= d.idpel ∧ ap=“lenteng agung” ∧ Daya = 900)
2. Analisa
semantik yaitu mendeteksi query yang salah
Tipe yang tidak benar:
1. Jika ada atribut atau nama relasi
tidak didefenisi dalam skema global
2. Ada operasi yang diaplikasikan ke
atribut dengan tipe yang salah
contoh: select alamat from pelanggan where ap > 1900
Query tidak benar: Atribut alamat tidak dideklarasikan dalam struktur tabel Operator > 1900 tidak compatible dengan
type text dari ap
3. Memperbaiki
Query yaitu mengeliminasi predicate yang berulang
1. Ada komponen yang tidak memberikan
konstribusi dalam hasil akhir
2. Hanya sebagian dari relational
queris yang dapat di tes untuk koreksi
3. Untuk mendektesi : query graph dan
Join Graph
Contoh: Cari nama pelanggan dan daya dengan tarif kurang dari 1100
Query: select nmpel, daya from
pelanggan p, daya_terpasang
d, harga h where p.idpel
= d.idpel and d.gol
= h.gol and tarif
<1100
4. Menata
ulang struktur dari query (restruktured) yaitu menggunakan aturan transformasi
Query: select nmpel, daya from pelanggan p,
daya_terpasang d, harga h where p.idpel = d.idpel and d.gol = h.gol and tarif<110
Tidak ada komentar:
Posting Komentar