Selasa, 25 Desember 2012

SUBQUEY

Perkuliahan terakhir mata kuliah Sistem Basis Data, bapak dosen membahas tentang materi Subquery. Apa itu Subquery??

Subquey?? gampangnya, kita bisa mengartikan subquery adalah query didalam query. Tapi pengertian dari buku, subquery merupakan statement SELECT yang dilampirkan sebagai klausa dalam SQL.

Penulisannya adalah sebagai berikut :
SELECT.....             -->  main query
FROM.....
WHERE....... ( SELECT .......        --> subquery
                         FROM   ........ 
                         WHERE ......  )

Subquery mengembalikan nilai ke main query. Manfaat Subquery adalah untuk mendapatkan suatu nilai yang tidak diketahui.

Contoh subquery untuk menampilkan nama mahasiswa dan nilai pada tabel mhs dan ambilmk yang memiliki nilai tertinggi dalam kodemk dengan kode A02.

SELECT mhs.namamhs, ambilmk.nilai FROM mhs, ambilmk WHERE mhs.nim = ambilmk.nim AND ambilmk.kodemk = "A02" AND ambilmk.nilai = (SELECT max(nilai) FROM ambilmk WHERE ambilmk.kodemk = "A02").

Subquery banyak kolom
Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-colom. Pembanding kolom dalam subquery banyak kolom dapat berupa pambanding berpasangan dan pembanding tidak berpasangan.

Penggunaan subquery dalam klausa FROM
Query dapat diletakan didalam klausa FROM untuk membentuk tabel temporer. Query seperti ini dikenal dengan istilah inline view, karena tidak membentuk objek database.

Ekspresi scalar subquery
Ekspresi scalar subquery merupakan 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 subquery dapat digunakan dalam :
  • Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan CASE
  • Semua klausa dari SELECT statement kecuali GRUP BY
Korelasi Subquery
Korelasi subquery dapat digunakan untuk pemrosesan baris per baris. Tip-tiap subquery dijalankan sekali untuk seriap baris dari outer query.
Korelasi subquery juga dapat digunakan untuk Meng-update baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti ini dinamakan dengan Korelasi Update.
 Korelasi subquery juga dapat digunakan untuk manghapus baris pada satu table berdasarkan pada baris dari table lain, korelasi seperti ini dinamakan Korelasi Delete.

Penggunakan operator EXIST dan NOT EXIST
digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari subquery. Jika ditemukan maka pencarian tidak dilanjutkan dalam inner query dan kondisiditandai TRUE. Jika tidak ditemukan, maka kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query.

Penggunaan 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 tablescaape temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi.


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

Lanjut ke materi perkuliahan ke 7. Pada perkuliahan yang saya ikuti waktu sore hari lalu, ditengah derasnya hujan dan angin kencang (hehe), bapak dosen menjelaskan materi kuliah mengenai dependency dan normalisasi. Berikut ini sedikit rangkuman yang dapat saya tangkap dari penjelasan kemarin.

Functional Dependency (ketergantungan fungsional) : menggambarkan hubungan, batasan, keterkaitan antara atribut-atribut dalam relasi. Suatu atribut dikatakan fuctional dependency pada yang lain jika kita menggunakan harga tersebut untuk menentukan harga atribut lain. Functional dependency dapat digambarkan dengan tanda panah. Contoh :
  
Contoh diatas : dibaca A menentukan B, atau B tergantung pada A.

Selanjutnya adalah Macam-macam Dependency :
  • Function Dependency
    • Full Dependency (ketergantungan penuh) : ini artinya B memiliki ketergantungan fungsional secara penuh pada A. B bukan memiliki dependency terhadap subset A.
                    Contoh : terdapat sebuah tabel seperti dibawah ini

 

                               {NIM, Nama} --> idRuang bukan merupakan Full Dependency. agar menjadi Full
            Dependency atribut Nama dihilangkan. Menjadi : NIM --> idRuang.
    • Partially Dependency (ketergantungan parsial) : B memiliki ketergantungan terhadap subset A. 
                    Contoh : terdapat sebuah tabel seperti dibawah ini

 

                              {NIM, Nama} --> idRuang merupakan partially dependency. Dimana jika salah 
                               satu atribut dihilangkan (Nama dihilangkan), maka ketergantungan masih tetap
                               ada.

    • Transitive Dependency : A menentukan B, B menentukan C. Jadi bisa dikatakan A menentukan C melalui B.
                    Contoh : terdapat sebuah tabel seperti dibawah ini

 

                           NIP --> kdCabang, kdCabang --> almCabang. Jadi NIP menentukan almCabang 
                           melalui kdCabang.

Sekarang kita berlanjut ke Normalisasi.. Masih bingung juga saya... Tapi ini sedikit materi yang bisa saya rangkum.

Normalisasi : adalah proses untuk mendapatkan struktur tabel atau relasi yang efisien dan bebas dari anomali. Sehingga sebagian ambiguitas dalam struktur data bisa dihilangkan.

Berikut ini ada beberapa alasan mengapa kita melakukan normalisasi :
  1. Optimalisasi struktur-struktur tabel
  2. Meningkatkan kecepatan
  3. Menghilangkan pemasukan data yang sama
  4. Lebih efisien dalam penggunaan media penyimpanan
  5. Mengurangi redudansi (penggandaan data)
  6. Mengindari anomali
  7. Integritas data yang ditingkatkan
Terdapat beberapa bentuk normalisasi yang biasa digunakan yaitu :
  1. First normal form (1NF)
  2. Second normal form (2NF)
  3. Third normal form (3NF)
  4. Boyce-codd normal form (BCNF)
  5. Four normal form (4NF)
  6. Five normal form (5NF)
Dari 6 bentuk normalisasi diatas, saya hanya akan menjelaskan poin 1 - 3. yang poin 4 - 6 insya alloh akan  saya jelaskan pada postingan berikutnya.

1NF (Bentuk normal Pertama)
adalah suatu keadaan yang membuat setiap perpotongan baris dan kolom dalam relasi hanya berisi satu nilai, atau tidak ada dua value dalam satu atribut.

2NF (Bentuk normal kedua)
Bentuk normal 2NF terpenuhi jika memenuhi 1NF, dan semua tribut selain primary key, secara utuh memiliki Functional Dependency pada primary key. Jika ada tribut yang tidak mempunyai ketergantungan pada primary key, maka dihapus.

3NF (Bentuk normal ketiga)
Bentuk normal 3NF terpenuhi jika memenuhi 2NF, dan juga tidak ada atribut non primary key yang tidak memiliki ketergantungan terhadap atribut non primary key yang lainnya ( ketergantungan transitif).

Rabu, 14 November 2012

Query Language

Query language atau Bahasa Query adalah bahasa khusus yang digunakan untuk melakukan query (perintah-perintah untuk mengakses data) pada sistem basisdata.
Bahasa Query dapat dikategorikan menjadi 2, yaitu :
  1. Bahasa prosedural : identik dengan aljabar relational. Bahasa prosedural merupakan suatu bahasa yang membuat suatu urutan instruksi.
  2. Bahasa non prosedural : identik dengan kalkulus relational dan kalkulus relasional tupel. Bahasa non prosedural mendeskripsikan informasi tanpa memberikan urutan instruksi.

Bahasa DBMS :

  • Data Definition Language (DDL) : Mendefinisikan skema dan penyimpanan disimpan dalam Data Dictionary. 
  • Data Manipulasi Bahasa (DML) : Manipulatif mengisi skema, update database, retrieval query isi database.
  • Data Control Language (DCL) : Perizinan, akses kontrol dll.
   
Query Operators
  • Relational Aljabar
    •   tuple (unary) Seleksi, Proyeksi 
    •   set (biner) Union, Intersection, Perbedaan 
    •   tuple (biner) Join, Divisi
  • Additional  Operator 
    • Outer Join, Uni Outer


Aljabar Relational
Aljabar relasional merupakan suatu bahasa query procedural  yang memiliki satu atu dua masukkan dan menghasilkan sebuah keluaran dari  operasi tersebut. Ada dua operasi pada aljabar relasional yaitu operasi dasar dan operasi tambahan
  • Operasi Dasar  : terdiri atas select, project, cross, union, intersection, subdifference, rename,Cartesian product
  • Operasi Tambahan  : terdiri atas set intersection,tetha join , natural join, division

Jenis-jenis Operasi
  • Unary  : suatu operasi yang hanya digunakan pada suatu relasi
  • Binary  : suatu operasi yang memerlukan sepasang relasi
Selection
Selection merupakan suatu operasi untuk menyeleksi tupel-tupel yang memenuhi suatu predikat.

Projection
Projection merupakan sebuah operasi unary yang digunakan untuk memperoleh kolom-kolom tertentu.

Kamis, 25 Oktober 2012

Transformasi Model Data

Model data relational lanjut
  •  Varian entitas, terdiri dari :
    • Entitas kuat : suatu entitas yang keberadaannya tidak tergantung pada entitas lain.
    • Entitas lemah : suatu entitas yang keberadaannya tergantung pada entitas lain. Entitas lemah tidak memiliki atribut yang dapat berfungsi sebagai atribut kunci.
    • Contoh entitas kuat dan lemah :
    • Pada gambar diatas, hobi merupakan entitas lemah, karena entitas hobi tergantung pada entitas mahasiswa.
  • Agregasi : menggambarkan sebuah himpunan relasi yang secara langsung menghubungkan sebuah entitas dengan sebuah himpunan relasi dalam ERD. Contoh agregasi :
 
Transformasi Model Data ke Basis Data Fisik

Komponen ERD ditransformasikan menjadi tabel yang merupakan komponen utma pembentuk basis data. Kemudian atribut yang melekt pada masing-masing himpunan entitas dan relasi dinyatakan sebagai field dari tabel yang sesuai.
Terdapat beberapa transformasi model data ke basis data fisik, yaitu :
  1. Transformasi Dasar : setiap himpunan entitas akan diimplementasikan sebaga sebuah tabel
  2. Relasi 1-1 menghubungkan dua buah entitas yang diwujudkn dalam bentuk penambahan atribut-atribut relasi ke tabel yang mewakili salah satu dari kedua himpunan entitas.
  3. Relasi 1-N menghubungkan dua buah himpunan entitas, direpresentasikan dalam bentuk pemberian atribut key dari himpunan entitas yang berderajat 1 ke tabel yang mewakili himpunan entitas berderajat N.
  4. Relasi N-N menghubuungkan dua buah himpunan entitas, diwujudkan dalam bentuk table khusus yang memiliki field/foreign key yang berasal dari key-key dari himpunan entitas yang dihubungkan.