Jumat, 17 Agustus 2018

pemrograman Java (PBO)

 pemrograman Java

Proyek Java dimulai pada tahun 1991, ketika sejumlah insinyur perusahaan Sun yang dimotori oleh James Gosling. Bahasa pemrograman Java dikeluarkan pada tahun 1995, kemudian menjadi bahasa pemrograman yang banyak digunakan pada World Wide Web. Keberhasilan Java disebabkan oleh beberapa faktor, diantaranya penggunaan pada Web dalam jaringan Internasional dimana komputer-komputer tidak menggunakan platform yang sama. Dengan demikian Java menjadi bahasa pemrograman pilihan untuk program yang perlu dijalankan pada berbagai sistem komputer. Pertama-tama program kecil yang dibuat disebut Applet. Applet Java pada umumnya ditempatkan dalam halaman Web untuk melengkapi banyak keperluan, seperti animasi logo atau input data data dari suatu aplikasi. Java juga digunakan untuk membuat program aplikasi umum dengan skala besar pada suatu komputer. Pada awalnya Java dinamai "Oak" oleh Gosling namun kata Oak sudah dipakai terlebih dahulu sehingga ia merubahnya menjadi Java.

A.    KARAKTERISTIK JAVA
Menurut informasi dari Sun Microsystems, bahasa pemrograman Java memiliki beberapa karakteristik.
a.    Sederhana. Pengembangan java bedasarkan bahasa C++ tapi, ada beberapa fitur yang dihilangkan.
b.    Berorientasi objek. Pendekatan orientasi objek merupakan fitur bawaan dari program Java.
c.    Terdistribusi. Tidak seperti C++ dan C, Java secara spesifik dirancang untuk lingkungan jaringan.
d.    Interpreter. Kompiler Java menerjemahkan file sumber Java menjadi bytecode .
e.    Kokoh. Perangkat lunak yg kuat tidak mudah menghentikan program karena terdapat bug atau error.
f.    Aman. Java membatasi pd pointer sehingga developer tidak dapat mengakses memori yg tidak diizinkan.
g.    Performance Tinggi. Kompilasi Java termasuk kebebasan menerjemahkan bytecode ke kode mesin pada platform yg ada.
h.    Multithreaded. Java adalah bahasa yg dapat digunakan untuk membuat aplikasi dimana ada beberapa event yg berjalan bersamaan.
i.    Dinamis. Metode dan variable dari instance baru dapat digunakan tanpa mempengaruhi objek client.

B.    PEMROGRAMAN BERORIENTASI OBJEK (OOP)
Program berorientasi objek atau OOP (Object Oriented Programming) memiliki 3 karakteristik.
a.    Enkapsulasi. Yang artinya Pembungkusan. Merupakan suatu mekanisme atau metode untuk menyembunyikan atau mengindari suatu proses dari kemungkinan interferensi sekaligus menyederhanakan penggunaan sistem itu sendiri agar tidak bisa diakses secara langsung dengan cara method atau proses tidak didefiniskan seluruhnya sebagai public tetapi didefinisikan sebagai private.
b.    Inherritance. Yang artinya Pewarisan. adalah suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkan ciri atau sifat dari class tersebut. Atau bisa dikatakan membentuk suatu hierarki.
c.    Polymorphism. Yang artinya berbentuk banyak. konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah suatu objek agar melakukan suatu aksi atau tindakan yang mungkin akan memberikan hasil akhir yang serupa, tetapi melalui proses yang berbeda.

C.    TIPE DATA
Jenis tipe data pada Java pada umumnya sama seperti pada bahasa pemrograman lain seperti C++ dan C, yaitu:

a.    Integer (Byte, Short, Long, Int).
b.    Floating Point (Float dan Double).
c.    Character.
d.    Boolean.

D.    SYNTAX BAHASA PEMROGRAMAN JAVA
Setiap bahasa pemrograman memiliki cirri khas dalam penulisan programnya yang disebut Syntax. Begitu pula pada dengan Java, memiliki cara penulisan syntax yang berbeda dari bahasa pemrograman lainnya. Adapun istilah-istilah yang sering digunakan didalam syntax Java adalah sebagai berikut :

a.    Kelas. Adalah persepsi untuk objek tertentu. Kita dapat menggunakan definisi kelas untuk membuat objek dari tipe kelas. Hal ini berarti membuat objek yang mempunyai komponen berhubungan dengan apa yg dimiliki oleh kelas. Contoh :
                                     Class Constr \\ constr adalah sebuah kelas.
                                    {
                                     }

b.    Atribut. Dinyatakan sebagai variable menggambarkan data yg member informasi mengenai kelas. Contoh :
                                     Class Circle
                                     {
                                     Static final double pi = 3.14;
                                     Double radius = 10;
                                     \\ pi dan radius merupakan atribut dari kelas Circle
                                     }

c.    Metode. Adalah suatu blok dari program yang berisi kode dengan nama dan property yg dapat digunakan kembali. Contoh :
                                     Double hitungLuas() \\ hitungLuas adalah suatu metode
                                    {
                                     }

d.    Constructor. Adalah metode khusus yg memiliki nama sama dengan nama kelas. Contoh :
                                     Constr() \\ Constr adalah suatu constructor
                                     {
                                      }

e.    Paket. Merupakan bagian implicit standar Java untuk mengelompokan kelas dengan interface menjadi suatu unit, yaitu koleksi dari kelas dengan nama tertentu. Penulisannya ditempatkan dipernyataan pertama. Contoh :
                                      Package Geometri;
                                      \\ Geometri adalah sebuah paket

f.    Modifier. Tingkatan variable dan metode dalam kelas yg dapat diakses dari kelas yg sangat kompleks. Hal ini tergantung dr atribut akses yg didefinisikan dalam kelas dan bagaimana kelas dalam paket yg sama. Contoh modifier adalah default, public, protected, private, static, final, abstract, synchronized, native.

Itu adalah beberapa istilah-istilah dalam syntax Java, berikut ini adalah bentuk utuh dari program Java sederhana :



E.    OUTPUT dan INPUT
Output Data
    Output data dalam Java dapat menggunakan objek out untuk menampilkan data program langsung. Objek ini merupakan bagian dari kelas system yg ada dalam library java.lang. Dengan objek tersebut dapat mengguanakan metode print() dan println() dari kelas PrintStream yg terdapat pada library Java.io.
Contoh :
    System.out.print(“Nama:”);
    System.out.println(“Rico”);
    System.out.print(“Alamat:”);
    System.out.println(“Jakarta”);

Output yg dihasilkan :
    Nama:
    Rico
    Alamat:
    Jakarta

Input Data
    Java tidak mempunyai instruksi untuk input keyboard, fungsi input Java terjadi pada tingkat aliran data. Jadi, untuk memasukan inputan dari keyboard integer, string, float harus dibuat rutin bedasarkan metode dan subkelas InputStream Java, yg merupakan bagian pustaka java.io. Dalam program menggunakan kelas dalam pustaka java.io, yaitu IOException, InputStreamReader, dan BufferedReader. Contoh program sebagai berikut :
   
    Import java.io.*;    \\ import paket java.io
    Public class InputData
    {
        Public static void main(string[]args) throws IOException
        {
           InputStreamReader reader = new InputStreamReader(system.in);
            BufferedReader input = new BufferedReader(reader);
            System.out.print(“masukan kata =”);
            String teks = input.readLine();
            System.out.println(teks);
        }
    }

Hasil eksekusi :

 Masukan kata = Hai
 Hai
       

Nama    = Rico Aditya Utama
NPM     = 27113612
Kelas     = 2KB01


Sumber :
Buku "Pemrograman Berorientasi Objek dengan Java", Penerbit Graha Ilmu, Penulis Ariesto Hadi Sutopo dan Fajar Masya.

Pemrograman Web Berbasis JSP

Pemrograman Web Berbasis JSP

Pemrograman Web Berbasis JSP
Bahasa skrip untuk pemrograman web
Seperti dijelaskan pada halaman pemrograman web dinamis, bahwa: ada dua model pemrograman web yaitu client-side dan server-side. Bahasa pemrograman untuk membuat web dinamis juga terbagi menjadi dua yaitu: client-side script dan server-side script. Bahasa pemrograman yang digunakan dalam membuat aplikasi pada sisi client biasa disebut sebagai client-side script. Client-side script yang umum digunakan adalah javascript dan vbscript. Keuntungan utama dari client-side script adalah waktu prosesnya yang jauh lebih cepat dibanding server-side. Hal ini karena seluruh permintaan pengguna akan diproses pada komputer pengguna sendiri. Namun, masalah terbesar dari aplikasi dengan client-side script adalah keamanan kode dan data. Hal ini karena pengguna dapat dengan             mudah             membuka dan melihat kode program.
Contoh penggunaan client-side script adalah:

  • aplikasi web untuk kalkulator, tanggal atau permainan.
  • pemeriksaan event pada browser, jika mouse diklik kanan maka akan muncul keterangan yang dibutuhkan.
  • validasi isi form yang diinputkan oleh pengguna, sebelum isi form tersebut dikirim ke server.
Bahasa pemrograman yang digunakan dalam membuat aplikasi pada sisi server biasa disebut sebagai server-side script. Ada beberapa keuntungan pada penggunaan server-side script, yaitu:
  • Keamanan kode script yang kita buat tidak akan dapat dibaca oleh user karena seluruhnya akan disimpan dan dijalankan di web server. Adapun yang akan dikirim ke client (pengguna) adalah hasil pengolahan yang berupa dokumen dalam format html saja.
  • Koneksi dengan basis data    
    Kemampuan koneksi dengan basis data merupakan keuntungan terbesar dari server-side script. Dengan kemampuan ini informasi yang dihasilkan oleh web server menjadi sangat dinamis bukan lagi halaman-halaman statis. Informasi yang disampaikan ke user tergantung dari apa yang diinginkan oleh user tersebut.
  • Dapat melakukan tracking (pelacakan) pengguna             
    Dengan server-side script, dapat diketahui siapakah user yang sedang akses ke aplikasi web dengan menggunakan fasilitas session.
Saat ini ada tiga teknologi utama yang digunakan dalam server side script, yaitu: asp (termasuk asp.net), php, dan jsp. Jsp akan kita bicarakan pada halaman lain dari label ini.
Pengertian JSP (Java Server Pages)
JSP adalah suatu teknologi web berbasis bahasa pemrograman Java dan berjalan di Platform Java, serta merupakan bagian teknologi J2EE (Java 2 Enterprise Edition). JSP sangat sesuai dan tangguh untuk menangani presentasi di web. Sedangkan J2EE merupakan platform Java untuk pengembangan sistem aplikasi enterprise dengan dukungan API (Application Programming Inteface) yang lengkap dan portabilitas serta memberikan sarana untuk membuat suatu aplikasi yang memisahkan antara business logic (sistem), presentasi dan data. JSP merupakan bagian dari J2EE dan khususnya merupakan komponen web dari aplikasi J2EE secara keseluruhan. JSP juga memerlukan JVM (Java Virtual Machine) supaya dapat berjalan, yang berarti juga mengisyaratkan keharusan menginstal Java Virtual Machine diserver, dimana JSP akan dijalankan. Selain JVM, JSP juga memerlukan server yang disebut dengan Web Container. Teknologi JSP menyediakan cara yang lebih mudah dan cepat untuk membuat halaman-halaman web yang menampilkan isi secara dinamik. Teknologi JSP di desain untuk membuat lebih mudah dan cepat dalam membuat aplikasi berbasis web yang bekerja dengan berbagai macam web sever, application server,broser dan developmenttool         server.
Java Server Pages (JSP) adalah bahasascripting untuk web programming yang bersifat server side seperti halnya PHP dan ASP. JSP dapat berupa gabungan antara baris HTML dan fungsi-fungsi dari JSP itu sendiri. Berbeda dengan Servlet yang harus dikompilasi oleh USER menjadi class sebelum dijalankan, JSP tidak perlu dikompilasi oleh USER tapi SERVER yang akan melakukan tugas tersebut. Makanya pada saat user membuat pertama kali atau melakukan modifikasi halaman dan mengeksekusinya pada web browser akan memakan sedikit waktu sebelum ditampilkan. Daur Hidup JSP sebagai gambaran bagaimana JSP melalui masa hidupnya bisa dilihat pada gambar berikut:
Gambar 2. 1 Daur Hidup JSP
Seperti tipe aplikasi java lainnya (Servlet, Applet, Midlet dll), JSP juga bertipe strong type artinya penggunaan variable pada halaman tersebut harus dideklarasikan terlebih dahulu. Misalnya pada sintaks pengulangan berikut :
for (int i=1; i<13; i++)
{
// statement
}
Seperti halnya skrip-skrip server side yang lain, JSP pun memerlukan Web server. Skrip ASP memerlukan IIS sebagai web server, PHP memerlukan IIS atau Apache, sedangkan JSP bisa menggunakan Apache Tomcat sebagai salah satu web server yang mendukungnya agar bisa menjalankan file-file JSP yang berbasis Java, diperlukan web server yang mampu memproses Java, atau minimal JSP engine yang dapat terintegrasi dengan web server.
Web Container Menurut spesifikasi J2EE, dikenal EJB ContainerWeb Container dan Application ServerWeb Container adalah services yang dijalankan oleh suatu Java Application Server hususnya untuk             services compaliance dengan Servlet dan JSP. Selain menjadi services oleh Java Application ServerWeb Container dapat berdiri sendiri. Contoh Web Container adalah Tomacat, ServletExec, Resin, Jrun, Blazix. Web Container juga dapat bekerja sama dengan web server, misalnya Tomcat dengan Apache, Jrun dengan IIS. Web Server adalah software untuk server yang menangani request melalui protokol HTTP yang digunakan oleh situs-situs web saat ini dalam menangani request file statik HTML, sepeti Apache dan Microsoft IIS. Web server sekarang sering “dibungkus” oleh Java Application Server sebagai HTTP       Server.
Java     Application Server adalah Server yang terdiri atas HTTP Server (Web          Server) EJB Container maupun Web   Container. Contoh Java Application Server: Sun J2EE RI 1.2/1.3, Borland AppServer 4.5/Enterprise Server 5.0, Oracle9iApplication Server dan lainnya, dikutip dalam  (Dakir, Satriyanto, & Yuwono, 2010).
PERANCANGAN PROGRAM
Ada beberapa program yang sangat penting agar aplikasi system informasi praktek bersama dokter spesialis ini dapat berjalanan. Diantaranya adalah Koneksi database, penambahan database, pengubahan database, penghapusan database, transaksi obat, pembayaran gaji dokter dan pembukuan.
v  Koneksi Database
Hal pertama yang perlu dilakukan adalah menghubungkan database dengan program sehingga pada nantinya program yang dijalankan dapat mengambil nilai-nilai dari database.
v  Penambahan Database
Penambahan data pada database MySQL dengan menggunakan perintah INSERT INTO . Tapi sebelumnya harus dikoneksikan terlebih dahulu
v  Pengeditan Database
Data yang sudah dimasukkan dalam database kadang terdapat kekeliruan dalam proses entri data. Jika terdapat hal semacam itu maka admin harus melakukan proses pengeditan data untuk memperbaiki kesalahan pada database tersebut. Admin menggunakan perintah UPDATE untuk proses pengeditaan tersebut.
v  Penghapusan Database
Seorang admin kadang perlu untuk menghapus data pada database yang sudah dianggap tidak diperlukan lagi. Pada MySQL ini perintah yang digunakan untuk penghapusan data adalah DELETE.
v  Dasar-dasar jsp
Jsp menyediakan empat kategori tag, yaitu: directive, elemen scripting, komentar, dan action. Pada bagian ini kita tidak akan bicara tentang deklarasi variabel, struktur kontrol program, class dan method. Hal ini karena jsp didasarkan pada java, sehingga bagian-bagian tersebut sama dengan apa yang telah kita pahami pada label tentang pemrograman java.
o   Mekanisme kerja aplikasi web berbasis jsp
Secara umum, aplikasi web berbasis jsp akan mengikuti mekanisme seperti gambar 14.8. Halaman-halaman web yang mengandung kode jsp akan dikirim ke web server. Kemudian, web server akan memanggil perangkat lunak penerjemah jsp. Oleh penerjemah ini, kode jsp akan dirubah menjadi file sumber berekstensi .java. file ini akan dikompilasi untuk menghasilkan class. Hasil dari kompilasi ini akan dijalankan kemudian hasilnya akan disampaikan kepada web server untuk diteruskan pada browser client.
Sekilas proses di atas terlihat bertele-tele. Pada awalnya, memang untuk menampilkan halaman yang mengandung jsp terasa lambat karena proses kompilasi harus dilakukan. Tetapi ketika memanggil untuk yang kedua kali maka proses penampilan halaman akan sangat cepat. Hal ini karena proses kompilasi tidak perlu dilakukan lagi.

program basis data

SISTEM BASIS DATA DAN BASIS DATA

basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi.
Tujuan Basis data sendiri adalah sebagai berikut ini:

  • 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.
Sistem basis data merupakan suatu kumpulan data-data yang berhubungan. Data-data tersebut diolah dengan sebuah perangkat lunak ( Software )  dan hasil dari pengolahan data itu disimpan dalam sebuah perangkat keras ( Hardware).
Dalam sebuah sistem basis data terdapat beberapa komponen pendukung yaitu basis data (database). Hardware, yang dapat berupa komputer, media penyimpan sekunder, juga media komunikasi untuk sebuah sistem jaringan. Software, yang merupakan sebuah perangkat lunak yang berguna untuk mengolah data. Brainware (user), yaitu orang-orang yang berhubungan langsung dengan database tersebut.
Tujuan dan Fungsi Sistem Basis data sendiri adalah sebagai berikut ini:

  • Redudansi data dan juga inkonsistensi data.
  • Kesuliatan dalam pengaksesan data.
  • Data Isolation.
  • Konkurensi pengaksesan.
  • Masalah keamanan.
  • Masalah Integritas.
Pemakai sistem basis data diantaranya:
  • Programmer Aplikasi yaitu orang atau pemakai yang berinteraksi dengan basis data melalui Data Manipulation Language (DML),
  • User Mahir (Casual User) yaitu pemakai yang berinteraksi dengan sistem tanpa menulis modul program. Mereka menyatakan query untuk mengakses data dengan bahasa query yang telah disediakan oleh suatu DBMS.
  • User Umum (End User/ Naïve User) yaitu Pemakai yang berinteraksi dengan sistem basis data melalui pemanggilan satu program aplikasi permanen (executable program) yang telah disediakan sebelumnya.
  • User Khusus (Specialized User) yaitu Pemakai yang menulis aplikasi basis data non konvensional, tetapi untuk keperluan-keperluan khusus.

BAGIAN 2. INTEGRITAS DATA DAN CONSTRAINT

Integritas data adalah menjamin konsistensi data terhadap semua konstrain yang diberlakukan terhadap data tersebut, sehingga memberikan jaminan keabsahan data itu sendiri. Tujuannya adalah menjaga data agar data yang tidak valid tidak masuk ke database. Menjaga konsistensi data pada relasi keterkaitan antar tabel.
Jenis-jenis Integritas Data :
·         Domain integrity (Integritas jangkauan nilai)
Tidak ada item data yang melanggar jangkauan nilai di tiap kolom data.
·         Integrity Entity (Integritas Entitas)
Tidak ada baris data duplikat dalam satu tabel.
·         Integrity Referential (Integritas acuan)
Menjaga relasi atau korespondensi antar tabel.
·         Redudant Data Integrity (Integritas Data Antar Tabel)
Data di sebuah tabel tidak berulang di tabel lain.
·         Bussiness Rule Integrity (Integritas Aturan Nyata)
Data di suatu tabel harus memiliki nilai yang layak dan dapat diterima ditempat sistem basis data itu diterapkan. Integritas jenis ini bersifat kasuistis, artinya sangat bergantung pada jenis data, lokasi, lingkungan, dan waktu penerapan basis data.
·         Membuat Constraint
Constraint merupakan suatu aturan yang membatasi jenis data yang diijinkan untuk dimasukkan ke dalam tabel.

Constraint Classification (Tipe-tipe Constraint) :
·         PRIMARY  KEY Constraint
Berguna untuk menspesifikasikan kolom dalam tabel. Tidak boleh kosong dan harus unik, untuk menghubungkan satu tabel dengan tabel lain.
·         FOREIGN KEY Constraint
Digunakan untuk menspesifikasikan kolom foreign key pada suatu tabel. Foreign Key digunakan untuk menghubungkan dua tabel. Kolom foreign key adalah kolom atau kombinasi beberapa kolom dalam suatu tabel yang selalu merujuk pada kolom primary key pada suatu tabel.
·         UNIQUE Constraint
Digunakan untuk menjamin bahwa data pada suatu kolom atau beberapa kolom tidak diijinkan sama.
·         CHECK Constraint
Digunakan untuk membatasi suatu nilai pada kolom dengan nilai tertentu yang diijinkan masuk.
·         DEFAULT Constraint
Merupakan atribut opsional yang digunakan untuk memberikan suatu nilai tertentu pada suatu kolom jika kolom tersebut tidak dimasukkan suatu data.
·         NOT NULL
Digunakan untuk menjamin tidak ada nilai null (kosong) yang muncul pada suatu kolom tertentu sehingga bila tidak mengisikan nilai pada kolom tersebut maka akan muncul error.



BAGIAN 3. TRANSAKSI DAN CONCURRENCY

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).
Cocurrency adalah ketika DBMS mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama. Dibutuhkan Concurrency Control Mechanism (CCM) agar transaksi tidak saling “mengganggu”.

Terdapat 3 masalah dalam concurrency, yaitu:
-          Lost update problem
-          Uncommited Depedency Problem
-          Incosistent Analysis Problem
Cara penyelesaian masalah cocurrency adalah dengan cara
-          Harus adanya aturan (Harus adanya role accesbility, tidak di perbolehkan adanya Role super admin)
-          Commit harus bisa masuk level fisik. Ketika data tidak commit maka bisa mempengaruhi sistem.
Locking
Locking terjadi jika suatu transaksi ingin record atau resource tidak berubah dalam waktu tertentu.
Jenis Locking terdiri dari 2, yaitu:
-          Exclusive Lock yaitu locking yang hanya bisa di gunakan untuk mengupdate dan membaca transaksi
-          Shared Lock yaitu locking yang hanya bisa di gunakan untuk membaca transaksi.
Hal yang harus di hindari dalam locking adalah Dead Lock. Dead Lock adalah kondisi pada saat dua atau lebih transaksi berada pada posisi wait-state. Satu sama lain menunggu lock untuk di lepaskan sebelum dapat memulai transaksi.
Jalan keluar untuk Deadlock adalah dengan cara:
-          Deteksi dan Pecahkan Deadlock. Cara deteksi deadlock adalah dengan metode wait for graph. Dan cara untuk pecahkan deadlock adalah dengan cara salah satu transaksi di rollback paksa.
-          Dengan menggunakan Ostrich Algorithm. Yaitu dengan cara di abaikan atau di biarkan saja seperti burung unta ketika ada masalah dia menyembunyikan kepalanya di dalam tanah.
Isolation Level
2 level pengisolasian untuk memecahkan masalah transaksi, yaitu:
-          Read Commited
-          Transaksi hanya dapat melihat perubahan data setelah transaksi lain di commit pada data tersebut
-          Serializable
-          Level isolasi paling ketat. Dilaksanakan secara serial (berurutan). Di level ini sebuah query hanya akan melihat data yang sudah di commit sebelum transaksi di mulai.
Kompromi isolation Level. Adalah masalah yang ada pada isolation level, yaitu:
-          Dirty Read: Dapat melihat record yang sudah di rollback transaksi lain atau yang belum dicommit.
-          Nonrepeatable read: Transaksi 1 baca sebuah record, record tersebut diubah transaksi lain, saat Transaksi 1 membaca lagi nilainya sudah berubah
-          Phantoms: retrieve menghasilkan record baru yang sebelumnya tidak ada .








BAGIAN 4. BACK-END PROGRAMMING


Back-End programming adalah program yang berjalan pada database secara otomatis ketika terjadi suatu pemicu tertentu. Dalam oracle ada beberapa metode untuk melakukan back-end programming, yaitu dengan trigger dan stored procedure.

Trigger
Trigger adalah blok PL/SQL yang disimpan dalam database dan akan diaktivasi ketika kita melakukan statement-statement SQL (DELETE, UPDATE, dan INSERT) pada sebuah tabel. Aktivasi trigger didasarkan pada event yang terjadi di dalam tabel tersebut sehingga trigger dapat membantu dalam menjaga integritas dan konsistensi data. Implementasi trigger yang sering ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga. 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.

Berikut adalah daftar yang mungkin untuk aktivasi trigger :

Event

Keterangan

Before Insert   Diaktifkan sekali sebelum statement insert
After Insert      Diaktifkan sekali setelah statement insert
Before Update Diaktifkan sekali sebelum statement update
After Update   Diaktifkan sekali setelah statement update
Before Delete  Diaktifkan sekali sebelum statement delete
After Delete    Diaktifkan sekali setelah statement delete
Model-model yang digunakan untuk menspesifikasi aturan basis data aktif adalah model ECA (Event-Condition-Action). Aturan dalam model ECA memiliki tiga komponen yaitu:

Event, yang memicu suatu rule tersebut biasanya berupa operasi perubahan basis data yang secara eksplisit ditambahkan ke basis data. Namun pada umumnya, bisa berupa event temporal atau jenis event eksternal yang lain.
Condition, menentukan apakah suatu rule dijalankan atau tidak. Ketika suatu trigger dijalankan, maka bagian condition (bersifat optional) akan dievaluasi jika didefinisikan oleh yang membuat trigger. Jika evaluasi bagian condition bernilai TRUE maka aksi suatu rule dijalankan.
Action, biasanya berupa statement sql.
Manfaat trigger antara lain adalah :

Membuat integrity constraint yang kompleks.
Mencatat aktivitas suatu tabel (logging).
Sinkronisasi

Contoh Kasus :

Pada database supermarket, jika ada pembelian baru maka otomatis stok barang pada tabel barang akan berkurang sesuai dengan jumlah barang yang dibeli. Maka sintaks lengkapnya dalam pl / sql adalah sebagai berikut :

create table barang(
kode_barang varchar2(10) primary key,
nama varchar2(50),

stok_barang number

);


create table pembelian(

id_pembelian number primary key,

kode_barang varchar2(10),

constraint fk_kd_brg foreign_key (kode_barang) references barang(kode_barang)

jumlah_beli number,

harga number

);


create or replace trigger trg_stok_brg after insert on jumlah_beli for each row

begin

update barang set stok_barang =stok_barang – :new.jumlah_beli where id_pembelian = :new.id_pembelian;

end;

/


Stored Procedure
Subprogram adalah PL/SQL Blok yang dipanggil dengan sekumpulan parameter. PL/SQL memiliki dua jenis subprogram yaitu: procedure dan function. Dimana secara umum procedure digunakan untuk melaksanakan aksi dan function digunakan untuk komputasi suatu nilai.

Stored procedure adalah subprogram yang disimpan di dalam database berupa SQL + Bahasa prosedural. Ada beberapa kelebihan yang dapat diperoleh dengan menggunakan stored procedure, meliputi :

Dijalankan di database server -> performance lebih baik, network trafik lebih rendah.
Tools DBA -> praktis, selalu tersedia di database server.
Dapat digunakan oleh banyak aplikasi
Standarisasi business logic.
SP dapat dipanggil oleh aplikasi luar
Dapat memanfaatkan tipe, fungsi yang disediakan DBMS
Powerfull, tools sangat penting bagi DB designer, DB programmer dan DBA
Hampir semua RDBMS mensupport.
Walaupun syntax berbeda, umumnya menggunakan prinsip yang sama.



BAGIAN 5.XML (EXTENSIBLE MARKUP LANGUAGE)

XML adalah markup language sepertinya halnya HTML untuk dokumen yang mengandung informasi terstuktur dan ditujukan untuk pertukaran dokumen via web. XML berberntuk file teks yang cross platform, independen terhadap software dan hardware. Berikut adalah spesifikasi XML :

Tag: <nama> budi </nama>
Tag didefinisikan sendiri.
Tag dapat mempunyai atribut,
contoh : <daftar_mahasiswa jumlah = “40”> … </daftar_mahasiswa>
Struktur -> hirarki (tag dalam tag),
contoh: <mahasiswa><nama> susis </nama></mahasiswa>
Keuntungan XML :

Self Documenting -> dengan melihat tag, dapat diketahui isi dokumen.
Dapat dibaca software dan manusia.
Fleksibel
Dapat dikembangkan tanpa melanggar format lama.
Contoh: pada <pengarang>, tambah tag <telepon>, maka XML yang lama tetap dapat dibaca.
Hirarkis -> dapat merepresentasikan data kompleks
Independen terhadap bahasa pemrograman dan sistem operasi
Kerugian XML :

Pengulangan tag -> tidak efisien, ukuran file membengkak
Beberapa aturan XML :

Setiap tag harus ada penutupnya.
Penamaan Tag
case sensitive. <nama> tidak sama dengan <Nama>.
Tidak diawali dengan angka
Tidak mengandung spasi
Hindari ‘-’ dan ‘.’
Urutan hirarki harus benar.
Contoh yang salah: <mahasiswa> <nama> susis </mahasiswa></nama>
Setiap XML harus mengandung root (akar)
<root>

<child>

<subchild>…..</subchild>

</child>

</root>

Setiap atribut harus dalam tanda petik. Contoh:
<surat tanggal = “12/12/2007”>
<catatan oleh = “ Jum’at ” >
Komentar dalam XML:
<!—baris komentar –!>
Untuk membaca XML diperlukan proses parser. Parser XML dapat dilakukan dengan dua cara, yaitu :

Tree based, isi XML dipindahkan ke memori terlebih dulu -> DOM (Document Object Model).
Event based -> tidak dipindahkan ke memori. Fungsi callback dipanggil setiap menemui element. -> SAX (Simple API XML)

Basis Data: SQL

Basis Data: SQL (Structured Query Language)

Postingan kali ini saya dedikasikan kepada Dosen Basis Data tercinta :* Bapak 'Soegi' yang telah memberikan tugas kepada mahasiswanya (baca: saya). Saya memang awam untuk Mata Kuliah ini, tapi kemauan yang keras untuk belajar selalu hadir setiap saat dalam diri saya. Mungkin kalau ada teman-teman atau senior-senior yang ingin berbagi pengetahuannya, saya ingin sekali belajar kepada kalian :)

Sebelumnya saya Googling dengan berfokus pada pencarian ebook, namun kebanyakan ebook yang saya dapatkan mempunyai bahasa yang sulit dipahami, jadi saya mengurungkan untuk memposting isi dari ebook yang saya dapatkan kemarin, padahal kalau dilihat sekilas penjabarannya lumayan lengkap. Ya kalau ada yang ingin mendownloadnya nanti saya berikan link download di akhir postingan.

Apa itu SQL? / Pengertian SQL


SQL (Structured Query Language) adalah sebuah bahasa yang dipergunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya.

Sejarah SQL


Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama Jhonny Oracle yang membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language).

Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun mengubahnya menjadi SQL. Implementasi basis data relasional dikenal dengan System/R.

Di akhir tahun 1970-an, muncul perusahaan bernama Oracle yang membuat server basis data populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran John Oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam manajemen basis data.

Standarisasi SQL


Standarisasi SQL dimulai pada tahun 1986, ditandai dengan dikeluarkannya standar SQL oleh ANSI. Standar ini sering disebut dengan SQL86.Standar tersebut kemudian diperbaiki pada tahun 1989 kemudian diperbaiki lagi pada tahun 1992. Versi terakhir dikenal dengan SQL92. Pada tahun 1999 dikeluarkan standar baru yaitu SQL99 atau disebut juga SQL99, akan tetapi kebanyakan implementasi mereferensi pada SQL92.

Saat ini sebenarnya tidak ada server basis data yang 100% mendukung SQL92. Hal ini disebabkan masing-masing server memiliki dialek masing-masing.

Pemakaian Dasar SQL


Secara umum, SQL terdiri dari dua bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). Implementasi DDL dan DML berbeda untuk tiap sistem manajemen basis data (SMBD)[1], namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.

Data Definition Language (DDL)

DDL digunakan untuk mendefinisikan, mengubah, serta menghapus basis data dan objek-objek yang diperlukan dalam basis data, misalnya tabel, view, user, dan sebagainya. Secara umum, DDL yang digunakan adalah CREATE untuk membuat objek baru, USE untuk menggunakan objek, ALTER untuk mengubah objek yang sudah ada, dan DROP untuk menghapus objek. DDL biasanya digunakan oleh administrator basis data dalam pembuatan sebuah aplikasi basis data.

CREATE

CREATE digunakan untuk membuat basis data maupun objek-objek basis data. SQL yang umum digunakan adalah:

CREATE DATABASE membuat sebuah basis data baru. 
 CREATE DATABASE nama_basis_data
CREATE TABLE membuat tabel baru pada basis data yang sedang aktif.
CREATE TABLE nama_tabel
Secara umum, perintah ini memiliki bentuk:

CREATE TABLE [nama_tabel]
(
nama_field1 tipe_data [constraints][,
nama_field2 tipe_data,
...]
)
atau

CREATE TABLE [nama_tabel]
(
nama_field1 tipe_data [,
nama_field2 tipe_data,
...]
[CONSTRAINT nama_field constraints]
)
dengan:

nama_field adalah nama kolom (field) yang akan dibuat. Beberapa sistem manajemen basis data mengizinkan penggunaan spasi dan karakter nonhuruf pada nama kolom.

tipe_data tergantung implementasi sistem manajemen basis data. Misalnya, pada MySQL, tipe data dapat berupa VARCHAR, TEXT, BLOB, ENUM, dan sebagainya.

constraints adalah batasan-batasan yang diberikan untuk tiap kolom. Ini juga tergantung implementasi sistem manajemen basis data, misalnya NOT NULL, UNIQUE, dan sebagainya. Ini dapat digunakan untuk mendefinisikan kunci primer (primary key) dan kunci asing (foreign key).

Satu tabel boleh tidak memiliki kunci primer sama sekali, namun sangat disarankan mendefinisikan paling tidak satu kolom sebagai kunci primer.


Data Manipulation Language (DML)

DML digunakan untuk memanipulasi data yang ada dalam suatu tabel. Perintah yang umum dilakukan adalah:
  • SELECT untuk menampilkan data
  • INSERT untuk menambahkan data baru
  • UPDATE untuk mengubah data yang sudah ada
  • DELETE untuk menghapus data
SELECT

SELECT adalah perintah yang paling sering digunakan pada SQL, sehingga kadang-kadang istilah query dirujukkan pada perintah SELECT. SELECT digunakan untuk menampilkan data dari satu atau lebih tabel, biasanya dalam sebuah basis data yang sama.

SELECT adalah yang perintah paling sering SQL digunakan dan mempunyai format umum yang berikut:

 SELECT    [DISTINCT / ALL] {* I [columnExpression [AS newName]] [,…..]}
FORM    TableName [alias] [,…..]
[WHERE    condition]
[GROUP BY Column list] [HAVING condition]
[ORDER BY Column list]

columnExpression menampllkan suatu nama kolom atau suatu ungkapan, TableName adalah nama dari suatu tabel database ada atau view bahwa mempunyai untuk akses, dan alias adalah suatu singkatan opsional untuk TableName. Urutan memproses suatu statement SELECT adalah :

FROM           Menetapkan tabel atau tabel  itu untuk digunakan
WHERE         Menyaring baris yang tunduk kepada beberapa kondisi 
GROUP BY    Membentuk kelompok baris dengan kolom yang sama nilainya
HAVING        Menyaring kelompok yang tunduk kepada beberapa kondisi 
SELECT         Menetapkan kolom yang adalah untuk nampak keluaran
ORDER BY   Menetapkan order/ pesanan keluaran

Order yang menentukan di dalam statemen SELECT  tidak bisa diubah. Satu-Satunya dua ketentuan wajib dua hal pertama itu: : SELECT and FROM : sisanya adalah opsional 

Perintah select bisa digunakan dengan:
  • kondisi adalah syarat yang harus dipenuhi suatu data agar ditampilkan.
  • kondisi_aggregat adalah syarat khusus untuk fungsi aggregat.
Kondisi dapat dihubungkan dengan operator logika, misalnya AND, OR, dan sebagainya.

Contoh:
Diasumsikan terdapat tabel user yang berisi data sebagai berikut.

usernamepasswdtanggal_lahirjml_transaksitotal_transaksi
Aris6487AD5EF09-09-1987610.000
Budi97AD4erD01-01-199400
Charlie54879465406-12-196524312.150
DanielFLKH947HF24-04-198030
Erik94RER5417-08-19453450.000

Contoh 1: Tampilkan seluruh data.
SELECT *
FROM user
Contoh 2: Tampilkan pengguna yang tidak pernah bertransaksi.
SELECT *
FROM user
WHERE total_transaksi = 0
Contoh 3: Tampilkan username pengguna yang bertransaksi kurang dari 10 dan nilainya lebih dari 1.000.
SELECT username
FROM user
WHERE jml_transakai < 10 AND total_transaksi > 1000
Contoh 4: Tampilkan total nominal transaksi yang sudah terjadi.
SELECT SUM(total_transaksi) AS total_nominal_transaksi
FROM user
Contoh 5: Tampilkan seluruh data diurutkan berdasarkan jumlah transaksi terbesar ke terkecil.
SELECT *
FROM user
ORDER BY jml_transaksi DESC
Fungsi aggregat
Beberapa SMBD memiliki fungsi aggregat, yaitu fungsi-fungsi khusus yang melibatkan sekelompok data (aggregat). Secara umum fungsi aggregat adalah:
  • SUM untuk menghitung total nominal data
  • COUNT untuk menghitung jumlah kemunculan data
  • AVG untuk menghitung rata-rata sekelompok data
  • MAX dan MIN untuk mendapatkan nilai maksimum/minimum dari sekelompok data.
Fungsi aggregat digunakan pada bagian SELECT. Syarat untuk fungsi aggregat diletakkan pada bagian HAVING, bukan WHERE.
Subquery
Ada kalanya query dapat menjadi kompleks, terutama jika melibatkan lebih dari satu tabel dan/atau fungsi aggregat. Beberapa SMBD mengizinkan penggunaan subquery. Contoh:
Tampilkan username pengguna yang memiliki jumlah transaksi terbesar.
SELECT username
FROM user
WHERE jml_transaksi =
(
SELECT MAX(jml_transaksi)
FROM user
)
INSERT

Untuk menyimpan data dalam tabel dipergunakan sintaks:
 INSERT INTO [NAMA_TABLE] ([DAFTAR_FIELD]) VALUES ([DAFTAR_NILAI])
Contoh:
 INSERT INTO TEST (NAMA, ALAMAT, PASSWORD) VALUES ('test', 'alamat', 'pass');

UPDATE

Untuk mengubah data menggunakan sintaks:
 UPDATE [NAMA_TABLE] SET [NAMA_KOLOM]=[NILAI] WHERE [KONDISI] 
Contoh:
UPDATE Msuser set password="123456" where username="abc"

DELETE

Untuk menghapus data dipergunakan sintaks:
DELETE FROM [nhew andiz] [KONDISI]
Contoh:
DELETE FROM TEST WHERE NAMA='test';