Sabtu, 25 Oktober 2014

INTEGRITAS DATA

Informasi yang disimpan pada basis data hanya akan baik jika DBMS turut membantu mencegah adanya informasi yang salah yang masuk ke basis data. Batasan Integritas data adalah syarat yang dispesifikasikan pada basis data untuk membatasi data yang dapat disimpan didalam basis data. jika basis data memenuhi semua batasan integritas yang dispesifikasikan pada skema basis datanya, maka basis data tersebut sudah bisa dikatakan legal
Integritas data dapat dikelompokkan menjadi dua bagian:
1. Integritas data yang berada didalam relasi, yaitu integritas entitas dan integritas domain
2. Integritas data yang berbeda dari luar relasi, yaitu integritas referensial.

Secara garis besar, didalam model relasional integritas data meliputi:

  • integritas entitas
  • integritas domain
  • integritas referensial
  • integritas enterprise

Integritas Entitas
integritas entitas mendefinisikan sebuah baris sebagai sebuah entitas yang unik untuk suatu tabel, memaksa integritas dari column atau primary key dari suatu tabel melalui index, unique, constrains, primary key, dimana primary key tidak boleh null dan dalam integritas entitas tidak ada baris yang duplikat di dalam suatu tabel

Integritas Domain
Integritas domain adalah nila-nilai yang dimungkinkan diasosiasikan dengan setiap atribut, merupakan validasi dari masukan untuk sebuah kolom. denan integritas domain, tidak ada data yang melanggar jangkauan ditiap kolom data

Integritas Referensial
Integritas referensial memastikan bahwa seluruh nilai dari foreign key cocok dengan nilai primary key yang dihubungkannya. Integritas referensial adalah dasar relasi antar tabel yaitu antara foreign key dengan primary key

Integritas Enterprise
Integritas enterprise / user defined integration mengizinkan kita untuk menentukan spesific business rules sendiri yang tidak sama pada kategori integritas yang lain

Constraints Classification adalah aturan untuk memberikan akses ke data dalam sebuah database.

S=(R,A,E,L)

Constraints classification adalah aturan yang menentukan nilai satu atau lebih klasifikasi atribut. R adalah nama dari relasi, A adalah daftar dari satu atau lebih atribut data di R, E adalah ekspresi opsional dan L adalah kelas akses.

Ada 4 tipe classification constraints :

1. Type dependent : tidak ada ekspresi E dan L adalah variable ekspresi yang konstan, sehingga semua elemen yang terkait dengan atribut memiliki kelas yang sama. Mendefinisikan single level atribut.

Contoh : (R, A, , SECRET)

(R, (A,B), , PROPRIETARY)

2.  Value dependent : Salah satu E atau L atau keduanya ada, sehingga akses kelas yang terasosiasikan dengan element tergantung pada nilai dari element atau akses kelas dari data lain dalam database.

Contoh : (R, A, A=1, CONF) => kelas elemen terkait dengan atribut A ditentukan oleh nilai dari elemen.

(R, A, , class (R.B)) => ditentukan oleh kelas dari atribut B.

(R, A, A=1, class(R.B)) => ditentukan oleh atribut A dan B.

3. Source level : akses kelas L adalah ekspresi “kelas (user)” merupakan kelas akses dari user(subjek) yang memasuki elemen. Ekspresi E bisa hadir maupun tidak.

Contoh : (R, A, , class(user))

(R, B, B>0, class (user))

4. Source label : akses kelas L merupakan ekspresi *, berarti subjek yang memasuki elemen menyediakan akses kelas untuk elemen. Ekspresi E bisa hadir maupun tidak.

Contoh : (R, A, , *)

(R, B, B>0, *)


Transition Constraints
Transition constraints adalah cara untuk memastikan database tidak dimasukan data yang tidak mungkin berhubungan dengan data sebelumnya. Transition constraints dapat dimodelkan sebagai diagram transisi untuk memastikan aturan untuk memperbaharui entitas dengan cara tertentu. Ada keadaan awal, flow garis yang menunjukan data berikutnya yang sesuai dengan aturan.


Keys & Sql Support :
SQL mendukung sejumlah kendala integritas yang berbeda. Ini beberapa diantaranya:
1.Primary-Key:

Primary-Key mengatakan bahwa atribut (Aj1, Aj2,..., Ajm) membentuk primary key untuk relasi. Primary Key dituntut untuk non null dan unik, yaitu, tidak ada tuple yang dapat memiliki
nilai null untuk atribut Primary-Key, dan tidak ada dua tupel dalam relasi
dapat sama pada semua atribut Primary-Key. Meskipun spesifikasi Primary-Key opsional , biasanya ide yang baik untuk menentukan Primary-Key untuk setiap relasi .

2.Foreign-Key:

Spesifikasi Foreign-Key mengatakan bahwa nilai-nilai atribut (AK1, AK2, ..., AKN) untuk setiap tupel dalam relasi harus sesuai dengan nilai-nilai dari atribut Foreign-Key dari beberapatuple dalam hubungan s.

3.Not-null:

Kendala Not-null pada atribut menentukan bahwa nilai null tidak diperbolehkan untuk atribut tersebut, dengan kata lain, kendala tidak termasuknilai null dari domain dari atribut tersebut.

Minggu, 28 September 2014

Optimasi Query

Optimasi Query
Kali ini saya akan membahas tentang Optimasi Query. Optimasi Query adalah proses mencari sumber-­sumber apa saja yang di gunakan oleh query dan dapat dikurangi tanpa merubah output. Optimasi query itu  sendiri bertujuan untuk menemukan jalan akses tercepat untuk meminimalkan waktu pada saat proses sebuah query. Optimasi query ini sangat berguna manakala kita memiliki data yang sangat besar yang tersimpan dalam suatu data base. Jika data tersebut dibiarkan semakin banyak dan semakin bertumpuk dalam database, maka tentu akan mengurangi kinerja database itu sendiri. Oleh sebab itu Optimasi query perlu dilakukan. Tentunya banyak teknik yang dapat dilakukan untuk melakukan Optimasi query ini. diantaranya adalah sebagaimana diungkapkan oleh Chanowich (2001) yakni:
  1. Heuristik atau rule based
    teknik ini mengaplikasikan aturan heuristik agar terjadi keefektifan dalam proses query. optimasi jenis ini mentranformasikan query dengan sejumlah aturan yang akan meningkatkan kinerja eksekusi, yakni:
    • melakukan opersi selection diawal untuk mereduksi jumlah baris.
    • melakukan operasi projection diawal untuk mereduksi jumlah atribut
    • mengkonversikan query dengan banyak join menjadi query dengan banyak subquery
    • melakukan operasi selection dan join yang paling kecil keluaranya sebelum  operasi lain.
  2. Cost-Based
    teknik ini mengoptimasikan cost yang dipergunakan dari beberapa alternatif untuk kemudian dipilih salah satu yang menjadi cost terendah. teknik ini dapat mengoptimalkan urutan join terbalik yang dimungkinkan pada relasi-relasi r1 ke r2 ke... m. teknik in dipergunakan untuk mendapatkan pohon left-deep join yang akan menghasilkan sebuah relasi pada node sebelah kanan yang bukan hasil dari sebuah intermediate join.
Cara optimalisasi query
index pada database digunakan untuk meningkatkan kecepatan akses data. pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang menbantu 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 tabel mahasiswa

CREATE INDEX idx_nama_nim_rombel ON mahasiswa(nama, nim, rombel) TABLESPACE INDX;

kemudian querynya

SELECT *FROM mahasiswa WHERE rombel=2';

query ini tidak menggunakan kolom nim dan hanya menggunakan kolom rombel sehingga data diurutkan berdasarkan kolom rombe. agar data diurutkan berdasarkan semua kolom maka menggunakan id sebagai dasar pengurutan

SELECT *FROM mahasiswa WHERE id BETWEEN 2010 AND 2011; 
  • Optimasi Perintah SQL
    Optimasi Perintah SQL berfungsi untuk meningkatkan kinerja desain 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.
  • Faktor-faktor 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, penggunaan cluster index, penyesueian pada pool, buffer cache, redo log buffer dan sistem operasi yang digunakan. selain optimasi query juga perlu optimalisasi aplikasi yaitu dengan desain database yang baik dan juga perlu denormalisasi setelah adanya normalisasi.
  • PLAN_TABLE merupakan suatu penyimpanan informasi yang dapat dilihat dari perintah explain plan tentang eksekusi dari suatu query. terlebih dahulu buat table PLAN_TABLE dengan menggunakan script utlxplan.sql
    Setelah itu PLAN_TABLE bisa digunakan.
    contoh :
    SQL> explain plan
    Set statement_id=’coba’
    Into plan_table for
    Select * from karyawan where gaji=2000000;
    Dalam PLAN_TABLE rencana eksekusi diatas dikenal dengan nama coba yang terdefinisi pada kolom statement_id.

    Berikut merupakan perintah untuk melihat rencana eksekusi dari coba
    SELECT LPAD(’ ’,2*Level)||Operation||’ ’||Options||’ ’||Object_Name MUFC
    FROM plan_table
    WHERE statement_id=’coba’
    CONNECT BY PRIOR id=parent_id AND statement_id=’coba’
    START WITH id=0 AND statement_id=’coba’;

    Hasil dari eksekusi query coba tersebut :
    MUFC
    ----------------------------------------------
    SELECT STATEMENT
    TABLE ACCESS FULL mahasiswa
  • Perintah dari SQL yang digunakan untuk meminta sebuah tindakan kepada DBMS.
    Pernyataan dasar SQL antara lain :
    1. ALTER : Merubah struktur tabel
    2. COMMIT : Mengakhiri eksekusi transaksi
    3. CREATE : Membuat tabel, indeks
    4. DELETE : Menghapus baris pada sebuah tabel
    5. DROP : Menghapus tabel, indeks
    6. GRANT : Menugaskan hak terhadap basis data kepada user
    7. INSERT : Menambah baris pada tabel
    8. REVOKE : Membatalkan hak kepada basis data
    9. ROLLBACK : Mengembalikan pada keadaan semula apabila transaksi gagal dilaksanakan
    10. SELECT : Memilih baris dan kolom pada sebuah tabel
    11. UPDATE : Mengubah value pada baris sebuah tabel

    A.  Nama
          Nama digunakan sebagai identitas, yaitu identitas bagi objek pada DBMS. Misal : tabel, kolom dan pengguna.

    B. Tipe data
         Tipe data yang ada dalam MYSQL :
    a. Tipe data numerik antara lain :
      1. TINYINT : Nilai integer yang sangat kecil
      2. SMALLINT : Nilai integer yang kecil
      3. MEDIUMINT : Nilai integer yang sedang
      4. INT : Nilai integer dengan nilai standar
      5. BEGINT : Nilai integer dengan nilai besar
      6. FLOAT :Bilangan decimal dengan single-precission
      7. DOUBLE :Bilangan decimal dengan double-precission
      8. DECIMAL(M,D) : Bilangan float yang dinyatakan sebagai string. M : jumlah
       digit yang disimpan, D : jumlah angka dibelakang koma

    b. Tipe data String antara lain :
      1. CHAR : Karakter yang memiliki panjang tetap yaitu sebanyak n
      2. VARCHAR : Karakter yang memiliki panjang tidak tetap yaitu maksimum n
      3. TINYBLOB : BLOB dengan ukuran sangat kecil
      4. BLOB : BLOB yang memiliki ukuran kecil
      5. MEDIUMBLOB : BLOB yang memiliki ukuran sedang
      6. LONGBLOB : BLOB yang memiliki ukuran besar
      7. TINYTEXT : teks dengan ukuran sangat kecil
      8. TEXT : teks yang memiliki ukuran kecil
      9. MEDIUMTEXT : teks yang memiliki ukuran sedang
     10. LONGTEXT : teks yang memiliki ukuran besar
     11. ENUM : kolom diisi dengan satu member enumerasi
     12. SET : Kolom dapat diisi dengan beberapa nilai anggota himpunan

    c. Tipe data tunggal dan jam :
      1. DATE : date memiliki format tahun-bulan-tanggal
      2. TIME : time memiliki format jam-menit-detik
      3. DATETIME : gabungan dari format date dan time

    C. Ekspresi
         Ekspresi digunakan untuk menghasilkan/menghitung nilai.
    Misalnya : jumlah=harga-diskon
    Ekspresi aritmatika antara lain :
    1. + : tambah
    2. – : kurang
    3. / : bagi
    4. * : kali

    D. Fungsi bawaan
       Fungsi adalah subprogram yang dapat menghasilkan suatu nilai apabila fungsi tersebut dipanggil. Fungsi Agregat adalah fungsi yang digunakan untuk melakukan summary, statistik yang dilakukan pada suatu tabel/query.
    1. AVG(ekspresi) : digunakan untuk mencari nilai rata-rata dalam kolom dari tabel.
    2. COUNT(x) : digunakan untuk menghitung jumlah baris dari sebuah kolom dari tabel
    3. MAX(ekspresi) : digunakan untuk mencari nilai yang paling besar dari suatu kolom dari tabel
    4. MIN(ekspresi) : digunakan untuk mencari nilai yang paling kecil dari suatu kolom dari tabel
    5. SUM(ekspresi) : digunakan untuk mengitung jumlah keseluruhan dari suatu kolom dari tabel

Kamis, 06 September 2012

DINUS INSIDE

Dinus Inside acaranya lumyan seru, melelahkan dan menjengkelkan. Untuk hari pertama memang lumayan seru, kumpul sama teman-teman baru, jalan-jalan, habis itu dapet sarapan dan di lanjut hiburan-hiburan. Pertama sih merasa fun-fun saja, tapi setelah mau pulang dapat tugas di suruh membuat atribut yang aneh-aneh + gak jelas udah mulai jengkel, karena tugasnya mendadak sekali, ditambah saya yang termasuk pendatang baru belum tau seluk beluk kota semarang. Jadi untuk membuat atributnya sangat-sagat kesusahan. Untuk hari ke2 dan ke3 memang menjengkelkan karena di suruh memekai atribut-atribut yang gak jelas apa tujuanya. Tapi setelah masuk ke kelas acaranya lmyan menyenangkan, ada game-game yang menghibur, untungnya saya dapat kakak pembimbing yang baik, sabar, dan gak mudah marah. Malah ngajak bercanda mulu. Dinus Inside memang melelahkan, tapi lumayan untuk menambah teman.

DINUS EXPO

Dinus Expo rame, seru, dan panas banget. Banyak stan-stan yang bisa di kunjungi, ada hiburan musiknya juga yang seru. Tapi juga melelahkan, karena hars muter-muter, berdesak-desakan, dan kepanasan untuk minta tanda tangan dan stempel dari UKM-UKM yana ada. Acaranya rame sekali, banyak produk-prduk yang di jual.