selalu belajar menjadi lebih bijaksana*
lagi dan lagi..

Pertemuan 4 - Aljabar Relasional dan Optimasi Query

ALJABAR RELATIONAL

Aljabar relasional adalah sebuah bahasa query prosedural yang terdiri dari sekumpulan operasi dimana masukkannya adalah satu atau dua relasi dan keluarannya adalah sebuah relasi baru sebagai hasil dari operasi tersebut.



Logika Penghubung


Berikut ini adalah contoh dari suatu desain database sebuah universitas yang terdiri dari 3 table yaitu: tabel mhs, tabel mhs2, dan tabel nilai.


OPERASI DENGAN 1 TABEL

Select (σ)Operasi select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi. Simbol sigma “σ” digunakan untuk menunjukkan operasi select. Predikat muncul sebagai subscript dari σ dan kondisi yang diinginkan yang ditulis dalam predikat. Argumen diberikan dalam tanda kurung yang mengikuti σ dan berisi tabel relasi yang dimaksud.Ex. Dari tabel mhs kita pilih mahasiswa yang kurang dari semester 8σ semester < 8 (mhs)Select * from MHS where semester < 8


Project (p)
Operasi project berfungsi untuk memilih nilai atribut-atribut tertentu saja dari sebuah tabel relasi. Simbol phi “p” digunakan untuk menunjukkan operasi project. Predikat muncul sebagai subscript dari p dan hanya nama atribut yang diinginkan yang ditulis dalam predikat. Argumen diberikan dalam tanda kurung yang mengikuti p dan berisi tabel relasi yang dimaksud.Ex. Dari tabel mhs kita akan menampilkan mahasiswa yang ipknya lebih dari 2,50 dan semesternya kurang dari 10.p nama (σ ipk > 2,50 ᴠ semester < 10 (mhs))
Select nama from mhs where ipk > 2,50 or semester < 10


Nah, terlihat kan perbedaan antara select dan project ?? Yupp, kalo select menampilkan semua atribut dari satu atau beberapa baris yang memenuhi kondisi. Sedangkan project, hanya menampilkan satu kolom atau atribut saja yang sesuai kondisi.

OPERASI DENGAN 2 TABEL

Union ()
Operasi union berfungsi untuk mendapatkan gabungan nilai atribut dari sebuah tabel relasi dengan nilai atribut dari tabel relasi lainnya, namun jika terdapat dua nilai yang sama makan diambil salah satunya saja. Simbol “” digunakan untuk menunjukkan operasi union. Operasi union bernilai benar bila terpenuhi 2 kondisi, yaitu : Derajat dari 2 tabel relasi yang dioperasikan harus sama dan domain dari atribut yang dioperasikan juga harus sama.
Ex. Tabel mhs union dengan tabel mhs2
mhs  mhs2
Select * from mhs union select * from mhs2









Intersection ()
Operasi set intersection berfungsi untuk mendapatkan nilai yang sama yang ada dalam sebuah tabel relasi dan juga ada dalam tabel relasi lainnya. Simbol “∩“ digunakan untuk menunjukkan operasi set intersection.
Ex. Tabel mhs intersection dengan tabel mhs2
mhs  mhs2
Select * from mhs intersection select * from mhs2


Set Difference (-)
Operasi set difference berfungsi untuk mendapatkan nilai yang ada dalam sebuah tabel relasi, tapi tidak ada dalam tabel relasi lainnya. Simbol “-“ digunakan untuk menunjukkan operasi set difference.
Ex. Tabel mhs difference dengan  tabel mhs2
mhs – mhs2
Select * from mhs minus select * from mhs2


Cross Join ( X )
Operasi cross join berfungsi untuk mengkombinasikan informasi yang ada dalam 2 tabel relasi dan menghasilkan sebuah tabel relasi yang baru. Simbol “X“ digunakan untuk menunjukkan operasi set difference.
Ex. Tabel mhs cross join dengan tabel nilai
mhs X nilai
Select * from mhs cross join nilai


Natural Join ()
Operasi natural join memungkinkan kita untuk menggabungkan operasi select dan cross join menjadi hanya 1 operasi saja. Simbol ““ digunakan untuk menunjukkan operasi natural join. Operasi natural join hanya menghasilkan tupel yang mempunyai nilai yang sama pada 2 atribut yang bernama sama pada 2 tabel relasi yang berbeda.
Ex. Tabel mhs natural join dengan tabel nilai
mhs nilai
Select * from mhs natural join nilai


OPTIMASI QUERY

Optimasi query adalah suatu proses untuk menganalisa query dan untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output.
Dilakukan dengan mengetahui bagaimana rencana eksekusi query yang baik.
Rencana dari optimasi query dapat dilakukan dengan mengoptimalkan Ekspresi Aljabar Relasional seperti : selection, projection, cross join, union, set difference.


SELECT nmpel
FROM pelanggan,daya_terpasang
WHERE pelanggan.idpel = daya_terpasang.idpel
AND daya > 1300
Π nmpel(σdaya >1300 Λ pelanggan.idpel=daya_terpasang.idpel(pelanggan X daya_terpasang))

Query Dekomposision
Pada Lapis Pertama ini input adalah query
diubah menjadi Aljabar query.
Query Decomposition dibagi menjadi 4 bagian :
_Normalisasi yaitu manipulasi query
_Analisa semantik yaitu mendeteksi query yang salah
_Memperbaiki Query (sederhanakan) yaitu mengeliminasi predicate yang berulang
_Menata ulang struktur dari query (restruktured) yaitu menggunakan aturan transformasi

Aturan untuk operasi logika


CONTOH 1
Mencari nama pelanggan dengan ap ‘lenteng agung ‘
dengan daya 1300 atau 900 watt
SQL :
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)

ANALISA
Menemukan queri 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 2
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

KESALAHAN SEMANTIK
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 3:
Cari nama pelanggan dan daya dengan tarif
kurang dari 1100

SELECT nmpel, daya
FROM pelanggan p,
daya_terpasang d, harga h
WHERE p.idpel = d.idpel
AND d.gol = h.gol
AND tarif <1100

Query Graph




Sumber :
- slide dari bu dine
http://rizarulham.wordpress.com/2009/10/16/aljabar-relasional-bahasa-pada-model-data-relasional/
http://awhnymous.blogspot.com/2013/10/sql-aljabar-relasi.html
http://andrekomputer.blogspot.com/2013/01/optimasi-query.html

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

Pertemuan 3 - Implementasi Class Diagram pada Oracle

Masih dari soal yang sama, soal yang kemarin saya posting. Kali ini saya akan meng-upload implementasinya pada oracle.

Buat semua tabel yang ada, dimulai dari tabel BAGIAN, karena salah satu atribut pada tabel ini, akan digunakan sebagai foreign key untuk tabel PEGAWAI dan PROYEK.

- Tabel Bagian


- Tabel Proyek

- Tabel Pegawai

- Tabel Kerja

- Tabel Peg_tetap

- Tabel Peg_mingguan

- Tabel Peg_harian

- Tabel Tanggungan

Setelah semua tabel selesai dibuat, tambahkan foreign key pada semua ke-7 tabel selain tabel BAGIAN. Lebih baik jika kita menggunakan coding untuk membuat foreign key-nya pada SQL Commands. Misal untuk tabel Kerja yang menggunakan dua foreign key, kita ketik seperti ini :
alter table kerja
add constraint fk_kerja foreign key (nip) references pegawai(nip)
add constraint fk_kerja2 foreign key (kd_proyek) references proyek(kd_proyek)

Di bawah ini merupakan model dari hubungan setiap tabel.
- Tabel Bagian

- Tabel Proyek

- Tabel Pegawai

- Tabel Kerja

-Tabel Peg_tetap

- Tabel Peg_mingguan

- Tabel Peg_harian
 

 - Tabel Tanggungan

Selanjutnya isikan data-data yang ada pada soal, ke dalam semua tabel.
- Tabel Bagian

- Tabel Proyek 

- Tabel Pegawai

- Tabel Kerja

- Tabel Peg_tetap


- Tabel Peg_mingguan

- Tabel Peg_harian

- Tabel Tanggungan

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

Pertemuan 2 - Notasi Class Diagram

Notasi Class Diagram


Class
Digambarkan dengan sebuah kotak yang terbagi atas 3 bagian :
- Bagian atas adalah nama dari sebuah class
- Bagian tengah adalah atribut-atribut class
- Bagian bawah adalah method-method dari sebuah class


Assosiation
Dilambangkan dengan sebuah garis yang menghubungkan antar 2 class, pada garis ini biasanya didukung oleh hukum-hukum multiplicity dalam sebuah relationship.

Composition
Jika sebuah class tidak bisa berdiri sendiri dan merupakan bagian dari class yang lain, maka class tersebut memiliki relasi composition terhadap class tempat dia bergantung tersebut.

Dependency
Jika sebuah class menggunakan class yang lain untuk menunjukkan operasi sebuah class. Umumnya dilambangkan dengan tanda panah dengan garis putus-putus.

Agregation
Agregation mengindikasikan keseluruhan bagian relationship dan biasanya disebut sebagai relasi “mempunyai sebuah” atau “bagian dari”. Sebuah agregation digambarkan dengan sebuah garis dan jajar genjang yang tidak solid.

Generalisasi
Sebuah generalisasi dilambangkan dengan ke atas panah yang tidak solid, yang menghadap ke parent / induknya.


Latihan :)



Bentuk ERD nya ..


Bentuk class diagram nya..


Sumber :
- slide bu dine :)

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

Pertemuan 1 - Perbedaan ERD dan Class Diagram


ERD merupakan suatu model untuk menjelaskan hubungan antar data dalam  basis data  berdasarkan objek-objek dasar data yang memiliki hubungan antar relasi.


Simbol-simbol dalam ERD

Nah, perbedaan antara garis tebal dan garis tipis adalah untuk menunjukkan weak entity-nya.


Class diagram merupakan diagram yang menunjukan adanya klas-klas dan hubungan dengan sudut pandang logika dari sebuah sistem.

Class diagram menggambarkan struktur dan deskripsi class, package, dan object beserta  hubungan satu sama lain.


Sebuah class memiliki tiga area  pokok :
- Nama, merupakan nama dari sebuah kelas
- Atribut, merupakan properti dari sebuah kelas
- Operasi, merupakan tindakan yang dapat dilakukan oleh kelas lain terhadap sebuah kelas

Perbedaan ERD dan class diagram:

Notasi yang sering digunakan dalam class diagram:

Class



Class adalah blok-blok pembangun pada pemrograman berorientasi obyek. Sebuah class digambarkan sebagai sebuah kotak yang terbagi atas 3 bagian. Bagian atas adalah bagian nama dari class. Bagian tengah mendefinisikan atribut class. Bagian akhir mendefinisikan method-method dari sebuah class.
Assosiation
Sebuah asosiasi merupakan sebuah relationship paling umum antara 2 class, dan dilambangkan oleh sebuah garis yang menghubungkan antara 2 class. Garis ini bisa melambangkan tipe-tipe relationship dan juga dapat menampilkan hukum-hukum multiplisitas pada sebuah relationship (ex. One-to-one, one-to-many, many-to-many).

Composition
Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian dari class yang lain, maka class tersebut memiliki relasi composition terhadap class tempat dia bergantung tersebut. Sebuah relationship composition digambarkan sebagai garis dengan ujung berbentuk jajaran genjang berisi (padat).
Dependency
Kadangkala sebuah class menggunakan class yang lain. Hal ini disebut dependency. Umumnya penggunaan dependency digunakan untuk menunjukkan operasi pada suatu class yang menggunakan class yang lain. Sebuah dependency dilambangkan sebagai   sebuah panah bertitik-titik.
Aggregation
Agregasi mengindikasikan keseluruhan bagian relationship dan biasanya disebut sebagai relasi "memiliki sebuah" atau "bagian dari". Sebuah agregasi digambarkan sebagai sebuah garis dengan ujung berbentuk jajar genjang yang tidak berisi (tidak padat).
Generalization
Sebuah relasi generalisasi sesuai dengan sebuah relasi inheritance pada konsep berorientasi obyek. Sebuah generalisasi dilambangkan sebagai sebuah panah dengan kepala panah yang tidak berisi (tidak padat) yang mengarah ke kelas induknya (parent).

Contoh relasi pada ERD dan Class Diagram


Latihan ...


Jawab:





Sumber:
- resume slide bu dine
http://blog.re.or.id/erd-entity-relationship-diagram.htm
http://elib.unikom.ac.id/files/disk1/438/jbptunikompp-gdl-agungmulyo-21884-8-8daftar-l.pdf

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments