Halaman

Kamis, 20 Desember 2012

SUBQUERY


SUBQUERY
Subquery merupakan sebuah query didalam query. Pengertian dari subquery adalah sebuah pernyataan SELECT yang dilampirkan sebagai klausa dalam SQL pernyataan yang lain. subquery digunakan untuk menentukan suatu nilai yang belum diketahui.
Contohnya adalah : SELECT ..... FROM ..... WHERE... (SELECT...FROM ....WHERE)
Yang tercetak hitam adalah sebuah main query dan yang tercetak merah adalah sebuah subquery. Pada pernyataan diatas subquey dijalankan terlebih dahulu kemudian menjalankan main query jadi main query akan dijalankan ketika sudah mendapat inputan dari subquery tersebut.

Contoh penulisan dari subquery adalah :
SELECT select_list
FROM table
WHERE expr operator (SELECT select_list
                                      FROM table) ;

Pembanding kolom dalam subquery banyak kolom dapat berupa,yaitu:
  1. Pembandingan berpasangan
  2. Pembandingan tidak berpasangan.
Pada penulisan Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer atau disebut juga dengan inline view,  karena  tidak membentuk object database.

Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu baris.  Scalar subquery pada standart SQL-92 hanya terbatas pada :
·  SELECT Statement (klausa FROM dan WHERE saja)
·  Daftar VALUE dari statement INSERT
Pada standart SQL-99, scalar subqueries dapat diguanakan dalam :
·  Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan CASE.  
·  Semua klausa dari SELECT Statement kecuali GROUP BY.

Korelasi Subquery
Korelasi  SubQuery  digunakan  untuk  pemrosesan  baris  per  baris. Tiap-tiap  subquery dijalankan sekali untuk setiap baris dari outer query.  Prosesnya adalah sebagai berikut :
Pada proses  korelasi  dimulai  dengan mengambil  baris  dari  outer  query,  kemudian  inner  query  dijalankan  dengan  menggunakan  nilai  baris  kandidat,  kemudian  nilai  dari  inner  query  digunakan  untuk  melakukan  kualifikasi  atau mendiskualifikasi baris kandidat.
Fungsi Korelasi Subquery
Korelasi  Subquery  juga  dapat  digunakan  untuk  meng-update  baris  pada  satu  table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan  Korelasi Update. Korelasi Subquery juga dapat digunakan untuk menghapus baris pada satu table  berdasarkan  pada  baris  dari  table  yang  lain,  korelasi  seperti  itu  dinamakan  dengan Korelasi Delete.
Operator EXISTS  dan NOT EXIST digunakan  untuk menguji keberadaan  dari baris dalam himpunan hasil dari subquery.  
Jika ditemukan, maka :
·  pencarian tidak dilanjutkan dalam inner query dan kondisi ditandai TRUE.
Jika tidak ditemukan, maka :
·  Kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.
With
Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang  sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query.   Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace  temporer kepunyaan user.  Klausa WITH dapat meningkatkan performansi.

Optimasi
Data  yang  tersimpan  dalam  jumlah  yang  sangat  besar,  Terdapat  aturan  system  informasi  dalam  organisasi,  system  basis  data  dilihat  sebagai  bagian  system  informasi dalam aplikasi berskala besar.
Untuk meningkatkan unjuk kerja  tidak hanya desain  logik saja yang diperhatikan  tapi juga struktur fisik penyimpanan data. Penggunaan  Index  pada  database  secara  tepat,  dapat  digunakan  untuk  meningkatkan kecepatan akses data.  
Informasi  tentang  jalur  akses yang digunakan oleh database untuk melaksanakan query dalam database Oracle dapat dengan menggunakan perintah explain plan.  Selain  optimasi  perintah  SQL,  faktor  lain  yang  berpengaruh  terhadap  kecepatan  akses data adalah optimasi aplikasi dan penggunaan cluster dan index.  
Pada sebuah database engine semisal pada database Oracle kecepatan akses data  dipengaruhi  oleh  beberapa  komponen  arsitektur  pembentuknya  seperti  shared  pool, buffer cache, dan redo log buffer.
Optimasi  aplikasi  tergantung  pada  efisiensi  penggunaan  obyek  yang mendukung kecepatan  akses  seperti  index  atau  cluster,  dan  normalisasi  data  pada  desain database.

Sabtu, 24 November 2012

DEPENDENCY DAN NORMALISASI


DEPENDENCY DAN NORMALISASI
FUNCTIONAL DEPENDENCY
Merupakan hubungan/relationalship antara atribut-atribut dalam relasi. Notasi dari functional dependency adalah A -> B. Dibaca atribut A menentukan atribut B. Contoh:
Tabel pemasok barang
No_pemasok
Nama_pemasok
1
A
2
B
3
C
Ketergantungan pada tabel pemasok barang diatas adalah :
No_pemasok -> Nama_pemasok atau No_pemasok menentukan Nama_pemasok
Tabel Siswa
Matkul
Nim
Nama
Nilai
Bahasa Indonesia
5302411008
Devi
A
Matematika
5302411009
Astri
AB
Fisika
5302411008
Devi
A
Ketergantungan pada tabel siswa diatas adalah :
Nim -> Nama atau Nim menentukan Nama , karena untuk setiap nilai dengan Nim yang sama maka nilai dengan nama juga akan sama.
{Matkul,Nim} -> Nilai
Matkul dan Nim dapat menentukan Nilai jika Matkul dan Nilai merupakan gabungan.
MACAM-MACAM FUNCTIONAL DEPENDENCY
-          Full Dependency
Menunjukkan suatu relasi jika terdapat atribut A dan B dalam satu relasi, dimana atribut B ketergantungan penuh pada atribut A dan atribut A ketergantungan pada atribut B. Full dependency hanya terdiri dari satu atribut saja.
Contoh:
No_dosen
Nama
Jk
Pend
Th_lulus
D41
Joko
Pria
S1
2008
D42
Joko
Pria
S2
2009
D31
Ana
Wanita
S2
2006
Contoh dari Full dependency adalah : Nama -> Th_lulus
Jika {No_dosen,Pend} -> Th_lulus.
No_dosen dan Pend dapat menentukan Th_lulus namun contoh diatas bukan Full dependency karena tidak ada hubungan antara No_dosen dengan th_lulus. Serta
-          Partially Dependency
Menunjukkan bahwa jika salah satu atribut/subset dihilangkan maka tetap sebuah relasi. Pada partially dependency ini salah satu dari atributnya harus primary key.
-          Transitive Dependency
Menunjukkan bahwa atribut A,B,C adalah atribut dari sebuah relasi jika A -> B dan b -> C. Atau atribut A menentukan atribut C melalui atribut B dengan syarat atribut B harus sama.

NORMALISASI
Normalisasi adalah proses untuk mendapatkan struktur tabel yang lebih efisien dan terhindar dari anomali atau keanehan-keanehan data.
Tujuan Normalisasi , adalah:
1.      Mengoptimalkan struktur-struktur tabel.
2.      Meningkatkan kecepatan.
3.      Menghilangkan masukan data yang sama.
4.      Lebih efisien dalam penyimpanan.
5.      Mengurangi redudansi yaitu adanya penggandaaan data.
6.      Menghindari anomali yaitu adanya keanehan-keanehan dari data.
7.      Menjaga integritas data.
LANGKAH NORMALISASI
Dimulai dari bentuk yang tidak normal -> bentuk 1NF (menghilangkan atribut-atribut ganda) -> 2NF (menghilangkan dependensial partial) -> 3NF (menghilangkan dependency transitive) -> BCNF (menghilangkan ketergantungan penentunya bukan kunci candidate) -> 4NF (menghilangkan lebih dari satu dependency yang ganda) -> 5NF (mengatasi dependency ganda).

Selasa, 13 November 2012

QUERY LANGUAGE


QUERY LANGUAGE
Relational Query Languages
Query adalah sebuah kemampuan yang dapat digunakan untuk menampilkan suatu data database yang diambil dari tabel-tabel dari database namun tidak semua ditamplikan hanya tabel tertentu saja.
Diawali dari ERD kemudian diubah menjadi tabel pada model data relational, selanjutnya diterjemahkan ke dalam Query Language.
Bahasa Query dikelompokkan ke dalam dua kategori, yaitu:
  • Bahasa prosedural adalah bahasa yang membuat suatu urutan-urutan perintah tertentu. Yang termasuk bahasa query prosedural adalah aljabar relational.
  • Bahasa non prosedural adalah bahasa yang memberikan suatu penjelasan informasi namun tidak memberikan urutan informasi tertentu. Yang termasuk diantaranya adalah kalkulus relational.
Aljabar Relational
Adalah bahasa query prosedural yang terdiri dari beberapa operasi dimana apabila masukannya adalah satu atau dua relasi maka keluarannya adalah sebuah relasi baru yang merupakan hasil dari operasi tersebut.
Jenis-Jenis Operasi
-          Unary : operasi yang terdiri dari selection projection karena hanya dapat digunakan pada satu relasi saja.
-          Binary: operasi yang terdiri dari union,intersection dll.
Selection
Adalah operasi yang digunakan untuk menyeleksi tupel-tupel agar memenuhi suatu predikat yang dapat dikombinasi menjadi predikat majemuk dengan penghubung AND ataupun OR.
Projection
Adalah operasi yang digunakan untuk memperoleh kolom-kolom tertentu yang mengirim relasi argumen dengan kolom tertentu.
Notasi pada projection :
Π adalah simbol dari projection
A1, A2 adalah nama field
r adalah nama tabel.
Hasilnya adalah sebuah atribut-atribut yang ditampilkan beserta nilainya.
Operasi Cartesian-Produk (x)
Operasi yang digunakan untuk menghasilkan tabel hasil dari perkalian kartesian.
Union/Gabungan
Merupakan gabungan-gabungan yang terdiri dari dua tabel. Contohnya ada tabel A dan tabel B. Maka gabungannya adalah A U B.