Monday, November 30, 2015

Sistem Basis Data (Take Home)

Basis Data vs Sistem Basis Data, Integritas Data, Transaksi dan Konkurensi, XML, Back End Programming


BASDAT VS SIMBADA

1) Basis data
Basis data adalah kumpulan terorganisasi dari data – data yang saling berhubungan sedemikian rupa sehingga dapat mudah disimpan, dimanipulasi, serta dipanggil oleh penggunanya. Definisi Basis data juga dapat diartikan sebagai kumpulan data yang terdiri dari satu atau lebih tabel yang terintegrasi satu sama lain, dimana setiap user diberi wewenang untuk dapat mengakses ( seperti mengubah,menghapus dll.) data dalam tabel-tabel tersebut.

Tujuan Basis Data:
  • Kecepatan serta kemudahan dalam menyimpan, memanipulasi atau juga menampilkan kembali data tersebut.
  • Efisiensinya ruang penyimpanan, karena dengan basis data, redudansi data akan bisa dihindari.
  • Keakuratan (Accuracy) data.
  • Ketersediaan (Availability) data.
  • Kelengkapan (Completeness) data, Bisa melakukan perubahan struktur dalam basis data, baik dalam penambahan objek baru (tabel) atau dengan penambahan field-field baru pada table.
  • Keamanan (Security) data, dapat menentukan pemakai yang boleh menggunakan basis data beserta objek-objek yang ada didalamnya serta menentukan jenis -jenis operasi apa saja yang boleh dilakukannya.
  • Kebersamaan Pemakai (Sharability), Pemakai basis data bisa lebih dari satu orang, tetapi tetap menjaga atau menghindari masalah baru seperti: inkonsistensi data (karana data yang sama diubah oleh banyak pemakai pada saat yang bersamaan) dan juga kondisi deadlock (karena ada banyak pemakai yang saling menunggu untuk menggunakan data tersebut.
2) Sistem Basis Data
Sistem Basis Data adalah sistem yang terdiri dari koleksi data atau kumpulan data yang saling berhubungan dan program-program untuk mengakses data tersebut. Komponen Utama Sistem Basis Data:
  • Perangkat Keras (Hardware)
  • Sistem Operasi (Operating Sistem)
  • Basis data (Database)
  • Sistem Pengelola Basis Data (Database Management Sistem atau disingkat DBMS)
  • Yaitu pengelola basis data secara fisik tidak dilakukan oleh pemakai secara langsung, akan tetapi ditangani oleh sebuah perangkat lunak yang khusus. Perangkat Lunak inilah yang disebut DBMS (Database Management Sistem) yang akan menentukan bagaimana data diorganisasi, disimpan, diubah serta diambil kembali. Perangkat Lunak ini juga yang menerapkan mekanisme pengamanan data, pemakaian data secara bersama-sama, konsistensi data dan sebagainya.
  • Pemakai (User).
  • Aplikasi atau Perangkat Lunak yang lainnya.
  • Tujuan Utama Sistem Basis Data sendiri adalah :
  • Menunjukkan suatu lingkungan yang tepat dan efisien didalam melakukan pengambilan (retrieving) dan penyimpanan (storing) informasi basis data, serta menyediakan antarmuka yang lebih ramah kepada user dalam melihat data.
Kelebihan dari Sistem Basis Data:
-  Mengurangi duplikasi data
- Meningkatkan integritas data
- Memelihara indepensi data
- Meningkatkan keamanan data
- Memelihara konsistensi data
- Memanipulasi data dengan lebih canggih
- Mudah digunakan

Kekurangan Sistem Basis Data:
- Sistem lebih rumit, sehingga perlu tenaga ahli untuk mengurus masalah desain, program dan implementasinya
- Lebih mahal pengadaannya
- Bila terdapat akses yang tidak benar, dapat merusak basis data
- Karena semua data terdapat di pusat, maka overload dapat menyebabkan kerusakan pada hardware  maupun software
- Proses maintenance dan back up akan memakan waktu karena ukurannya besar




INTEGRITAS DATA

Pengertian integritas data secara luas mengacu pada kepercayaan dari sumber daya suatu sistem. Integritas data sangat penting karena dapat memastikan keakuratan, konsistensi, aksesibilitasi, dan kualitas tinggi dari sebuah data, sehingga sangat penting untuk mengikuti aturan pengintegritasan suatu data. Data yang mempunyai integritas identik di pertahankan selama operasi apapun (seperti bisnis transfer, penyimpanan, atau pengambilan). Secara sederhana dalam istilah bisnis, integritas data adalah jaminan bahwa data konsisten, bersertifikat dan dapat dirujukan.
Integritas Data dapat dikelompokan menjadi 2 bagian :
1. Integritas data yang berada dalam relasi, yaitu integritas entitas dan integritas domain.
2. Integritas yang berada di luar relasi, yaitu integritas referensial
Selain itu ada juga integritas yang ditentukan sendiri di dalam suatu perusahaan, yaitu integritas perusahaan (Enterprise Integrity/ User Defined Integrity).
Secara garis besar integritas data dalam model relasional meliputi :
1. Integritas Entitas
2. Integritas Domain
3. Integritas Referensial
4. Integritas Enterprise

INTEGRITAS ENTITAS
Integritas entitas mendifinisikan sebuah baris sebagai sebuah entitas yang unik untuk suatu tabel. Dalam integritas entitas, tidak ada baris yang di duplikat didalam suatu tabel.
Contoh :
create table Pembelian
(ID Pembelian smallint,
ID model smallint,
DeskripsiModel varchar (40),
Primary Key (IDPembelian));

INTEGRITAS DOMAIN
Domain adalah nilai-nilai yang dimungkinkan diasosiasikan dengan setiap atribut, Integritas domain merupakan validasi masukan dari sebuah kolom. Dengan integritas domain, tidak ada data yang melanggar jangkauan nilai di tiap kolom data.
Jenis domain yang harus dimiliki oleh setiap atribut :
1. Karakter bebas
2. Alphanumerik
3. Alphabet
4. Numerik
Pemeliharaan integritas domain :
1. Pendifinisian skema
2. Pemanfaatan properti field
3. Penerapan proses validasi pada pemasukan data
Contoh :
Create table biografi
(idpenulis smallint unsigned not null,
tahunLahir year not null,
kotalahir varchar (40) not null default
‘Kosong’);
create domain nilai numerik(3,2)
constraint value-test check (value >=0.00)

INTEGRITAS REFERENSIAL
Integritas referensial adalah dasar relasi antar tabel yaitu antara foregin key dengan promary key. Integritas referensial memastikan bahwa seluruh nilai dari foregin key cocok dengan nilai primary key yang dihubungkanya.
Contoh :
create table account
(account-number char (10),
branch-name char (15),
balance integer,
primary key (account-number),
foreign key (branch-namereference branch)
create table depositor
(costumer-name char (20),
account-number char (10),
primary key (costumer-name, account-number)
foreign key (account-number) reference account
foreign key (costumer-name) reference costumer)
on delete cascade on update cascade

INTEGRITAS ENTERPRISE
Integritas enterprise mengizinkan kita untuk menentukan spesifik business rules sendiri yang tidak sama pada kategori integritas yang lainnya.




TRANSAKSI DAN KONKURENSI

Transaksi pada basis data adalah satu atomic operasi berupa lojik pekerjaan maupun lojik recovery yang bisa terdiri dari beberapa intruksi. Tujuan dari transaksi adalah menjaga database dari kehilangan data dan kerusakan,seperti system crash dan pengaksesan data yang sama secara bersamaan oleh dua aplikasi yang berbeda yang menimbulkan gangguan. Ada empat elemen dalam transaksi yang biasa disingkat ACID, yaitu :
  • Atomicity,  semua berhasil atau semua gagal
  • Consistency,  transaksi mempertahankan konsistensi database
  •  Isolation,  transaksi terisolasi satu dengan yang lain
  •   Durability,  setelah commit update harus survive di database

Dan ada dua jenis transaksi yang paling penting dalam sistem basis data adalah :
  • Commit, memberi tanda bahwa transaksi telah selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system)
  • Rollback, memberi tanda bahwa transaksi gagal. Semua update harus di-undo
Untuk lojik recovery atau system recovery database dilakukan ketika terjadi kegagalan media, kegagalan system atau kesalahan pada transaksi. Sistem recovery menggunakan fungsi rollback dan checkpoint. Checkpoint adalah interval tertentu pada perjalanan transaksi basis data yang menyimpan keadaan basis data saat itu. Checkpoint dapat dilakukan untuk merecovery database secara backward (undo) maupun forward (redo).
Sedangkan konkurensi adalah sebuah mekanisme pada sistem basis data yang mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama tanpa adanya gangguan. Pada umumnya terdapat 3 masalah utama pada konkurensi:
  • Lost update problem, ketika dua user mengupdate dua buah data yang sama
  •  Uncommited dependency problem, ketika user yang satu meretrieve data dan user yang lain merollback data tersebut
  •  Inconsistent analysis problem, ketika user yang satu meretrieve data dan user yang lain mengupdate data tersebut
Untuk menangani masalah tersebut, dilakukan proses locking, jika sebuah transaksi ingin record/resource tidak berubah dalam waktu tertentu maka dia meminta lock. Ada dua jenis lock yaitu :
  •  Exclusive Lock (Xlock) Ã  write lock
  • Shared Lock (Slock) Ã  read lock
Jadi cara kerjanya:
  • Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang sama harus diabaikan.
  •  Jika transaksi A memegang Slock pada record R maka :
o   Permintaan Xlock transaksi lain pada R ditolak
o   Permintaan Slock transaksi lain pada R diterima

Tapi, ada satu masalah yang dapat terjadi ketika melakukan proses locking ini, yaitu deadlock. Yaitu, situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai. Cara penanganannya adalah:
  • Deteksi dan pecahkan deadlock
  • Deteksi deadlock : wait-for-graph
  • Pecahkan deadlock : salah satu dirollback paksa
  • Ostrich Algorithm : diabaikan




XML

Definisi XML
XML adalah bahasa markup seperti HTML, tetapi tanpa format yang tetap. Sebuah bahasa markup menyediakan kata-kata dan tag yang menggambarkan dokumen dan mengidentifikasikan bagian-bagiannya. HTML mengenai presentasi ketika XML bekerja untuk menyimpan dan mengirimkan data terstruktur. Semua file XML mengikuti beberapa aturan dasar untuk sintaks dan form.
Dari W3C yang merekomendasikan standar ini pada tanggal 10 Februari 1998 mengartikan bahwa eXtensibel Markup Language adalah sebuah format  berbasis teks yang sederhana untuk mempresentasikan informasi yang tersturktur seperti dokumen, data, konfigurasi, buku, transaksi, invoice, dan masih banyak lagi. Ini berasal dari format standar yang lebih tua disebut SGML (ISO 8879), agar lebih cocok untuk digunakan Web.

Kegunaan XML
XML merupakan salah satu format yang paling banyak digunakan untuk berbagi informasi terstruktur hari ini: antara program, antara orang-orang, antara komputer dan orang, baik lokal dan di seluruh jaringan.
Contoh singkat:







BACK END PROGRAMMING
Apa yang anda ketahui tentang back-end programming? Back-end programming adalah program yang berjalan pada database secara otomatis ketika terjadi suatu pemicu (trigger) tertentu. Dalam sistem basis data itu seperti PL/SQL. PL/SQL itu dirancang khusus untuk pengolahan mulus dari perintah SQL. Ini memberikan sintaks khusus untuk tujuan ini dan mendukung persis datatypes sama seperti SQL. Server-side PL / SQL disimpan dan disusun dalam Oracle Database dan berjalan dalam executable Oracle. Secara otomatis mewarisi ketahanan, keamanan, dan portabilitas Oracle Database. Blok PL/SQL ini memiliki beberapa kelebihan:
  • Integritas ketat dengan SQL;
  • Performa yang lebih baik;
  • Produktifitas yang lebih tinggi;
  • Portabilitas penuh;
  • Keamanan ketat;
  • Akses ke paket-paket yang telah di tentukan;
  • Dapat mendukung pemograman berorientasi objek dan mendukung pengembangan halaman dan aplikasi web dan server pages (PSPs).
 PL/SQL ini memiliki beberapa komponen utama:
  • Anonymous Block, Anonymous block ini tidak dibuat (CREATE) dan tak disimpan pada database, biasanya dijalankan dari dalam aplikasi.
  • Strored Subprogram, PL/SQL Block ini yang dipanggil dengan sekumpulan parameter. PL/SQL memiliki dua jenis subprogram yaitu: procedure dan function. Secara umum procedure  digunakan untuk melaksanakan aksi dan function digunakan untuk komputasi suatu nilai.
  • Trigger, blok PL/SQL yang disimpan dalam database dan akan diaktivasi ketika kita melakukan statement-statement SQL (DELETE, UPDATE, dan INSERT) pada sebuah tabel. Trigger itu mempunyai event, nah event itu telah yang menandakan bahwa trigger harus dijalankan. Adanya trigger dalam database akan meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat, kita tidak perlu lagi untuk melakukan validasi data.



Sumber:










Wednesday, April 08, 2015

DATABASE

Resume about DDL (Data Definition Language), ER-D (Entity-Relationship Diagram), DML (Data Manipulation Language) and Aggregation & Grouping! 

Here we go~


1. DDL


          Data Definition Language (DDL) adalah bahasa basis data yang digunakan untuk mendefinisikan, mengubah, dan menghapus basis data serta objek-objek yang diperlukan, seperti table, view, user, index dan sebagainya.

Secara umum, DDL yang digunakan meliputi perintah sebagai berikut:
  • CREATE; digunakan untuk membuat objek baru;
  • ALTER; digunakan untuk mengubah objek yang sudah ada;
  • DROP; digunakan untuk menghapus objek yang sudah ada.














Cara penggunaan perintah-perintah DDL:

1) CREATE

a) Membuat Database








b) Membuat Tabel













Keterangan:
  • Primary key, menjadikan field unik, nilainya berbeda dengan yang field lainya.
  • Auto_increment, menjadikan field terisi otomatis.
  • Not null, menjadikan field harus terisi, tidak boleh kosong.
2) DROP

a) Menghapus Tabel






b) Menghapus Database








3) ALTER


a) Mengubah Nama Tabel







b) Menambah Kolom






c) Mengganti Kolom










d) Menghapus Kolom












2. ER-D

          ER-D adalah suatu cara memodelkan suatu data di tingkat konseptual dalam perancangan basis data. ER-D diperlukan untuk menyajikan dan menjadikan data lebih mudah dimengerti dalam rangka mempermudah perancangan dan pengaksesan basis data. Itulah ER-D, yang menjelaskan hubungan antardata dalam basis data berdasarkan objek-objek dasar data yang mempunyai hubungan antarrelasi.

Komponen ER-D:


1) Entitas

          Entitas yaitu suatu objek yang dapat dibedakan dengan objek lainnya di dalam dunia nyata. Entitas di dalam ER-D direpresentasikan oleh bangun datar persegi panjang.
Contoh:









2) Atribut

          Atribut merupakan karakteristik dari entity atau relationship yang menyediakan
penjelasan detail tentang entity atau relationship tersebut. Atribut di dalam ER-D
direpresentasikan dalam bentuk bangun datar oval.
Contoh:








3) Relasi

          Relasi yaitu hubungan yang terjadi antara satu atau lebih entitas. Relasi pada ER-D direpresentasikan dalam bentuk bangun datar belah ketupat.
Contoh:










4) Kardinalitas
          Kardinalitas relasi menunjukkan jumlah maksimum entitas yang dapat berelasi
dengan entitas pada himpunan entitas lain. Adapun kardinalitas yang terjadi
diantara dua himpunan entitas adalah sebagai berikut:

a. One to One









b. One to Many dan Many to One









c. Many to many







Contoh ER-D rumah sakit:




3. DML
          Data Manipulation Language (DML) adalah bahasa/perintah SQL yang berfungsi untuk memanipulasi data yang ada di dalam basis data(database), dan digunakan untuk mengambil, memasukkan, memodifikasi, bahkan menghapus informasi/isi
yang ada didalam database tersebut.

1) INSERT
          Insert merupakan perintah yang berfungsi untuk menyisipkan, memasukkan dan menyimpan data dari luar sistem ke dalam tabel. Perintah insert memiliki 2 cara yaitu :
a. Cara Langsung
INSERT INTO namatabel VALUES (isi1, isi2, isi3, ...);
b. Cara Tak Langsung
INSERT INTO namatabel (namafield1, namafield2,...) VALUES (isi1, isi2, isi3, ...);

2) SELECT
          Berfungsi untuk melakukan pengambilan sejumlah data yang ada di dalam table untuk ditampilkan ataupun dimanipulasi. SQL yang digunakan:
a. Menampilkan seluruh isi tabel
SELECT * FROM nama_tabel;

b. Menampilkan dengan klausa WHERE
SELECT * FROM nama_tabel WHERE kondisi;

c. Menampilkan field tertentu
SELECT nama_field1, nama_field2,...... FROM nama_tabel;

d. Menampilkan data yang diambil dari beberapa tabel
SELECT tabel1.field, tabel2.field,....
FROM tabel1, tabel2,....
WHERE kondisi;

e. Penggunaan operator AND dan OR
          Untuk mengambil data tertentu dengan syarat/kondisi lebih dari satu, dan apabila semua syarat bernilai benar.
SELECT * FROM nama_tabel WHERE kondisi1 AND kondisi2 AND kondisi3..;

SELECT * FROM nama_tabel WHERE kondisi1 OR kondisi2 OR kondisi3...;

f. Penggunaan operator BETWEEN dan NOT BETWEEN
          Untuk menyaring data dengan rentang tertentu (memiliki jangkauan).
SELECT * FROM nama_tabel WHERE field BETWEEN batas_bawah AND
batas_atas ;
SELECT * FROM nama_tabel WHERE field NOT BETWEEN batas_bawah AND
batas_atas ;

g. Penggunaan operator LIKE dan NOT LIKE
          Untuk menseleksi data dengan kriteria mengandung kata atau klausa yang didefinisikan oleh LIKE.
SELECT * FROM nama_tabel WHERE field LIKE ‘%....’;
SELECT * FROM nama_tabel WHERE field LIKE ‘....%’;
SELECT * FROM nama_tabel WHERE field LIKE ‘%....%’;

3) UPDATE
          Perintah ini digunakan untuk memperbarui data lama menjadi data terbaru. Disini perlu diingat perintah update ini harus dikuti dengan perintah WHERE sebagai kondisi untuk menentukan data mana yang akan diperbarui.
UPDATE nama_tabel SET field1=nilai_baru, field2=nilai_baru, …..
WHERE kondisi;

4) DELETE
          Perintah ini digunakan untuk menghapus atau menghilangkan baris data (record) dari table. Penggunaan perintah ini juga harus menggunakan WHERE sebagai kondisi untuk menentukan data mana yang akan dihapus.
DELETE FROM nama_tabel WHERE kondisi;


4. Aggregation & Grouping
          Aggregasi adalah fungsi matematika sederhana dalam SQL. Biasanya fungsi aggregasi ini digunakan pada bagian SELECT untuk melakukan perhitungan dengan melibatkan sekumpulan data atau nilai. 
          Grouping merupakan fungsi untuk mengelompokkan suatu data tabel berdasarkan salah satu field yang diperlukan dari tabel tersebut.

a. Aggregasi
1. AVG()
          Fungsi ini digunakan untuk menghasilkan nilai rata-rata sekelompok nilai dari sebuah kolom (field) numerik.
Perintah umum: SELECT AVG(nama_field) From nama_tabel

2. COUNT()
          Fungsi ini digunakan untuk menghasilkan nilai jumlah data (baris/record) dari sekelompok data tabel maupun view.
Perintah umum : SELECT COUNT(nama_field) From nama_tabel

3. MAX()
          Fungsi ini digunakan untuk menghasilkan nilai tertinggi sekelompok nilai dari sebuah kolom (field) numerik.
Perintah umum : SELECT MAX(nama_field) From nama_tabel

4. MIN()
          Fungsi ini digunakan untuk menghasilkan nilai terendah dari sebuah kolom (field) numerik.
Perintah umum : SELECT MIN(nama_field) From nama_tabel

5. SUM()
          Fungsi ini digunakan untuk menghasilkan nilai total jumlah sekelompok dari sebuah kolom (field) numerik.
Perintah umum : SELECT SUM(nama_field) From nama_tabel

6. ROUND()
          Fungsi ini digunakan untuk melengkapi bidang numerik dengan jumlah desimal yang ditentukan.
Perintah: SELECT ROUND(nama_field,jumlah_decimal) From nama_tabel

7. STDDEV_POP()
          Fungsi ini digunakan untuk menghasilkan nilai standart deviasi populasi.
Perintah umum: SELECT STDDEV_POP(nama_field) From nama_tabel

8. VAR_POP()
          Fungsi ini digunakan untuk menghasilkan nilai standart varian populasi.
Perintah umum : SELECT VAR_POP(nama_field) From nama_tabel

b. Grouping
1. Order By
          Order by adalah perintah yang digunakan untuk menampilkan data secara terurut berdasarkan nilai tertentu. Order by dikelompok menjadi 2 jenis yaitu ascending (data diurutkan dari yang terkecil ke terbesar) dan descending(data diurutkan dari yang terbesar ke terkecil).
Perintah umum : SELECT *FROM(nama_tabel) ORDER BY atribut ASC/DESC

2. Group By
          Group by merupakan perintah yang digunakan untuk mengelompokan beberapa data pada perintah SELECT;
Perintah Umum : SELECT *FROM(nama_tabel) GROUP BY atribut;

3. Having
          Fungsi Having terkait dengan GROUP BY dan AGREGASI. Biasanya digunakan untuk menentukan kondisi tertentu pada group by dan kondisi tersebut berkaitan dengan fungsi agregasi. Fungsi HAVING sebenarnya memiliki kemiripan dengan WHERE dalam penggunaannya. HAVING digunakan dalam SQL karena WHERE tidak dapat digunakan dengan fungsi agregasi.
Perintah Umum: SELECT atribut FROM nama_tabel GROUP BY atribut HAVING fungsi_agregasi:

4. View
          View dapat disebut sebagai sebuah table semu/bayangan. Data-data pada table view dapat merupakan gabungan dari data pada tabe-tabel lain. View dapat digunakan untuk membatasi pengaksesan atas sebuah table tertentu, jadi user hanya boleh melihat table yang berisi data-data secara spesifik.
Perintah umum:CREATE VIEW NAMA_VIEW AS<QUERY>




Sumber:
Fathansyah. 2012. Basis Data Edisi Revisi. Informatika: Bandung.

Modul Praktikum Basis Data 2014 oleh Tim Asisten Praktikum Basis Data 2014.
http://www.slideshare.net/Fajar_Sany/pengertian-ddl-dml

Modul Basdat #1 DML 2014
Modul #3 Praktikum Basis Data 2014
Modul Basis Data 1, Fakultas Teknik, Jurusan Teknik Komputer Dan Jaringan, Politeknik
Negeri Pontianak.

http://www.w3schools.com/