AGASTIA_PTIK_UNNES
Powered By Blogger

Jumat, 28 Desember 2012

SBD Pak Nuriksan (Optimasi Query)


Optimasi Query


A.     Pendahuluan
Data yang tersimpan dalam database semakin lama akan semakin besar ukuran atau volumenya. Kalau tidak didukung dengan kecepatan akses yang memadai maka akan semakin menurun unjuk kerjanya. Ukuran unjuk kerja dalam hal ini kecepatan akses data dipengaruhi oleh banyak faktor. Pada bab ini akan membahas tentang optimasi query serta faktor-faktor lain yang berpengaruh terhadap optimalisasi kecepatan akses data.
B.      Optimasi Pada Perintah SQL
Desain aplikasi saja tidak cukup untuk meningkatkan unjuk kerja harus didukung dengan optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Dalam mendesain database, seringkali lokasi fisik data tidak menjadi perhatian penting. Karena hanya desain logik saja yang diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian yang melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang
membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.
Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan
kolom menurut kota, propinsi dan kode pos dari tabel karyawan, sebagai berikut :
CREATE INDEX idx_kota_prop_kodepos
ON karyawan(kota, propinsi, kode_pos)
TABLESPACE INDX;
Kemudian user melakukan query sebagai berikut :
SELECT * FROM karyawan WHERE propinsi=’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 propinsi. Selain itu, proses pencarian data akan lebih cepat jika data terletak pada block tabel yang berdekatan daripada harus mencari di beberapa datafile yang terletak pada block yang berbeda.
Misal pada perintah SQL berikut ini :
SELECT * FROM karyawan
WHERE id BETWEEN 1010 AND 2010;
C.      Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
1.        Optimasi Aplikasi
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain. Apakah desain database sudah melakukan normalisasi data secara tepat.
Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses bersama lebih baik disatukan dalam satu tabel.
2.       Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam 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 mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join.
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. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.

SBD Pak Nuriksan (STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL)


STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL)


A.   Pengenalan SQL
SQL pertama kali diterapkan pada sistem R. Sekarang SQL juga dapat 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.
B.    Elemen SQL
Elemen dasar SQL mencakup pernyataan, nama, tipe data, konstanta, ekspresi, dan fungsi bawaan.
1.    Pernyataan
Pernyataan adalah perintah SQL yang meminta sesuatu tindakan kepada DBMS. SQL memiliki kira-kira 30 pernyataan.
2.    Nama
Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel, kolom dan pengguna.
3.    Tipe Data
4.    Konstanta
5.    Ekspresi
6.    Fungsi Agregat
Adalah sebuah subprogram yang menghasilakn suatu nilai jika dipanggil
C.    Kelompok Pernyataan SQL
Pernyataan SQL dapat dikelompokkan menjadi 3 kelompok yaitu DDL, DML dan DCL.
1.    DDL(Data Definition Language)
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, tabel, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel. Yang termasuk dalam kelompok DDL ini adalah CREATE, ALTER, dan DROP.
2.    DML(Data Manipulation Language)
DML adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan dan penghapusan data. Perintah yang termasuk dalah kategori DML adalah : INSERT, DELETE, UPDATE dan SELECT.
3.    DCL

SBD Pak Nuriksan (Query Lanjutan)


Query Lanjutan


A.     SubQuery
Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL statement lain.
B.      Penggunaan Subquery
Subquery mengembalikan nilai ke main query. Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu niai yang tidak diketahui (unknow values).
C.      Subquery Banyak Kolom
Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan
dengan nilai dari subquery multiple-row dan multiple-column.
D.     Pembandingan Kolom
Pembandingan kolom dalam subquery banyak kolom dapat berupa :
· Pembandingan berpasangan (Pairwise Comparison SubQuery)
· Pembandingan tidak berpasangan (NonPairwise Comparison SubQuery)
E.      Penggunaan Query dalam klausa from
Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer. Query semacam ini dikenal juga dengan istilah inline view, karena tidak membentuk
object database.
F.      Ekspresi Scalar Subquery
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.
G.     Korelasi Subquery
Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query.
H.     Penggunaan Operator Exist dan Not Exist
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.
I.         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. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi.

Selasa, 27 November 2012

Pertemuan Ke-7 SBD Pak Nuriksan : Dependensi dan Normalisasi

Functional Dependency ( Ketergantungan Fungsional )
  • FD menggambarkan realtionship/hubungan, batasan. keterkaitan antara atribut-atribut dalam relasi.
  • Simbol yang digunakan untuk mewakili FD adalah -> dibaca secara fungsional menentukan.

Macam-Macam Dependency :

A. Functional Dependency
  • Full Functional Dependency : Menentukan jika terdapat atribut A dan B dalam suatu relasi.
  • Paritally Dependency : Merupakan ketergantungan fungsional, di mana beberapa atribut dapat dihilangkan dengan ketergantungan tetap dipertahankan.
  • Transitive Dependency : Merupakna tipe functional dependency, yaitu kondisi di mana A,B,C adalah atribut sebuah relasi di mana A -> B dan B -> C.

Normalisasi

Normalisasi adalah melakukan proses mendapatkan struktur dari tabel atau relasi yang efisien dan terbebas dari suatu anomali, dan mengacu pada suatu cara data item yang dikelompokkan ke dalam struktur record. Atau proses pembentukan pada struktur basis data sehingga bagian besar antibiguity bisa dihilangkan.

Why to do Normalisasi ?
  • Optimalisasi struktur-struktur tabel
  • Meningkatkan kecepatan 
  • Menghilangkan pemasukkan data yang sama
  • Lebih efisien dalam penggunaan media penyimpanan
  • Mengurangi redundansi
  • Menghindari anomali, integritas data yang ditingkatkan.
Bentuk normalisasi yang biasa digunakan :
  • First Normal Form (1NF) -> Suatu keadaan yang membuat setiap perpotongan baris dan kolom dalam relasi hanya berisi suatu nilai.
  • Second Normal Form (2NF) -> Jika telah memenuhi bentuk normalisasi 1NF, dan semua atribut selain primary key, secara utuh memiliki FD pada primary key.
  • Third Normal Form (3NF) -> Jika telah memenuhi bentuk normalisasi 2NF, tidak ada atribut non primary key yang memilik ketergantungan terhadap atribut non primary key yang lainnya.
  • Boyce-codd Normal Form (BCNF)
  • Four Normal Form (4NF)
  • Five Normal Form (5NF)

Kamis, 15 November 2012

Pertemuan ke 6 SBD Pak Nuriksan


Dalam sistem basis data, ada suatu kondisi kita harus mendapat informasi tertentu dari basis data tersebut. Hal yang bisa kita lakukan adalah dengan melakukan suatu command atau perintah melalui bahasa tertentu yakni kita sebut bahasa query. Bahasa query sendiri dikelompokkan lagi menjadi 2, yakni :
  1.  Bahasa prosedural => user menginstruksikan sistem dalam serangkaian perintah ke dalam basis data untuk mendapatkan informasi yang diinginkan.
  2.  Bahasa non-prosedural => user tidak perlu menginstruksikan perintah apapun untuk mendapatkan informasi. 
Selain bahasa di atas, ada 2 bahasa lagi dimana bahasa ini digunakan untuk mengkonversi SQL menjadi bahasa relasional formal atau disebut dengan Bahasa query Formal (Formal Query Languages),antara lain :  
  • Aljabar relasional  
Sebenarnya aljabar relasional sendiri adalah salah satu jenis bahasa query prosedural, dimana user menginstruksikan sistem untuk melakukan sederetan perintah untuk mendapatkan informasi yang diinginkan. Bahasa aljabar relasional ini diekspresikan dalam bentuk operator-operator relasi yang levelnya tinggi, seperti s, p, È, -.  Operator-operator inilah yang nantinya menjadi instruksi bagi sistem dan juga menghubungkan beberapa tabel/relasi sebagai input dan menghasilkan sebuah tabel/relasi baru sebagai output. Terdapat lima operasi dasar di aljabar relasional yakni :
  1.  Select (s)
  2.   Project (p)
  3. Union (È)
  4. Set-difference (-)
  5. Cartesian-product(X, disebut juga sebagai cross product)
 Operasi tambahan/turunan dari operasi operasi dasar tersebut adalah :
  1. Set intersection
  2.  Theta join
  3. Natural join
  4. Division
Berdasarkan banyaknya tabel/relasi basis data yang terlibat dalam operasi, maka operasi aljabar relasional dibagi menjadi 2 :
  • Operasi unary => beroperasi pada sebuah tabel untuk mendapatkan informasi yang diinginkan. Contoh operasinya : select, project, rename
  • Operasi binary => beroperasi pada beberapa tabel untuk mendapatkan informasi yang diinginkan. Contoh operasinya : Cartesian-product, union, set-difference

  1.  Operasi Select (s)

Merupakan operasi query yang paling umum, dimana operasi ini digunakan untuk mengambil data dari satu atau lebih tabel, selain itu juga digunakan untuk mengelompokkan sejumlah record dan menghitung total, banyak data, serta rata-ratanya. Beberapa operasi dapat dikombinasikan menggunakan operator Ú (OR) dan Ù (AND).
Untuk melihat hasil operasi dari selection ini, saya menggunakan relasi-relasi berikut :

Contoh 1.1 :
Query : Tampilkan dosen yang lahir di Banyumas
Ekspresi aljabar relasional : s tLahir=”Banyumas” (Dosen)

Contoh 1.2 :
Query : Tampilkan dosen yang lahir di Banyumas atau Bandung
Ekspresi Aljabar Relasional : s tLahir=”Banyumas” Ú tLahir “Bandung” (Dosen)


2. Projection (p)

Adalah operasi untuk menampilkan attribute atau kolom tertentu. Operasi ini adalah salah satu jenis operasi unary dimana hanya mengirim satu relasi argument dengan kolom tertentu pula. Karena relasi merupakan suatu himpunan, maka duplikasi data dihilangkan.
Contoh 2.1 :
Query : Tampilkan NIP, nama, tLahir, tglLahir,alamat dari relasi Dosen
Ekspresi aljabar relasional : p NIP,nam, tLahir, tglLahir, alamat (Dosen)



Contoh 2.2 :
Query : Tampilkan NIP, nama, tLahir, tglLahir, alamat, gPokok dimana tLahir dosen adalah Banyumas dan gaji pokok lebih dari 2000000
Ekspresi aljabar relasional : p NIP,nam, tLahir, tglLahir, alamat (s alamat=”Bali” Ù gPokok >2000000) (Dosen)

3. Operasi Cartesian-product(X)
Adalah operasi yang melakukan perkalian kartesian, dengan output adalah tabel baru hasil perkalian tersebut. Kegunaan operasi ini adalah untuk mengkombinasikan informasi dari beberapa tabel sehingga operasi ini juga termasuk operasi binary.
Contoh 3.1 :
Query : Cartesian-product (X) relasi Jurusan dan TugasJurusan
Ekspresi Aljabar Relasional : Jurusan X TugasJurusan

Contoh 3.2 :
Query : Tampilkan NIP, nama (dari relasi Dosen), idJurusan, tglMulai (dari relasi TugasJurusan) dimana tglMulai adalah 11 Agstustus 1980.
Ekspresi aljabar relasional : p NIP,nama, idJurusan, tglMulai, (s tglMulai=11-Agst-1980ÙDosen.NIP=TugasJurusan.NIP) (Dosen, TugasJurusan)
Atau
p (TugasJurusan.NIP=Dosen.NIP) Ù tglMulai=11-Agst-1980 ((p NIP,nama  (Dosen) X (pidJurusan, tglMulai (TugasJurusan)))


4.  Operasi Union (È)
Adalah operasi untuk menggabungkan tabel dengan ketentuan bahwa masing-masing tabel yang akan digabungkan harus memiliki atribut yang sama. 



Contoh 4.1 :
Query : Tampilkan NIP (dari relasi Dosen) union dari NIP (dari relasi TugasJurusan).
Ekspresi aljabar relasional : p NIP (Dosen) È NIP (TugasJurusan)



5. Operasi Set-Difference (-)
Operasi untuk memperoleh informasi dari suatu relasi, tapi informasi tersebut tidak ada pada relasi lainnya. Operasi hanya bisa dilakukan untuk tabel-tabel tertentu dengan atribut yang dimiliki masing-masing table ada yang tidak sama.
Contoh 5.1 :
Query : Tampilkan NIP (dari relasi Dosen) set-difference dari NIP (dari relasi TugasJurusan).
Ekspresi aljabar relasional : p NIP (Dosen) - NIP (TugasJurusan)

6. Operasi Rename (r)
Adalah operasi untuk mengcopy tabel lama ke dalam tabel baru.
Contoh 6.1 :
Query : Salinlah tabel baru dengan nama DosenNew dari tabel Dosen, dimana jenis kelaminnya adalah ‘Pria’.
Ekspresi aljabar relasional : r DosenNew (s jKelamin=”Pria”) (Dosen)


7.  Operasi Set-Intersection (Ç)
Operasi ini dapat diturunkan dari operasi dasar menjadi seperti berikut :
Oleh karena itu operasi ini termasuk ke dalam operasi tambahan atau operasi turunan. Operasi ini juga merupakan opersi binary, karena menghubungkan antara dua relasi untuk membentuk suatu relasi yang baru.

Senin, 29 Oktober 2012

PERTEMUAN 5 SBD PAK NURIKSAN (Transformasi Model Data ke Basis Data Numerik)


Transformasi Model Data

Entitas Kuat
Himpunan entitas yang mana dilibatkan dalam suatu  ERD. Tidak saling tergantung dengan entitas lainnya.

Entitas Lemah
Suatu entitas yang keberadaannya tergantung dari entitas lain. Entitas lemah tidak mempunyai atribut yang bisa berfungsi sebagai key attribute.
 Contoh Entitas Kuat dan Entitas Lemah :


Agregasi
Agregasi berfungsi untuk menggambatkan suatu himpunan relation yang langsung menghubungkan dengan sebuah himpunan entity dengan suatu himpunan retation dalam ERD.
Contoh Agregasi :


TRASFORMASI MODEL DATA KE BASIS DATA FISIK

Basis Data secara fisik dapat direpresentasikan dalam sebuah ERD. Tabel adalah komponen utama yang membentuk basis data yang mana juga tabel menjadi hasil transformasi dari komponen ERD.

Relasi 1 - 1 yang enghubungkan dengan 2 buah himpunan entity yang direpresentasikan dalam ssuatu bentuk penambahan atribute - atribute relasi ke suatu tabl yang dapat mewakili satu dari dua himpunan entitas.

Relasi 1-N yang menghubungkan 2 buah himpunan entity yang direpresentasikan dalam bentuk pencantuman attribute key dari himpunan derajat 1 ke tabel yang mewakili himpunan entitas yang berderajat N.

Relasi N-N yang menghubungkan 2 buah himpunan entity dapat diwujudkan dalam bentuk suatu tabel khusus yang memiliki field yang berasal dari key - key dari suatu himpunan entity yang dihubungkannya.

IMPLEENTASI HIMPUNAN ENTITAS LEMAH DAN SUB ENTITAS
Dalam penggunaannya himpunan entitas lemah dan sub entitas dalam suatu diagram ER dapat diimplementasikan dalam bentuk tabel. Bedanya dengan entitas kuat, entitas kuat sudah dapat langsung menjadi tabel utuh walau tanpa melihat relasi dari entitas lain.

STUDI KASUS
Transformasikan ER Model dari Rental VCD ke sebuah basis data fisik

Hasil Akhir

Selasa, 02 Oktober 2012

TUGAS PAK IKHSAN SBD PERTEMUAN 4


Basis Data Pertemuan 4 : MODEL DATA RELATIONAL

Model Data Relational

ADALAH sekumpulan tabel yang berdimmensi dua yang terdiri dari baris (record) dan kolom sebagai field dan memiliki struktur seperti database.
  • Attribut itu kolom pada sebuah tabel atau relasi
  • Tuple itu baris pada sebuah tabel atau relasi yang berisi record suatu entitas secara lengkap.
  • Degree itu banyaknya atribut dalam relasi.
  • Cardinality itu jumlah record pada tabel.
  • Setiap relasi pasti memiliki schema yang mendeskripsikan nama relasi dan atribut serta tipenya.

Mendefinisikan domain

  • Memberikan nama domain yang bersesuaian dengan nilai yang akan dimiliki domain itu.
  • Menentukan tipe data dari nilai yang akan membentuk domain.
  • Menentukan format domainnya.

Kunci Atribut dari Relasi

  • Candidate Key adalah suatu atribut yang dipakai untuk membedakan antara satu baris dengan baris yang lainnya
  • Primary Key adalah suatu candidate key yang dipakai untuk mengindentifikasikan baris yang unik pada suatu tabel.
  • Alternate Key adalah candidate key yang tidak menjadi primary key.
  • Foreign Key adalah suatu atribut dalam tabel relasi yang merujuk ke primary key tabel relasi yang lain.
TUGAS