Kamis, 03 April 2014

OPTIMASI QUERY
Dilakukan dengan mengetahui bagaimana rencana eksekusi query yang “baik” rencana dari optimasi

Optimasi Query adalah suatu proses untuk menganalisa query untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi lebih efektif. Optimasi query mencakup beberapa teknik seperti transformasi query ke dalam bentuk logika yang sama, memilih jalan akses yang optimal dan mengoptimumkan penyimpanan data.
Tujuan dari optimasi query adalah menemukan jalan akses yang termurah untuk meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai tujuan tersebut, maka diperlukan optimizer untuk melakukan analisa query dan untuk melakukan pencarian jalan akses.


Query dapat dilakukandengan mengoptimalkan ekspresi Aljabar Relasional seperti :
  • Selection (σ)
  • Projection (̟)
  • Cartesian Product / Cross Product (X)
  • Union (∪)
  • Set-Difference (-)


    Berikut tabel yang akan dibuat aljabar relasional dan optimasi querynya

    Tabel Pelanggan   
                                                 Tabel Harga                    
                           
    Tabel Daya Terpasang


    ALJABAR RELASIONAL

    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 Decomposition
  • Pada Lapis Pertama ini input adalah query dirubah menjadi Aljabar query.
  • Query Decomposition dibagi menjadi 4 bagian :
    • Normalisasi
      Proses untuk mengubah suatu tabel yang memiliki  masalah tertentu  ke dalam dua buah tabel    atau lebih, yang tidak lagi memiliki masalah tersebut (Abdul Kadir, 2002: 52).
    • Analisa semantikMendeteksi queri yang salah
    • Memperbaiki Query
    • Menata ulang struktur dari query (restruktured)
      Gunakan aturan transformasi

     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 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
     
    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

                                   

Posted on 08.00 by Fadhil Rajabian

2 comments

ALJABAR RELASIONAL

Aljabar Relasional ialah sekumpulan operasi yang digunakan untuk melakukan proses manipulasi data dalam rangka untuk mendapatkan informasi yang diperlukan dari database.

Logika Penghubung




Operasi-operasi Aljabar Relasional
  • Select
Dilambangkan dengan simbol "s". Operasi select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi.
  • Project
Dilambangkan dengan simbol "p". Operasi project adalah operasi unary yang mengirim relasi argumen dengan kolom – kolom tertentu.


Perhatikan gambar diatas!

Dengan menggunakan select semua field akan ditampilkan tetapi jika menggunakan project maka hanya field yang dipilih saja yang akan ditampilkan.


  • Union (∪)
Union berfungsi untuk menggabungkan tabel dengan syarat kedua tabel memiliki atribut yang sama.
  • Intersection ( ∩ )
Intersection berfungsi untuk mencari irisan dari dua tabel dengan syarat kedua tabel memiliki atribut yang sama.

  • Set-difference (-)
Set-difference berfungsi untuk mengambil atribut pada tabel yang di set-difference kan dengan tabel lainnya.


  • Cross Join (X)
Pada cross join akan membuat hasil yang didasarkan pada semua kemungkinan kombinasi baris dalam kedua set data.


  • Natural Join (∞)

Operasi natural join memungkinkan kita untuk menggabungkan operasi select dan cartesian product menjadi hanya 1 operasi saja. 


Posted on 02.54 by Fadhil Rajabian

No comments

Kamis, 27 Maret 2014

Dibawah ini adalah tabel yang akan dibuat class diagram dan relasi pada oracle


Berikut Class Diagramnya
 


Membuat Tabel dan Relasi Pada Oracle

 Langkah pertama adalah membuat table dan mengisikan atribut tablenya, serta membuat primary key  pada oracle SQL  command: 

Membuat table “bagian”
create table bagian(
kode_bag char(10),
nama char(40),
lokasi char(20),
constraint pk_bagian primary key(kode_bag)
);
Menginput data / table row
begin
insert into bagian values('B01','IT','Jakarta');
insert into bagian values('B02','HRD’,'Jakarta');
insert into bagian values('B03','Teknikal Mesin','Jakarta');
insert into bagian values('B04','Engginering Support','Bekasi');
end
Melihat Isi table
select * from bagian

 



Membuat table “pegawai” 
create table pegawai(
nip char(10),
nama char(40),
tgl_lahir date,
tgl_masuk date,
kode_bag char(10),
constraint pk_pegawai primary key(nip),
constraint fk_pegawai  foreign key(kode_bag)
references  bagian(kode_bag)
);
Begin
insert into pegawai values('P11','fadhil','30-DEC-1993,'25-JUN-12','B01');
insert into pegawai values('P12','irma','19-JAN-93','14-JUL-12','B02');
insert into pegawai values('P13','Candra','18-JUL-93','15-APR-11','B03');
insert into pegawai values('P14','intan','9-AUG-93','30-JUN-10','B01');
insert into pegawai values('P15','nova','7-NOV-1992','7-OCT-10','B04');
insert into pegawai values('P16','suryo','27-MAR-95,'4-NOV-11','B03');
 

Membuat table “pegawai_tetap”
create table pegawai_tetap(
nip char(10),
gapok int,
constraint pk_pegawai _tetap foreign key(nip) references pegawai (nip)
);

Begin
insert into pegawai_tetap values('P11','14000000');
insert into pegawai_tetap values('P12','10000000');
insert into pegawai_tetap values('P13','15000000');
end
select * from Peg_tetap;  

   
Membuat table “pegawai_mingguan”
create table pegawai_mingguan(
nip char(10),
constraint pk_pegawai_mingguan foreign key(nip) references pegawai(nip)
);
begin
insert into pegawai_tetap values('P13');
insert into pegawai_tetap values('P14');
end
select*from pegawai_mingguan 


 Membuat table “pegawai_harian”
create table pegawai_harian(
nip char(10),
constraint pk_pegawai_harian foreign key(nip) references pegawai(nip)
);
insert into pegawai_harian values('P15');
select*from pegawai_harian
 
Membuat table “tanggungan” 
create table tanggungan (
nip char(10),
nama char(40),
jenis_kelamin char(1),
hubungan char(10),
constraint fk_tanggungan foreign key(nip) references pegawai
);

begin
insert into tanggungan values('P11','Bradd pitt','P','anak');
insert into tanggungan values('P11','Andrey ','P','Anak');
insert into tanggungan values('P13','Hanna','W','Anak');
insert into tanggungan values('P13','Budi','W','Anak');
insert into tanggungan values('P12','Ica','W','Istri');
end
select * from tanggungan 


 Membuat table “proyek” 
 create table proyek(kode_proyek char(10),
nama_proyek char(40),
lokasi char(20),
kode_bag char(10),
constraint pk_proyek primary key(kode_proyek),
constraint fk_proyek foreign key(kode_bag) references bagian(kode_bag)
);
begin
insert into proyek values('PR1','Database PT Surem Maju','Jakarta','B03');
insert into proyek values('PR2','Proyek Web Administrator PT Surem Maju','JAKARTA','B03');
insert into proyek values('PR3','Instalasi Jaringan PT.Indonesia raya','Jakarta','B01');
insert into proyek values('PR4','Database PT angina ribut','Bandung','B02');
end
select * from proyek;




Membuat table “kerja”  
create table kerja(
nip char(10),
kode_proyek char(10),
lama char(1),
constraint pk_kerja primary key(nip),
constraint fk_kerja primary key(kode_proyek)
references proyek (kode_proyek)
);
            begin  
insert into kerja values('P11','PR1','2');
insert into kerja values('P12','PR1','2');
insert into kerja values('P13','PR4','3');
insert into kerja values('P13','PR3','4');
insert into kerja values('P16','PR2','2');
insert into kerja values('P11','PR2','5');
end
select*from kerja



Dari berberapa tabel yang dibuat diatas menghasilkan relasi di model table pada oracle seperti dibawah ini :



Posted on 06.27 by Fadhil Rajabian

No comments