Kamis, 20 Desember 2012

Optimasi Query dan Query Lanjutan


Kali ini saya akan memosting materi tentang apa yang telah saya peroleh pada perkuliahan Sistem Basis Data tentang Optimasi Query dan Query lanjutan.

Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau volumenya. Apabila tidak didukung dengan pengaksesan yang memadai maka akan mempengaruhi lambatnya kinerja suatu database.

Optimasi pada Perintah SQL
Optimasi dan perintah SQL sangatlah dibutuhkan karena fungsinya sangatlah besar dalam pengelolaan database. Untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Inti dari optimais query adalah meminimalisir jalur pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
Index digunakan untuk meningkatkan keepatan akses data pada database. Pada saat query dijalankan maka index aka mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk.
Contoh, misalkan digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut kota., provinsi dan kode pos dari table karyawan, sebagai berikut:
CREATE INDEX idx_kota_prov_kodepos
ON karyawan(kota, provinsi, kode_pos)
TABLESPACE INDX;
Kemudian user melakukan query sebagai berikut:
SELECT * FROM karyawan WHERE provinsi=”Jawa Barat”;
Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (kota) tidak digunakan dalam klausa WHERE.  Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut provinsi.
Contoh SQL perintah SQLnya sebagai berikut:
SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;
Apabila kita ingin membuat table lain yang memiliki urutan yang berbeda dari tabel asal, maka perintah SQLnya sebagai berikut:
CREATE TABLE karyawan_urut
AS SELECT * FROM karyawan ORDER by id;
Maksud dari  SQL di atas yaitu bahwa tabel karyawan_urut berisi data yang sama dengan tabel karyawan hanya datanya terurut berdasarkan kolom id.

Perencanaan Eksekusi
Cara melihat jalur akses yang akan digunakan database saat melakukan query yaitu menggunakan perintah explain plan, yang aka member informasi tentang rencana eksekusi dari suatu query. Informasi ini disimpan dalam tabel PLAN_TABLE yang terdapat di schema user yang mengeksekusi perintah tersebut.
Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
Faktor lain yang berpangaruh diantaranya yaitu optimasi aplikasi dan penggunaan cluster dan index. Hal yang akan dibahas dalam optimasi query berikut ini tidak melibatkan penggunaan komponen yang ada dalam arsitektur database engine.

Berikut penjelasan tentang Query Lanjutan
Tabel yang digunakan Pada Pembahasan
Bagian ini menjelaskan mengenari tabel yang digunakan pada pembahasan selanjutnya>
disini kita menggunakan 3 buah tabel untuk masing-masing struktur

Sub Query
Sub Query adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL statement yang lain. Berikut contoh peritah sub Query pada SQL:
SELECT select_list
FROM  table
WHERE expr operator (SELECT select_list FROM table);

Penggunaan SubQuery
Subquery mengembalikan nilai ke main query. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui. Berikut contoh penggunaan subQuery:
SELECT last_name FROM employees WHERE salary >
SELECT salary FROM employees WHERE employee_id=149);
Pembandingan Kolom
Pembandingan kolom dalam subquery banyak kolom dapat berupa:
-          Pembandingan berpasangan
-          Pembandingan tidak Berpasangan

Korelasi SubQuery
Digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query.


Sabtu, 24 November 2012

Dependency dan Normalisasi


Dependency dan Normalisasi
Materi yang telah saya peroleh yaitu tentang Dependency dan Normalisasi. Oke langsung aja ini pembahasannya
Functional Dependency
Functional Dependency (FD) merupakan ketergantungan yang terjadi antara atribut-atibut pada suatu entiti.
Notasi dari FD yaitu: A –> B, maksudnya yaitu atribut B tergantung pada atribut A.
Salah satu contohnya yaitu:
KodeMK –> NamaMK (artinya atribut NamaMK tergantung pada atribut KodeMK)
Macam-macam Dependency:
1. Full Dependency
Merupakan suatu ketergantungan dimana terdapat atribut A dan atribut B dalam satu relasi.
Contoh:
NIM –> Nilai (artinya yaitu Nilai tergantung pada atribut NIM)
dari contoh di atas Dapat disimpulkan bahwa 1 atribut menetukan pada 1 atribut
2. Partially Dependency
Yaitu suatu functional Dependency yang mana beberapa atribut pada A dapat dihilangkan tetapi ketergantunga terhadap atribut B masih dapat dipertahankan.
Contoh: NIM, nama –> idRuang (artinya idRuang tergantung pada NIM dan nama)
sehingga apabila nama dihilangkan, NIM masih terdapat ketergantungan dengan idRuang.
3. Transitive Dependency
Merupakan salah satu functional dependency dimana keterhubungan anatara A,B,C saling berkaitan. Transitive Dependency dapat dinotasikan A –> B dan B –> C, sehingga apabila kita ingin mengaitkan A –> C maka membutuhkan relasi dari B.
Contoh:
Id_Pelanggan –> {Nama, Salesman, Area}
Salesman –> Area
Normalisasi
Merupakan suatu teknik untuk menghasilkan sekumpulan relasi dengan sifat-sifat yang diinginkan.
Hal-hal yang menjadi dasar acuan dalam proses normalisasi adalah tujuan pembentukan basis data, diantanya harus menghilangkan hal-hal berikut:
a. pengulangan informasi
b. potensi inkosistensi data pada operasi update
c. hindari atribut yang tidak perlu disimpan
d. tersembunyinya informasi tertentu.
Ada beberapa langkah normalisasi diantaranya yaitu: Bentuk 1NF, 2NF, 3NF,BCNF, 4NF dan 5NF.
Namun pada postingan kali ini saya hanya akan mencoba menjelaskan sampai langkah 3NF saja.
1. 1NF
Merupakan sebuah relasi dimana setiap irisan antara baris dan kolom berisikan satu dan hanya satu nilai.
Cara unttuk UNF ke 1NF:
- Tunjuk satu atau sekumpulan atribut sebagai kunci untuk tabel unnormalizied.
- Identifikasi grup yang berulang dalam tabel unnormalized yang berulang untuk kunci atribut
- Hapus grup yang berulang dengan cara memasukkan data yang semestinya ke dalam kolom yang kosong pada baris yang berisikan data yang berulang atau dengan cara menggantikan data yang ada dengan copy dari kunci atribut yang sesungguhnya  ke dalam relasi terpisah.
2. 2NF
Merupakan sebuah relasi dalam 1NF dan setiap atribut non-primary-key bersifat fully functionally dependent pada primary key.
Langkah perubahan dari 1NF ke 2NF yaitu:
- Mengidentifikasi primary key untuk relasi 1NF.
- Mengidentifikasi functional dependency dalam relasi.
- Jika terdapat partial dependency terhadap primary key, maka hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinannya.
3. 3NF
Merupakan sebuah relasi dalam 1NF dan 2NF dimana tidak terdapat atribut non-primary-key attribute yang bersifat transitive dependent pada primary key.
Langkah-langkah perubahan dari 2NF ke 3NF:
- Mengidentifikasi primary key dalam relasi 2NF.
- Mengidentifikasi functional dependency dalam relasi.
- Jika terdapat transitive dependency terhadap primary key, hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinannya.

Selasa, 13 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
v  Relational Aljabar
~          tuple (unary) Seleksi, Proyeksi 
~            set (biner) Union, Intersection, Perbedaan 
~            tuple (biner) Join, Divisi
v  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.

Sabtu, 27 Oktober 2012

Tentang guru kulo Al Habib Abdul Hadi bin Zein Baraqbah

Tentang guru kulo Al Habib Abdul Hadi bin Zein Baraqbah


Sebenarnya sudah lama saya ingin menuliskan setiap perkataan dari guru saya al habib Abdul Hadi bin Zein Baraqbah tetapi kemalasan ini selalu menghalangi keinginan saya. Padahal sebuah ilmu itu perlu dicatat, supaya bisa dipelajari terus menerus dan manusia itu mempunyai sifat pelupa, bisa jadi gara-gara tidak dicatat yang ada ilmu yang didapat hilang entah kemana.

Guruku ini menurutku luar bisa tawadhunya, beliau jjuga dalam menyampaikan ilmunya tidak main-main, tidak asal ngomong. Yang beliau sampaikan kepada saya, pasti sudah dilakukan terlebih dahulu atau beliau sudah membuktikannya dahulu. Kadangkan ada yang memberi ilmu tetapi cuma "JARKONI"(ngaJAr oRa dilaKONI), itulah kenapa saya sangat mantep dengan beliau.

Selama saya berguru dengan beliau, alhamdulillah banyak perubahan yang saya alami yang paling mencolok perubahan dalam diri ini adalah yang dulunya saya tidak nurut sama orangtua sekarang agak mendingan.

Guruku sangat bermasyarakat, beliau bisa memposisikan keadaan ketika memberikan ilmunya. Dengan perumpaan-perumpaan yang tepat yang tidak menyinggung perasaan sang tamu. Adab beliau sama tamu saya acungi jempol deh, tua muda kaya miskin semuanya diterima dan dirangkul. Beliau juga sangat handal dalam memposisikan keadaan kalau ada yang tamu. Meskipun umurnya sudah terbilang sepuh, apabila yang datang atau bertamu anak muda beliau ajak bercanda dengan hal-hal yang bermanfaat, pokoknya salut sama beliau.

Selama ini baru kutemui guru seperti beliau, itu sebabnya yang membuat saya sering pulang ke Tegal.
Saya pulang ke Tegal yang pertama cuma ingin bertemu sama orangtua dan yang kedua sowan ke guru saya yaitu al habib Abdul Hadi bin Zein Baraqbah.
Do'a saya untuk beliau "Ya Allah dengan beliau lah aku merasa nyaman, aku merasa bahagia, aku merasa hidup itu bermakna, beliau lah yang mengenalkanku untuk lebih dekat dengan Mu dan Rosul maka berikanlah umur yang panjang untuk beliau, berilah kesehatan untuk beliau, aamiin".

Selasa, 23 Oktober 2012

Transformasi Model Data


Transformasi Model Data

Tak henti-hentinya dosen saya menyuruh saya untuk mengepostkan materi yang disampaikan, tapi dibalik semua itu ada hikmahnya yaitu menuntut saya untuk banyak-banyak membaca sehingga kemalasan pun mulai terkurangi.
Yupz langsung saja ke materi, pada pertemuan ke-5 kali ini saya akan mencoba menjelaskan beberapa ringkasan dari Transformasi Model Data.
- Entitas Kuat
Merupakan himpunan entitas yang dilibatkan dalam ERD merupakan entitas kuat dan tidak memiliki ketergantungan dengan entitas lain. Entitas kuat disimbolkan dengan persegi panjang dua garis, sedangkan entitas lemah disimbolkan dengan persegi panjang satu baris.
- Entitas Lemah
adalah suatu entity yang keberadaanya tergantung dari keberadaan entity lain dan tidak memiliki atribut yang dapat berfungsi sebagai key attribute.
- Agregasi
menggambarkan sebuah himpunan relasi yang secara langsung menghubungkan sebuah himpunan entitas dengan sebuah himpunan relasi dalam ERD, secara kronologi mensyaratkan telah adanya relasi lain dan relasi yang terbentuk tidak hanya dari entitas tapi juga mengandung unsur relasi lain.
Berikut contoh agregasi
- ERD direpresentasikan menjadi sebuah basis data secara fisik.
- Komponen ERD ditransformasikan menjadi tabel yang merupakan komponen utama pembentuk basis data.
- Atribut yang melekat pada masing-masing himpunan entitas dan relasi akan dinyatakan sebagai field dari tabel yang sesuai.
- Setiap himpunan entitas akan diimplementasikan segai sebuah tabel
- Relasi dengan derajat relasi 1-1 yang menghubungkan 2 buah himpunan entitas yang direpresentasikan dalam bentuk penambahan atribut-atribut relasi ke tabel yang mewakili salah satu dari himpunan entitas.
- Relasi degan derajat relasi 1-N yang menghubungkan 2 buah himpunan entitas juga akan direpresentasikan dalam bentuk penambahan atribut key dari himpunan entitas berderajat 1 ke tabel yang mewakili himpunan entitas berderajat N. Atribut key dari himpunan entitas berderajat 1 menjadi atribut tambahan bagi himpunan entitas berderajat N.
- Relasi dengan derajat N-N yang menghubungkan 2 buah himpunan entitas, diwujudkan dalam bentuk tabel khusus yang memiliki field yang berasal dari key-key dari himpunan entitas yang dihubungkan.
Impelentasi himpunan entitas lemah dan Sub entitas
Penggunaan himpunan entitas lemah dan sub entitas dalam diagram ER diimplementasikan dalam bentuk tabel sebagaimana himpunan entitas kuat. Perbedaannya yaitu, jika pada himpunan entitas kuat sudah dapat langsung menjadi sebuah tabel utuh/sempurna walaupun tanpa melihat relasinya dengan himpunan entitas lain, maka himpunan entitas lemah hanya dapat ditransformasikan menjadi sebuah tabel dengan menyertakan pula atribut key dari hasil implementasi himpunan entitas lemah.


Selasa, 02 Oktober 2012

Model Data Relational


           Setelah pada pertemuan ke-3 saya membahas materi Diagram E-R, selanjutnya untuk pertemuan kali ini yaitu pertemuan ke -4 saya akan mencoba membahas beberapa inti pada materi yang telah diberikan oleh dosen saya yaitu tentang Model Data Relational serta mencoba menyelesaikan tugas latihan 1 dan latihan 2.

Pengertian Model Data Relasional
             Model Data Relasional adalah suatu model basis data yang menggunakan tabel dua dimensi,  yang terdiri atas baris dan kolom untuk menggambarkan sebuah berkas data. Model ini menunjukkan cara mengelola/mengorganisasikan data secara fisik dalam memory sekunder, yang akan berdampak pula pada bagaimana kita mengelompokkan data dan membentuk keseluruhan data yang terkait dalam sistem yang kita buat.
Keuntungan Model Data Relasional
- Bentuknya sederhan
- Mudah melakukan berbagai operasi data (query, update/edit, delete).
Istilah dalam Model Data Relasional :
  • Relasi:Sebuah tabel yang terdiri dari beberapa kolom dan beberapa baris.
  • Atribut:Kolom pada sebuah relasi (field).
  • TupelBaris pada sebuah relasi (record).
  • DomainKumpulan nilai yang valid untuk satu atau lebih atribut
  • Derajat (degree)Jumlah atribut dalam sebuah relasi (jumlah field)
  • CardinalityJumlah tupel dalam sebuah relasi (jumlah record)

Berikut latihan yang dapat saya fahami dari pdf yang telah diberikan.
Latihan 1
Menentukan Relation Key dari diagram berikut



Jawab :
Diagram di atas terdiri dari 4 entitas yang akan menjadi empat tabel yaitu account, branch, customer, dan loan. Dimana tiap-tiap tabel mempunyai relation key tersendiri.
      a.      Entitas Account
  • Candidat key   : account_number dan balance 

  • Primary Key    : account_number 

  • Alternate Key  : balance 

  • Foreign Key     : -

b.      Entitas Branch
  • Candidat key   :branch_name,branch_city,assets 

  • Primay Key      : branch_name 

  • Alternate key  :branch_city,assets

c.       Entitas loan
  • Candidat Key   : loan_number,amount 

  • Primary Key    : loan_number 

  • Alternate Key  : amount

d.      Entitas Customer
  • Candidat Key  : customer_name, customer_city,customer _street 

  • Primary Key    : customer_name 

  • Alternate Key  : customer_city,customer_street

 Latihan 2
                                             Data Siswa
NIS
Nama
Jenis Kelamin
Kelas
110590
Aji Budianto
Laki-laki
XI
110591
Erbi Bagus Prabowo
Laki-laki
XI
110592
Hanif Fuadi Nurdin
Laki-laki
XII
110593
Arief Alfian Maulana
Laki-laki
XII
110594
Susi Susanti
Perempuan
X
110595
Chelsea Olivia
Perempuan
X
110596
Fuad Hari Aditya
Laki-laki
XII











                               Data Pelajaran
Kode
Nama Pelajaran
Nama Guru
01
PAI
Somari, S.Pd
02
Matematika
Sri Hastuti, S.Pd
03
B. Indonesia
Suntari, S.Pd
04
PKn
Sodikin, S.Pd
05
B. Inggris
Sobi, S.Pd








                     Data Guru
Kode Guru
Nama Guru
280693
Somari, S.Pd
280694
Sri Hastuti, S.Pd
280695
Suntari, S.Pd
280696
Sodikin, S.Pd
280697
Sobi, S.Pd

Yang menjadi Candidate key:
-          Siswa = NIS, Nama dan Kelas
-          Pelajaran = Kode, Nama Pelajaran, Guru.
-          Guru = NIP, Nama Guru.
Primary key:
-          Siswa = NIM
-          Pelajaran = Kode
-          Guru = Kode
Yang menjadi foreign key yaitu: Nama guru pada table pelajaran merujuk pada Nama guru pada table Guru
Berikut Diagram E-R-nya:
.