Minggu, 30 Desember 2012

Optimasi Query

Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau voluenya. kalau tidak didukung dengan kecepatan akses yang memadai maka akan menurun untuk kerjanya. Ukuran untuk kerja dalam hal ini  kecepatan akses data dipengaruhi oleh banyak faktor. 

  • Optimasi Pada Perintah SQL

 Desain aplikasi saja tidak cukup untuk meningkatkan untuk kerja harus didukung dengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Dalam desain database untuk menampilkan hasil query dibutuhkan pencarian melibatkan struktur fisik penyimpanan data.
Inti dari optimasi query adalah meminialkan jalur pencarian untuk meneukan data yang disimpan dari lokasi fisik.

  • Perencanan Eksekusi 

Pada database oracle ,informasi ini dapat dilihat dengan menggunakan perintah explain plan, yang akan memberi informasi tentang rencana eksekusi suatu query. Informasi ini disimpan dalam tabel PLAN tabel yang terdapat pada schema user yang mengeksekusi perintah tersebut.

  • Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data

faktor yang berpengaruh terhadap kecepatan akses data tidak hanya pada optimasi perintah SQL,tapi terhadap hal-hal lain yang berpengaruh . Diantaranya adalah optimasi aplikasi dan penggunaan cluster index.

  • Optimasi Aplikasi

Dalam pebuatan aplikasi ,yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien,yang dapat mendukung kecepatan akses seperti index dan cluster. Apakah desain database .sudah elakukan normalisasi data secara tepat.

  • Cluster dan Index

Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dala suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel ana saja yang sering di query secara bersamaan menggunakan perintah SQL.
Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, aka harus digunakan index  yang melibatkan kolom tersebut. Penggunaan index yang bergantung pada jenis nilai yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdpat dalam kolom yang akan diindex. Dalam RDMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervarriasi sedangkan untuk nilai yang tidak memiliki cukup variasi ,lebih baik menggunakan index bitmap.


SubQuery

  • Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL statement yang lain. Subquery digunakan untuk mengembalikna nilai ke main query. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui .
  • Pada subquery banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple row dan multiple column.Pembandingan kolom dalam subquery banyak kolom dapat berupa  Pembandingan berpasangan (Pairwise Comparison SubQuery) dan Pembandingan tidak berpasangan (NonPairwise Comparison SubQuery)
  • Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel teporer. Query seperti ini dikenal dengan istilah inline view, karena tidak membentuk object database.
  •  Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiapsubquery dijalankan sekali untuk setiap baris dari outer query.
  • 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.
  • 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. 

Sabtu, 29 Desember 2012

Structured Query Language (SQL)


  • Pengenalan SQL
SQL pertama kali diterapkan pada sistem R (sebuah proyek riset pada laboratorium riset San Jose, IBM). Kini SQL juga dijumpai pada berbagai platform, dari mikrokomputer hingga mainframe. SQL dapat digunakan baik secara berdiri sendiri maupun dilekatkan pada bahasa-bahasa lain seperti C dan Delphi. SQL juga telah menjadi bagian dari sejumlah DBMS, seperti Oracle, Sybase, MySQL dan Informix

  • Elemen dasar SQL

Elemen dasar SQL mencakup pernyataan, nama, tipe data, konstanta, ekspresi, dan fungsi bawaan
1. Pernyataan 
    adalah perintah SQL yang meminta sesuatu tindakan kepada DBMS. SQL memiliki kira-kira 30 pernyataan.  diantaranya adalah
ALTER      : mengubah struktur tabel
 COMMIT   : mengakgiri sebuah eksekusi transaksi
  CREATE    : menciptakan tabel, indeks atau pandangan
     DELETE    : menghapus baris pada tabel
     DROP        : menghapus tabel, index, atau pandangan
2. Nama
    Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel  kolom dan pengguna
3. Tipe Data
Setiap data memiliki tipe data.Berikut adalah tipe data dalam My SQL. Tipe data numerik diantaranya adlah TINYINT(nilai integer yang sangat kecil),SMALLINT(nilai integer yang kecil), MEDIUMINT(intege dengan nilai medium).
4. Konstanta
Konstanta menyatakan nilai yang tetap5. Ekspresi Segala sesuatu yang menghasilkan nilai ekspresi digunakan untuk menghitung nilai
.6. Fungsi Agregat
adalah fungsi standar di dalam SQL, suatu fungsi yang digunakan untuk melakukan summary, fungsi statik standar yang dikenakan pada suatu tabel  atau query.

  • Kelompok Pernyataan SQL

Pernyataan SQL dapat dikelompokkan menjadi 3 kelompokk yaitu DDL,DML dan DCL.
1. DDL(Data Definition Language)
merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data,tabel, atribut kolom ,dll.Yang termasuk dalam DDL dalah CRETE ,ALTER,DROP.
2. DML (Data Manipulation Language)
adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data misalnya untuk pengambilan,penyisipan ,pengubahan , dan penghapusan data. Perintah yang termasuk dala DML adalah INSERT, DELETE, UPDATE,SELECT.




Rabu, 28 November 2012

Dependency dan Normalisasi

Untuk kali ini kita akan membahas tentang dependency dan normalisasi. Sebelum normalisasi, terlebih dahulu kita harus bisa menentukan functional dependency.
  • Functional Dependency
    Functional Dependency menggambarkan hubungan, batsan, keterkaitan antara atribut-atribut dalam relasi. Suatu atribut dikatakan functionally dependent terhadap yang lain jika menggunakan harga atribut tersebut untuk menentukan harga atribut yang lain. Simbol yang digunakan untuk Functional Dependency adalah tanda panah.

    Gambar diatas menunjukkan B memiliki ketergantungan terhadap A.

    Macam-macam Dependency

    1.Full Functional Dependency
       Jika terdapat atribut A dan B dalam suatu relasi,bilamana B memiliki ketergantungan fungsional secara penuh pada A, B tidak memiliki dependensi terhadap subset A.

    2. Partially Dependency
        Ketergantungan Fungsional dimana beberapa atribut dapat dihilangkan dari A dengan ketergantungan tetap dipertahankan. B memiliki dependensi terhadap subset A.

    3. Transitive Dependency
        Tipe functional dependency yaitu dimana A,B,dan C adalah atribut sebuah relasi dimana A->B dan B->C. Maka C dikatakan transitive dependency terhadap A melalui B.

  • Normalisasi 
    adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity dapat dihilangkan. Perlunya dilakukan normalisasi adalah untuk mengeliminasi adanya duplikasi informasi. Selain itu memudahkan pengubahan struktur pada tabel dan juga memperkecil pengaruh perubahan struktur database.
    Alasan lain dilakukannya normalisasi :
    1. Meningkatkan kecepatan
    2.  Lebih efisien dalam penggunaan media penyimpanan
    3. Menghindari anomali (insertion anomalies, deletion anomalies, update anomalies)
    4.Integritas data yang ditingkatkan

    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)

    Langkah-langkah normalisasi :


    *Normalisasi 1NF
       Suatu keadaan yang membuat setiap perpotongan baris dan kolom dalam relasi hanya berisi satu nilai. Mendefinisikan atribut kunci ,tidak adanya group berulang dan semua atribut bukan kunci tergantung pada atribut kunci.

    *Normalisasi 2NF
      Sudah memenuhi dalam bentuk normal ke satu. Sudah tidak ada ketergentungan parsial dimana seluruh field hanya tergantung pada sebagian field kunci.

    *Normalisasi 3NF
      Sudah berada dalam normal bentuk kedua. Tidak ada ketergantungan transitif ,dimana field bukan kunci tergantung pada field bukan kunci lainnya.


Rabu, 14 November 2012

Query Language

Bahasa query merupakan bahasa yang digunakan user untuk meminta/mendapatkan informasi atau data dari basis data bisa juga diartikan bahasa untuk mengakses data pada sistem basis data.

Bahasa query dikelompokkan menjadi dua bagian,yaitu :

  1. Bahasa Prosedural
    Bahasa prosedural merupakan bahasa yang membuat suatu urut-urutan instruksi.
    Aljabar relational termasuk dalam bahasa prosedural.
  2. Bahasa Non Prosedural
     Bahasa Non Prosedural merupakan bahasa yang hanya mendiskripsikaniformasi yang diinginkan tanpa mendefinisikan instruksi/prosedur untuk memperoleh informasi.
    Aljabar Relational dan Kalkulus Relational merupakan bahasa non prosedural
Aljabar Relational

Bahasa Query yang didasarkan pada opersi-operasi dalam aljabar relational. Aljabar Relational  merupakan bahasa query yang prosedural. Bahasa queri prosedural terdiri dari beberapa operasi yang apabila masukkannya terdiri dari beberapa atau satu relasi maka keluarannya adalah sebuah relasi baru hasil dari operasi tersebut.

Ada dua jenis operasi, yaitu 
  • Operasi Unary
    adalah opersai yang terdiri dari satu relasi, beroperasi pada sebuah tabel/relasi antara lain
    - Selection
    - Projection
  • Operasi Binary
    adalah operasi yang memerlukan sepasang atau sejumlah relasi,antara lain
    - Cartesian-Product
    - Union
    - Set-Difference
  1. Selection
    merupakan operasi yang digunakan untuk memperoleh tupel-tupel dari suatu relasi yang memperoleh predikat tertentu. Beberapa predikat dipakai dalam predikat majemuk menggunakan predikat AND atau OR. Predikat mengacu pada kondisi yang ingin dipenuhi dalam operasi seleksi.
    Simbol selection adalalah σ (sigma)
  2. Projection
    merupakan operasi untuk memperoleh atribut-atribut tertentu dari suatu relasi.
    Simbol projection adalah π (pi)
  3. Cartesian-Product
    merupakan operasi yang menghasilkan suatu relasi dari dua relasi yang terdiri dari kombinas tupel-tupel.
    Simbol cartesian-product adalah X (cross)
  4. Union
    merupakan operasi yang membentuk suatu relasi yang terdiri dari tupel-tupel yang berada pada salah satu relasi atau pada kedua relasi.
    Simbol union adalah  U (gabungan)
  5. Set-Difference
    merupakan operasi yang membentuk suatu relasi yang terdiri dari tupel-tupel yang berada pada relasi pertama dan tidak berada pada relasi kedua atau kedua-duanya.
    Simbol set-difference adalah - (minus)




Sabtu, 27 Oktober 2012

Transformasi Model Data



  • Entitas Kuat adalah himpunan entitas yang dilibatkan dalam ERD. Entitas Kuat tidak memiliki ketergantungan dengan himpunan entitas lainnya.
  • Entitas Lemah adalah entity dimana keberadaannya bergantung dari keberadaan entity lainnya. Entitas lemah tidak memiliki atribut yangg 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. Relasi terbentuk tidak hanya dari entitas melainkan juga mengandung relasi lain.
  • Tranformasi Model Data Ke Basis Fisik
          Dalam transformasi model data ke basis fisik,ERD dipresentasikan menjadi sebuah basis data secara fisik. Komponen ERD (himpunan entitas dan relasi) ditransformasikan menjadi tabel yangg merupakan komponen utama pembentukan basis data. Atribut yang melekat  pada masing-masing himpunan entitas dari relasi akan dinyatakan sebagai field dari tabel yang sesuai. Setiap himpunan entitas untuk transformasi dasar akan diimplementasikan sebagai sebuah tabel.
  1. Relasi dengan derajat relasi 1-1 yang menghubungkan dua buah himpunan entitas akan dipresentasikan dalam bentuk penambahan/penyertaan atribut-atribut relasi ke tabel yang mewakili salah satu dari kedua himpunan entitas.
  2. Relasi dengan derajat relasi 1-N yang menghubungkan dua entity akan direpresentasikan dalam bentuk pencantuman atribut key dari himpunan entitas berderajat 1 ke tabel yang mewakili himpunan entitas berderajat N.
  3. Relasi dengan derajat relasi N-N yang menghubungkan dua himpunan entitas, diwujudkan dalam bentuk tabel khusus yang memiliki field yang berasal dari key-key dari himpunan entity yang dihubungkannya.
Di atas merupakan macam-macam relasi dengan derajat relasi yang berbeda-beda.

  • Implementasi Himpunan Entitas Lemah dan Sub Entitas 
Penggunaan Entitas Lemah dan Sub Entitas dalam diagram Er diimplementasikan dalam bentuk tabel sebagaimana himpunana entitas kuat. Yang membedakan adalah Entitas kuat sudah dapat langsung menjadi sebuah tabel utuh walaupun tanpa melihat relasinya. Sedangkan entitas lemah hanya dapat ditransformasikan menjadi sebuah tabel dengan menyertakan atribut key dari hasil implementasi himpunan entitas lemah.



          

         

Minggu, 30 September 2012

Model Data Relational

Setelah minggu kemarin kita belajar tentang entity relationship diagram,kali ini kita akan membahas tenteng Model Relationship.

Model Data Relatioonship adalah kumpulan tabel yang berdimensi dua dalam tabel tersebut terdapat baris pada lajur mendatar (row/record) dan kolom pada lajur vertikal (column/field).

Berikut adalah istilah-istilah dalam sistem basis data relational :

  1. Relasi adalah tabel  yang terdiri ari baris dan kolom. Relasi memiliki hubungan diantara sejumlah entitas yang berasal dari himpunana entitas yang berebeda. Entitas merupakan individu yang mewakili sesuatu yang dapat dibedakan dari individu lain.
  2. Atribut adalah kolom dalam sebuah relasi. Tiap entitas memiliki atribut yang mendeskripsikan karakter dari entitas tersebut.
  3. Tuple adalah baris dalam sebuah relasi yang menginformasikan suatu entitas secara komplit. Satu record mewakili satu data dari seseorang.
  4. Domain adalah tipe data nilai untuk satu atau lebih atribut.
  5. Degree adalah jumlah atribut (kolom) dalam relasi.
  6. Cardinalty adalah jumlah tuple (baris) dalam relasi.
                Relasi 

NIM
Nama mahasiswa
Jurusan
998657373
Aulia Risanti
Teknik Informatika
435343343
Vita Cahyani
Teknik Sipil
777541108
Abdi Mahendra
Teknik Mesin

Keteranagan : Mahasiswa adalah nama relasi.
                      NIM dan Nama Mahasiswa adalah nama atribut
                      String adalah nama dari atribut

Mendefinisikan Domain
1. Memberikan nama pada domain yang sesuai dengan nilai yang akan dimiliki domain.
2. Menentukan tioe dari nilai data yang akan membentuk domain 
3. Menentukan format  dari domain.

Relational Key
  • Super key         : Kumpulan kolom secra unik mengidentifikasi kolom dalam relasi.
  • Candidat Key   : Kolom yang membedakan satu baris dengan lainnya.
  • Primary key      : Satu atribut atau satu set minimal atribut yang tidak hanya mengidentifikasikan suatu kejadian spesifik tapi juga dapat mewakili setiap kejadian dari suatu entitas.
  • Alternate Key   : Candidat key yang tidak dipakai atau dipilih primary key.
  • Foreign Key     : Atribut dengan domain yang sama yang menjadi kunci utama pada sebuah relasi tetapi pada relasi lain atribut tersebut hanya sebagai atribut biasa.

NIK
Nama
Alamat
998657373
Aulia Risanti
Semarang
435343343
Vita Cahyani
Jakarta
777541108
Abdi Mahendra
Bandung

Keterangan : NIK merupakan primary key
                    Nama dan Alamat merupakan alternate key
                    NIK, Nama, Alamat merupakan candidat

Batasan- batasan Integritas
  • Batasan-batasan yang diberikan terhadap suatu relasi.
  • Ditetapkan ketika schema didefinisikan
  • Di cek ketika relasi-relasi dimodifikasi atau dimanipulasi (penambahan, pengubahan, penghapusan dan pencarian/ menampilkan data).

Relational Integrity Rules
  1. Null adalh nilai suatu atribut yang tidak diketahui dan tidak cocok untuk baris tersebut. Nilai konstanta digunakan untuk menyatakan atribut-atribut yang nilainya memang belum siap/ tidak ada.
  2. Entity Integrity adalah tidaka ada satu pun komponen primary key yang bernilai null.
  3. Referential Integrity adalah suatu domain yang dapat dipakai sebagai kunci primer bila merupakan atribut tunggal pada domain yang bersangkutan

Latihan 1



Relation key-nya :
  • Primary key     : Accoun- number, loan-number,branch-name,customer name 
  • Candidat Key  : loan-number, customer city, customer name, branch city, branch name, account number.
  • Alternate key   : customer city ,branch city
  • Foreign key      : account-number, loan-number


Latihan 2


Buatlah tabel-tabel dan keterhubungannya :
  1. Siswa, Pelajaran, Guru, dengan minimal masing-masing tabel mempunyai 5 record/tuple/baris.
  2. Buat tabel baru untuk keterhubungannya
  3. Tunjukkan atribut kunci yang ada
  4. ERD

  • Tabel Siswa

NIS
Nama_Siswa
Tanggal_Lahir
Jenis_Kelamin
4490456
Desyana Kartika
23-11-1993
Perempuan
4490021
Nera Aida
08-01-1992
Perempuan
4490001
Farhan Nur Ahmad
24-08-1992
Laki-laki
4490113
Caesa Aulia
29-01-1993
Perempuan
4490334
Luluk Pujiarto
14-04-1993
Laki-laki

          Tabel Guru

NIP
Nama_Guru
No_HP
12051990001
Muhammad ridwan
085778909119
05061986002
Siti Nafiatun
081677890117
12121966008
Nila Sugandi
088817680966
09021977006
Erno Cahyono
085640778146
07021956004
Ahmad Nur Amin
085776236089
       
          Tabel Pelajaran


Kode_Pelajaran
Nama_Pelajaran
9002
Bahasa Jawa
5677
Matematika
9900
Bahasa Perancis
2230
Sosiologi
8933
Ekonomi
  • Tabel Keterhubungan
NIS
Nama_Siswa
Kode_Pelajaran
NIP
Nilai
4490456
Desyana Kartika
2230
12121966008
70
4490021
Nera Aida
8933
05061986002
65
4490001
Farhan Nur Ahmad
5677
12051990001
80
4490113
Caesa Aulia
9002
07021956004
76
4490334
Luluk Pujiarto
9900
09021977006
90

  • Atribut kunci :
  1. Candidate Key  : Nama_Siswa, NIS, NIP,  Tanggal_Lahir,  Nama_Guru , No_Hp ,Nama_Pelajaran, Kode_Pelajaran.
  2. Primary Key    : Kode_Pelajaran, NIS, NIP
  3. Alternate Key  : Nama_Pelajaran, No_HP, Tanggal_Lahir, Nama_Guru, Nama_Siswa
  4. Foreign Key    : NIP, Kode_Pelajaran, NIS

  • ERD