Senin, 07 Januari 2013

Post 9 : Optimasi Query

OPTIMASI PERINTAH QUERY

               Dalam mendesain database untuk menampilkan hasil query dibutuhkan pencarian yang harus melibatkan struktur fisik penyimpanan data. Intinya adalah untuk meminimize kan "jalur" pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
               Indeks pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, indeks mencari data dan menentukan nilai ROW ID yang membantu menemukan lokasi data secara fisik di disk. Dan sebaliknya jika penggunaan tidak tepat tidak akan meningkatkan untuk kerja , dalam hal ini kecepatan akses data.


misal digunakan index melibatkan 3 buah kolom yang mengurutkan kolom menurut nim ,nama dan prodi dari tabel mahasiswa :
CREATE INDEX idx_nim_nama_prodi

ON mahasiswa ( nim, nama, prodi)
TABLESPACE INDEX;

Kemudian user melakukan query :
SELECT *FROM mahasiswa WHERE prodi='Elektro';

PERENCANAAN QUERY

             Ketika ingin melihat jalur akses yang akan digunakan database saat melakukan query yaitu menggunakan perintah explain plan tujuannya adalah untuk memberi informasi tentang perencanaan eksekusi dari suatu query. Dan disimpan dalam tabel PLAN_TABLE yang ada di schema user yang mengeksekusi perintah tersebut.


Sebelum melakukan perintah explain plan, buat table
PLAN_TABLE dengan menggunakan script utlxplan.sql yang diambil dari
\%ORACLE_HOME%\RDBMS\ADMIN.

Setelah itu tabel PLAN_TABLE dapat digunakan :

SQL> explain plan
Set statement_id=’test1’
Into plan_table for
Select * from karyawan where gaji=2000000;
Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama test1 yang
terdefinisi pada kolom statement_id.


FAKTOR LAIN YANG BERPENGARUH TERHADAP KECEPATAN AKSES DATA


Di antaranya adalah:
1. Optimasi Aplikasi

2. Penggunaan cluster dan index

OPTIMASI APLIKASI

- Koefisien akses data (meliputi kecepatan akses seperti index atau cluster)
- Normalisasi
- Denormalisasi

CLUSTER DAN INDEX


           Pengertian Cluster itu sendiri adalah suatu segment yang menyimpan data dari tabel yang berbeda
dalam suatu struktur fisik disk yang berdekatan. bermanfaat untuk
akses data dari beberapa tabel yang sering di-query.

           Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang
berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom
tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam
kolom yang akan diindex.




Rabu, 19 Desember 2012

Post 8 : Query Lanjutan

Komponen SQL
Berdasarkan fungsinya, bahasa basis data (SQL/Query) dibagi
menjadi 3 komponen utama, yaitu :
1. DDL (Data Definition Language)
DDL adalah bagian dari SQL yang dipergunakan untuk
mendefinisikan data dan objek database. Perintah yang tergolong DDL
adalah CREATE, ALTER, dan DROP.
2. DML (Data Manipulation Language)
DML adalah bagian dari SQL yang dipergunakan untuk memanipulasi
data dalam tabel/record-record dari table. Jenis perintah yang tergolong
DML adalah SELECT, INSERT, UPDATE, dan DELETE

Query Lanjutan

Subquery merupakan Subquery adalah statement SELECT yang
dilampirkan sebagai klausa dalam SQL Statement yang lain.
Untuk penulisan subquery pada SQL

Penggunaan Subquery
Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui



Tipe Perbandingan Pada Subquery
- Perbandingan Berpasangan
- Perbandingan Tidak Berpasangan

Penggunaan Query Dalam Klausa From
Query semacam ini dikenal juga dengan istilah inline view, karena tidak membentuk
object database.


EKSPRESI SCALAR SUBQUERY
Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai
kolom dari satu baris.


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

Proses dari Korelasi
Mengambil baris dari outer query kemudian menjalankan inner query untuk quality / disquality baris kandidat
selanjutnya menggunakan nilai dari inner querry quality/disquality baris kandidat dan kembali lagi ke awal.



Penggunaan Operator Exist dan Non Exist
Operator EXISTS dan NOT EXIST digunakan untuk menguji keberadaan dari
baris dalam himpunan hasil dari subquery.

Penggunaan Klausa With
Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang
sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query.





Sabtu, 24 November 2012

Post 7 : Dependency & Normalisasi

     Dependency itu sendiri mempunyai arti "Ketergantungan" dan Normalisasi adalah "Proses Menormalkan"
  • Functional Dependency
Atau disebut juga dengan Ketergantungan Fungsional. Suatu atribut dikatakan Functionally Dependent jika menggunakan harga atribut untuk menentukan harga atribut yang lain.
Semisal notasi : A => B
A dan B adalah atribut dari sebuah tabel.
Dibaca, A secara fungsional menentukan nilai pada B atau B bergantung pada A.

Example :

Ketergantungan fungsionalnya pada tabel Pemasok adalah ...
No_Pemasok => Nama_Pemasok
  • Macam - Macam Dependency
Funnctional Dependency
- Full Functional Dependency
- Partially Dependency
- Transitive Dependency

1. Full Dependency (Ketergantungan Penuh)
    Jika terdapatatribut A dan B suatu relasi, berarti :
- B memiliki ketergantungan fungsional penuh terhadap A
- B bukan memiliki dependensi terhadap A

Example:

Berarti, {NIM, nama} => idRuang bukan Full Dependency , 
tapi jika nama dihilangkan, maka NIM => idRuang bisa Full Dependency

2. Partially Dependency (Ketergantungan Parsial)
    Dimana beberapa atribut dapat dihilangkan dari A dengan ketergantungan tetap dipertahankan.


NIM, nama => idRuang , dimana jika nama dihilankan maka ketergantungan tetap ada.

3. Transitive Dependency (Ketergantungan Transitif)
    Dimana kondisi A,B,C adalah atribut sebuah relasi A=>B dan B=>C .Maka C dikatakan sebagai transitive dependency terhadap A melalui B.
    Jika C=>A asal melalui B.


Nip => {Nama, Jabatan, Gaji, KdCabang, AlmCabang}
KdCabang => AlmCabang
  • NORMALISASI
                    Merupakan suatu proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.

# Alasan mengapa dilakukan normalisasi :
- Optimalisasi struktur-struktur tabel
- Meningkatkan kecepatan
- Menghilangkan pemasukan data yang sama
- Lebih efisien dalam penggunaan media penyimpanan
- Mengurangi redundansi
- Menghindari anomali (insertion anomalies, deletion anomalies, update anomalies)
- Integritas data yang ditingkatkan

# Bentuk normalisasi yang digunakan :
- First normal form (INF)
- Second normal form (2NF)
- Third normal form (3NF)
- Boyce-codd normal form (BCNF)
- Four normal form (4NF)
- Five normal form (5NF)

# Langkah-Langkah Normalisasi :


1NF - Bentuk Normal Pertama
Suatu keadaan yang membuat setiap perpotongan baris dan kolom dalam relasi hanya berisi satu nilai.
Tidak diperbolehkan ada atribut yang bernilai banyak (Multivalued Attribut), dan attribut komposit atau kombinas keduanya.

Example :

UnNormalized Form (UNF)


Memenuhi 1NF


2NF - Bentuk Normal Kedua
Bentuk normal ini terpenuhi jika memenuhi bentuk 1NF, dan semua atribut selain primary key, secara utuh memiliki Functional Dependency pada Primary Key.
Dan sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungan hanya bersifat parsial dari primary key.
Kemudian jika tidak memiliki ketergantungan pada primary key, maka atribut harus dipindah atau dihilangkan.

Example :

{No_peg, No_Klien} => {Nama_peg, Nama_Klien}


Kemudian dibagi lagi menjadi :


Dan antara No_peg dan No_klien digabung menjadi :


3NF - Bentuk Normal Ketiga
Terpenuhi jika :
- telah memenuhi bentuk 2NF
- tidak ada atribut non prmary key yang memiliki ketergantungan pada atribut non primary key yang lainya (ketergantungan transitif)

Example :


Tabel di atas memenuhi syarat 2NF tetapi tidak memenuhi 3NF

NIM => {NamaMhs, Jalan, Kota, Provinsi, KodePos}
KodePos => {Kota, Provinsi}

NIM => {NamaMhs, Jalan, KodePos}          , sebagai Tabel Mahasiswa
KodePos => Provinsi, Kota                           , sebagai Tabel KodePos

TABEL MAHASISWA


TABEL KODE POS


Selasa, 20 November 2012

Post 6 Query Language


Query Language merupakan bahasa khusu yang digunakan untuk melakukan perintah-perintah untuk mengakses data pada sistem basis data.
Query Language atau yang lebih dikenal dengan nama SQL merupakan suatu bahasa yang digunakan untuk membuat sebuah database.
SQL terdapat 2 jenis perintah, yaitu :

1.  Data Devinition Language (DDL) yaitu merupakan suatu perintah SQL untuk mendefinisikan suatu struktur database.
create = merupakan perintah dasar dalam pembuatan tabel
alter  = merupakan perintah untuk mengubah tabel
rename = merupakan perintah untuk mengubah nama tabel
drop = merupakan perintah untuk menghapus table

2. Data Manipulasi Language (DML) yaitu merupakan perintah SQL yang digunakan untuk memanipulasi suatu pengolahan data dalam tabel. 
select = digunakan untuk memanggil data dalam sebuah tabel
insert = digunakan untuk memasukkan data kedalam abel
update = digunakan untuk mengubah nama dalam tabel
delete = digunakan untuk menghapus data dalam tabel


Jenis Bahasa Query :
a. Bahasa Prosedural (Aljabar Relasional) merupakan bahasa yang identik dengan aljabar relasional. Biasanya mempunyai operasi dasar select dan operasi tambahan.
b.  Bahasa non prosedural (Kalkulus Relasional) merupakan bahasa yang identik dengan kalkulus relational yaitu mendeskripsikan informasi tanpa memberi instruksi.

 Operasi Bahasa Query :
a.   Operasi Unary
      Terdiri dari selection dan projection karena keduanya dapat digunakan hanya untuk satu relasi saja.
b.   Operasi Binary
      Di dalam operasi binary ini terdapat union dan cartesian-product.


Rabu, 24 Oktober 2012

Post 5 Transformasi Model Data


Transformasi Model Data Ke Basis Data Fisik

  • ERD di presentasikan menjadi sebuah basis data secara fisik
  • Kmponen 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

Transformasi Dasar
- Setiap himpunan entitas akan diimplementasikan sebagai sebuah tabel
Implementasi Himpunan Entitas Lemah dan Sub Entitas
- Penggunaan himpunan entitas lemah dan sub entitas dalam diagram ER diimplementasikan dalam bentuk tabel sebagaimana himpunan entitas kuat

Beda Himpunan Entitas Kuat dan Himpunan Entitas Lemah

  • Himpunan Entitas Kuat sudah dapat langsung menjadi sebuah tabel sempurna tanpa melihat relasi dari entitas lain
  • Himpunan Entitas Lemah Hanya dapat ditransformasikan menjadi sebuah tabel dengan menyertakan pula atribut key dari hasil implementasi himpunan entitas lemah.

Minggu, 30 September 2012

Post 4 Model Data Relational

MODEL DATA RELATIONAL

Pertemuan 4 ini membahas tentang Model Data Relational. Apa yang dimaksud dengan Model Data Relational ?
è Ini adalah sekumpulan tabel yang berdimensi dua, yang masing-masing relasi tersusun secara tuple atau baris, dan atribut (kolom) pada suatu basis data.
Suatu model data yang meletakan data dalam bentuk relasi  sering disebut dengan tabel. Masing-masing tabel mempunyai struktur yang mirip dengan ER database.

RELASI
Relasi disini adalah hubungan di antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda (sebuah tabel yang terdiri dari beberapa kolom dan baris).
Dan mempunayi struktur data dasar untuk menyimpan informasi. Struktur tersebut sebagai tabel (kumpulan tabel-tabel). Kemudian setiap relasi memiliki schema yang mendeskripsikan nama relasi dean atribut beserta tipenya.
Example :
Mahasiswa = (nim : string, nama_mhs : string)
Mahasiswa disini sebagai nama relasi.
Nim dan nama_mhs adalah nama atribute.
Dan string adalah tipe dari atribut.
Ø  Istilah penting :
Attribute (KOLOM pada sebuah relasi)
Tuple (BARIS pd sebuah relasi)
Domain (kemungkinan nilai yang dapat diberikan pada suatu atribut)
Degree (jumlah atribut dalam sebuah relasi)
Cardinality (jumlah tuple dalam sebuah relasi)
Relation (TABEL)

Mendefinisikan sebuah Domain
Langkah-langkahnya sebagai berikut :
1. Memberi nama domain yang sesuai dengan nilai yang akan dimiliki domain tersebut.
2. Menentukan tipe data dari nilai yang akan membentuk domain.
3. Menentukan format dari domain.

Relation Key

Example:
Ada beberapa NIM , nama_mhs , tgl_lhr , jns_kel.
Ada beberapa relation Key yang perlu diketahui, yaitu :
Candidate Key (atribut yang digunakan untuk membedakan antara satu baris dan baris lainya) , seperti NIM , nama_mhs dan tgl_lhr.
Primary Key (Candidate Key yang digunakan untuk mengidentifikasikan tuple yang unik pada suatu relasi) , seperti NIM.
Alternate Key (Candidate Key yang tidak menjadi Primary Key)
Foreign Key (Sebuah atribut dalam suatu relasi yang merujuk ke primary key relasi yang lain) , seperti NIM dan kd_mk.

Relation Integrity Rules
- Null (nilai suatu atribut yang tidak diketahui dan tidak cocok untuk baris yang digunakan untuk menyatakan atribut-atribut yang nilainya memang belum ada)
- Entity Integrity (tidak adanya satu komponen primary key yang bernilai null)
- Referential Integrity (garis yang menghubungkan antara satu tabel dengan tabel lain)

TUGAS !!!

1. Tentukan Relational Key dari diagram tersebut . . . . .



Answer :

Relation Key

Entitas Account
Candidate Key  = Account_number , balance
Primary Key    = Account_number
Alternate Key  = Balance
Foreign Key    = - 

Entitas Branch
Candidate Key  = branch-name , branch-city , assets
Primary Key    = branch-name
Alternate Key  = branch-city , assets

Entitas Customer
Candidate Key  = customer-name , customer street , customer-city
Primary Key    = customer-name
Alternate Key  = customer-street , customer-city

Entitas Loan
Candidate Key   = loan-number , amount
Primary Key     = loan-number
Alternate Key   = amount

2. Buat tabel dan keterhubungan dari siswa , pelajaran , guru dan juga ERD nya . . . . .

TABEL SISWA

NIS
nama_siswa
Tgl_lhr
Jns_kelamin
130333
Pradega Shella
25/10/1993
wanita
130337
Nizar Ardiansah
30/01/1993
Pria
130373
Yolla Aditya A.
10/05/1992
Pria
130733
Lintang Sekar L.
07/03/1992
Wanita
130737
Erwin Nur W.
04/05/1994
Pria

TABEL MATA PELAJARAN

Kode_mapel
nama_mapel
Guru_pelajar
01
Fisika
Sunyoto
02
Biologi
Dahlan
03
Matematika
Sri Anah
04
Bahasa Inggris
Yuliana
05
Psikologi
Nurmawati

TABEL GURU

NIP
nama
Alamat
No_HP
130333
Sunyoto
Surabaya
098727635465
130337
Dahlan
Bandung
086541111789
130373
Sri Anah
Kudus
085226146333
130733
Yuliana
Rembang
087733337737
130737
Nurmawati
Semarang
081234786555

TABEL KETERHUBUNGAN

Entity
Relationship
Entity
Siswa
Mengambil
Pelajaran
Guru
Mengajar
Pelajaran

ATTRIBUTE KEY
Atribut Kunci
Entity
Atribut
Siswa
NIS , nama_siswa , tgl_lhr , jns_kelamin
Pelajaran
Kode_mapel , Nama_mapel , guru_pelajar
Guru
NIP , nama , Alamat , No_HP

Primary Key
Entity
Atribut
Siswa
NIS
Pelajar
Kode_mapel
Guru
NIP

ERD





animasi  bergerak gif