Sabtu, 13 Desember 2014

Laporan DBD 9 - Koneksi PostgreSQL dengan Java

PRAKTIKUM DESAIN BASIS DATA
Koneksi PostgreSQL Pada Java


Dibimbing oleh :
 Aziz Musthafa, S.Kom





Oleh :
Achsin Muflichuddin   11650036



JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAN NEGERI  MAULANA MALIK IBRAHIM
MALANG
2014


9.1 Bahasan dan Sasaran
9.1.1 Bahasan
        - Koneksi PostgreSQL dengan bahasa pemrograman java
        - Kode pemrograman untuk manipulasi data
9.1.1 Sasaran
         - Mahasiswa memahami dalam penggunaan Database PostgreSQL dan bahasa pemrograman java untuk membuat suatu program aplikasi.

9.2 Materi
9.2.1 Langkah-langkah koneksi database
         Terdapat beberapa langkah yang secara umum harus dilakukan sehingga aplikasi yang berbasis java dapat berinteraksi dengan database server. Langkah-langkah sebagai berikut :
1. Import package java.sql
         Pertama yang harus dilakukan sebelum membuat program JDBC adalah mengimpor package java.sql terlebih dahulu, karena di dalam package java.sql terdapat kelas-kelas yang akan digunakan dalam proses-proses interaksi dengan database misalnya DriverManager, Connection, dan ResultSet. 
       Hal ini penting dilakukan karena bagi pemula seringkali melupakan untuk mengimpor package yang kelas-kelas yang akan digunakan, sehingga mengakibatkan kegagalan dalam mengkompile program Java. Adapun listing untuk mengimpor package java.sql adalah sebagai berikut : 
Import java.sql.*; 
Listing ini ditulis sebelum menulis kelas

2. Memanggil Driver JDBC
        Langkah pertama untuk melakukan koneksi dengan database server adalah dengan memanggil JDBC Driver dari database server yang kita gunakan. Driver adalah Library yang digunakan untuk berkomunikasi dengan database server. Driver dari setiap database server berbeda-beda, sehingga anda harus menyesuaikan Driver JDBC sesuai dengan database server yand anda gunakan.
Listing untuk memanggil driver JDBC.
Class.forName(NamaDriver); atauClass.forName(namaDriver).newInstance();
Listing kedua diatas memiliki fungsi yang sama yaitu melakukan registrasi class driver dan melakukan intansiasi. Apabila driver yang dimaksud tidak ditemukan, maka program akan menghasilkan exception berupa ClassNotFoundException.  Untuk menghasilkan exception apabila driver tidak ditemukan, maka diperlukan penambahan try catch.Adapun menambahkan try-catch untuk penanganan error apabila driver tidak ditemukan.
Try {
Class.forName(namaDriver);
} catch ( ClassNotFoundException e) {
....Penanganan Error ClassNotFoundException
}
Contoh listing untuk memanggil driver menggunakan PostgresSQL :
try {
Class. forName(“org.postgresql.Driver”);
} catch (ClassNotFoundException e) {
System.out.println(“Pesan Error : “ + e)
}

3.      Membangun Koneksi
         Setelah melakukan pemanggilan terhadap driver JDBC, selanjutnya membangun koneksi dengan menggunakan interface Connection . Object Connection yang dibuat untuk membangun koneksi dengan database server tidak dengan cara membuat object baru dari interface Connection melainkan dari class DriverManager dengan menggunakan getConnection().
Connection koneksi = DriverManager.getConnection(<argumen>);

4.      Membuat Statement
        JDBC API menyediakan interface yang berfungsi untuk melakukan proses pengiriman statement SQL yang terdapat pada package java.sql. Statement yang sering digunakan

5.      Melakukan Query
        Methode eksekusi yang digunakan untuk perintah SQL terbagi menjadi dua bagian yaitu untuk perintah SELECT methode eksekusi yang digunakan adalah executeQuery() dengan nilai kembaliannya adalah ResulSet dan perintah INSERT, UPDATE, DELETE methode eksekusi yang digunakan adalah executeUpdate().
Pengambilan (ResultSet) :
String sql = “SELECT kode, nama, alamat, kelas FROM dataSiswa”;
ResultSet set = stat.executeQuery(sql);
while (set.next()) {
String kode = set.getString("kode");
String nama = set.getString("nama");
String alamat = set.getString("alamat");
String kelas = set.getString("kelas");
}

Perintah DELETE :
String sql = "DELETE FROM data_siswa WHERE kode = “1234”;
PreparedStatement stat = konek.prepareStatement(sql);
stat.executeUpdate();

6.      Menutup Koneksi
Penutupan terhadap koneksi database perlu dilakukan agar sumber daya yang digunakan oleh object Connection dapat digunakan lagi oleh proses atau program yang lain. Menutup statement :
statement.close();
Menutup koneksi dengan database :
connection.close();


Hasil Percobaan










Penutup
1. Kesimpulan
    Dalam kehidupan sehari-hari dan untuk kebutuhan pengguna dibuat database yang bisa terkoneksi dengan java agar mempermudah penggunaan dengan aplikasi yang dibuat seperti diatas yang secara otomatis terhubung ke database yang dusah kita buat 
2. Saran dan Manfaat
          Semoga sedikit materi diatas dapat berguna bagi pembaca sekalian, terutama bagi penulis untuk lebih mengembangkan ilmu dan pemahamannya 
3. Kritik
          Untuk membuat yang lebih lengkap dan sesuai keinginan user, bisa disesuaikan dengan kebutuhan dan mohon maaf jika dalam penulisan laporan ini banyak kekurangan dan semoga dapat diperbaiki untuk laporan selanjutnya.

Daftar Pustaka
Modul Praktikum Database 2014










Laporan DBD 6 - Normalisasi


PRAKTIKUM DESAIN BASIS DATA
Normalisasi


Dibimbing oleh :
 Aziz Musthafa, S.Kom





Oleh :
Achsin Muflichuddin   11650036



JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAN NEGERI  MAULANA MALIK IBRAHIM
MALANG
2014


6.1 Bahasan dan Sasaran
6.1.1 Bahasan
          - Normalisasi sebagai teknik analisis database
          - Langkah – langkah dalam normalisasi
6.1.1 Sasaran
          1. Mahasiswa memahami pengertian dan tujuan dari normalisasi
          2. Mahasiswa memahami langkah – langkah dalam normalisasi

6.2 Materi
6.2.1 Memahami Normalisasi
          Normalisasi merupakan suatu proses untuk mengubah suatu tabel yang memiliki masalah tertentu ke dalam dua buah tabel atau lebih yang tidak lagi memiliki masalah tersebut (Abdul Kadir, 2008). Ada juga yang berpendapat normalisasi adalah proses penyusunan tabel – tabel yang tidak redundan (dobel), yang dapat menyebabkan anomali yaitu proses basis data yang memberikan efek samping yang tidak diharapkan (Misalnya menyebabkan data tidak konsisten atau membuat data hilang ketika data yang lain dihapus).
          Normalisasi digunakan sebagai teknik analisis data pada database, sehingga dapat diketahui apakah pembuatan tabel – tabel yang terelasi dalam database itu sudah baik. Kondisi sudah baik yaitu suatu kondisi pada saat proses insert, update, delete dan modifikasi pada satu atau beberapa atribut suatu tabel tidak berpengaruh terhadap integritas data yang lain dalam satu hubungan relasi database.

6.2.2 Langkah – langkah Normalisasi
         > Langkah – langkah Normalisasi terdiri dari :
1. Unnormalization Form
          Bentuk yang tidak normal dimaksudkan suatu kumpulan data yang akan diolah yang diperoleh dari format – format yang beraneka ragam, masih terdapat duplikasi, bisa saja tidak sempurna atau tidak lengkap, dan sesuai fakta lapangan. Bentuk ini didapat dari dokumen yang ada dilapangan atau manual dengan atribut bukan nilai sederhana.
2. First Normal Form (1NF)
Suatu tabel dianggap normal ke satu (1NF) jika :
- Tidak terdapat baris yang bernilai ganda atau duplikat.
- Masing - masing baris bernilai tunggal dan tidak bernilai null.
Langkah – langkah :
- Isikan setiap data bernilai tunggal dan tidak null
- Membuang perulangan data dalam satu baris dengan baris yang lain.
3. Second Normal Form (2NF)
Bentuk normal kedua (2NF) terpenuhi jika :
- Harus telah berbentuk normal pertama (1NF).
- Pada sebuah tabel semua atribut yang tidak termasuk dalam primary key memiliki ketergantungan fungsional pada primary key secara utuh. Suatu atribut dikatakan ketergantungan fungsional jika harga pada atribut tersebut menentukan harga dari atribut yang lain. Misalnya, nim → mhs_nama.
Langkah – langkah :
- Jika terdapat atribut yang bergantung terhadap atribut bukan kunci utama dan merupakan atribut kunci maka pecah menjadi table baru.
4. Third Normal Form (3NF)
Bentuk normal ketiga (3NF) terpenuhi jika :
- Harus telah berbentuk normal kedua (2NF).
- Tidak terdapat anomali – anomali hasil dari ketergantungan transitif. ketergantungan transitif adalah ketergantungan fungsional antara 2 atau lebih atribut bukan kunci.
Langkah – langkah :
- Pastikan semua atribut non kunci bergantung penuh terhadap atribut kunci.
- Pisahkan menjadi tabel baru jika menemukan ketergantungan transitif dalam
tabel tersebut.
5. Boyce Codd Normal Form (BCNF)
Secara praktis tujuan analisis database cukup sampai pada 3NF, Akan tetapi dalam suatu kasus tertentu lebih baik bila dapat mencapat BCNF. Beberapa pemikir menyamakan antara 3NF dengan BCNF. Bentuk normal BCNF terpenuhi jika :
- Masing-masing atribut utama bergantung fungsional penuh pada masing kunci dimana kunci tersebut bukan bagiannya.
- Setiap determinan atribut-atribut relasi adalah kunci relasi atau kandidat kunci. 
- BCNF dapat memiliki lebih dari satu kunci. 
- BCNF hampir sama dengan 3NF.
Langkah – langkah : 
- Hilangkan dependensi pada bukan kunci kandidat.
6. Fourth Normal Form (4NF)
Dilakukan jika terdapat anomali pada (3NF)
7. Fifth Normal Form (5NF)
Langkah ini untuk memecah relasi menjadi dua sehingga relasi tersebut tidak digabungkan kembali manjadi satu dan jika terdapat anomali pada (5NF)

6.2.3 Contoh permasalahan dalam Normalisasi
Terdapat suatu hasil kartu studi yang bersifat manual dan akan kita anilisis menggunakan teknik Normalisasi sebagai berikut :








Hasil Percobaaan


1. Unnormalization Form

2. First Normal Form (1NF)

3. Second Normal Form (2NF)
4. Third Normal Form (3NF)


Penutup
1. Kesimpulan
    Langkah-langkah normalisasi adalah :
    - Unnormalization Form
    - First Normal Form (1NF)
    - Second Normal Form (2NF)
    - Third Normal Form (3NF)
2. Saran dan Manfaat
          Semoga sedikit materi diatas dapat berguna bagi pembaca sekalian, terutama bagi penulis untuk lebih mengembangkan ilmu dan pemahamannya 
3. Kritik
          Diperlukan ketelitian dan keakuratan dalam pengerjaan kali ini. Mohon maaf jika dalam penulisan laporan ini banyak kekurangan dan semoga dapat diperbaiki untuk laporan selanjutnya.

Daftar Pustaka
Modul Praktikum Database 2014



Rabu, 26 November 2014

Laporan DBD 8 - Fungsi, PL/PGSQL dan Trigger

PRAKTIKUM DESAIN BASIS DATA
Fungsi, PL/PGSQL dan Trigger


Dibimbing oleh :
 Aziz Musthafa, S.Kom





Oleh :
Achsin Muflichuddin   11650036



JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAN NEGERI  MAULANA MALIK IBRAHIM
MALANG
2014


8.1 Bahasan dan Sasaran
8.1.1 Bahasan
         - Pada bab kali ini akan membahas tentang fungsi
         - Selain hal itu akan dibahas juga mengenai pl/pgsql dan triger
8.1.2 Sasaran
         - Mahasiswa memahami dan menggunakan fungsi dalam database PostgreSQL
         - Mahasiswa memahami dasar penggunaan PL/PGSQL dan TRIGER
8.2 Materi
8.2.1 Pendukung Fungsi
        PostgreSQL memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom atau barismenjadi huruf besar. Fungsi tersebut bernama upper(nama_kolom), berfungsi memanggil fungsi upper dengan nama_kolom sebagai argumen sehingga menghasilkan nilai pada kolom dalam huruf besar. Berikut Struktur SQL untuk menampilkan data dalam huruf besar semua :

          SELECT upper ([nama kolom]) FROM [nama tabel];

Berikut struktur SQL untuk menampilkan data dimana huruf pertama saja yang besar :

          SELECT initcap ([nama kolom]) FROM [nama tabel];

8.2.2 Fungsi
        Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail. Sedangkan untuk memunculkan fungsi dapat menggunakan query \df.

Ada beberapa konsep yang menarik dari fungsi antara lain:

• Bahasa yang dipakai dapat didefenisikan sendiri dengan tersedianya parameter LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.
• Kita dapat membuat dua buah fungsi dengan nama yang sama namun parameter masukkannya yang berbeda, baik tipe data maupun jumlahnya.

Ada beberapa faktor yang perlu diperhatikan dalam membuat fungsi antara lain:

• Nama Fungsi
• Nomor dari fungsi argument
• Tipe data dari setiap argument
• Tipe dari hasil fungsi
• Fungsi action
• Bahasa yang digunakan oleh fungsi action.

Berikut contoh sederhana pembuatan fungsi SQL untuk perkalian dari tiga inputan :

db_personal=> CREATE FUNCTION perkalian (FLOAT, FLOAT, FLOAT)
db_personal-> RETURNS FLOAT 
db_personal-> AS 'SELECT ($1 + $2) * $3;' 
db_personal-> LANGUAGE 'sql'; 
CREATE

db_personal=> SELECT perkalian (10,10,10); 
perkalian 
----------- 
200 
(1 row)

Contoh yang lain dalam pembuatan fungsi SQL untuk mencari jumlah pegawai dari tabel pegawai berikut :
Berikut kode SQL nya : 

Create function jumlah_pegawai() 
Returns bigint 
As ‘select count(*) as jumlah_pegawai from pegawai;’ 
Language ‘sql’;

Maka hasilnya sebagai berikut : 

Select jumlah_pegawai(); 
Jumlah_pegawai 
---------------------- 
(1 row)

8.2.3 Fungsi PL/PGSQL
         PL/PGSQL merupakan bahasa yang lain untuk membuat sebuah fungsi, biasanya bahasa ini digunakan untuk menangani fungsi yang lebih kompleks. Pl/pgsql sudah terdapat dalam instalasi PostgreSQL.

Keuntungan penggunaan Fungsi PL/PGSQL :

1. Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.
2. Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.
3. Meningkatkan konsistensi data saat sejumlah aplikasi memanggil prosedur yang sama;

        Sebaliknya kelemahannya yaitu server akan lebih terbebani karena banyak proses yang harus ditangani. Sedangkan query PL/PGSQL agar lebih mudah di pahami akan dibagi menjadi 2 yaitu pembuatan fungsi dan pembuatan definisi.

- Berikut Struktur pembuatan fungsi dalam pl/pgsql :

1. Pembuatan fungsi : 

CREATE [OR REPLACE] FUNCTION nama_fungsi ( argtype , ... ]) 
RETURNS tipe_data 
AS ‘definisi’ 
LANGUAGE ‘plpgsql’;

2. Pembuatan definisi : 

DECLARE nama_variable tipe_data /* deklarasi variabel, type */ 
BEGIN 
/* prosedural dan SQL masuk disini seperti select, update dan sebagainya*/ 
Return nama_variable /* blok ini yang wajib */ END;

- Menghapus fungsi :
DROP FUNCTION nama_fungsi(paramater, parameter, parameter ... );
Contoh : 
DROP FUNCTION pembagian(text);

Berikut ini implementasi dari contoh penggunaan fungsi dengan bahasa PL/PGSQL: 

db_personal=> CREATE FUNCTION pl_caripegawai (integer) 
db_personal-> RETURNS text 
db_personal-> AS 'DECLARE hasil TEXT; 
db_personal'> BEGIN db_personal'> SELECT INTO hasil nama as nama_mahasiswa 
db_personal'> FROM pegawai 
db_personal'> WHERE id = $1; 
db_personal'> RETURN hasil; 
db_personal'> END;' 
db_personal-> LANGUAGE 'plpgsql'; 
CREATE

db_personal=> SELECT pl_caripegawai (1); 
pl_caripegawai 
----------------- 
Hendro 
(1 row) 

db_personal=> SELECT pl_caripegawai (2); 
pl_caripegawai 
-------------------- 
Tika 
(1 row)

Contoh berikut menunjukkan query percabangan yang akan menampilkan nilai terkecil dari dua buah parameter : 

create function percabangan (x integer,y integer) 
returns integer 
as ‘declare nilai_terkecil integer; 
begin 
if x < y then 
select into nilai_terkecil x; 
else 
select into nilai_terkecil y; 
end if; 
return nilai_terkecil; 
end;’ 
language ‘plpgsql’;

Hasil sebagai berikut : 
Select percabangan (300,250); 
Percabangan 
----------------- 
250 
(1 row)

Contoh berikut menunjukkan query perulangan yang akan menampilkan akumulasi dari jumlah perulangan :

Create function perulangan (a integer,b integer) 
Returns integer 
As ‘ declare nilai_awal integer default a;
Hasil integer default 0; 
Begin

Loop

If nilai_awal > b then Exit; 
End if; 
Hasil := hasil+nilai_awal; 
Nilai_awal := nilai_awal+1;

End loop;

Return hasil; 
End;’ 
Language ‘plpgsql’;

Hasilnya sebagai berikut : 
Select perulangan (1,5); 
Perulangan 
---------------- 
15 
1 (row)

8.2.4 Triger
         Trigger digunakan untuk menyisipkan sebuah fungsi pada saat suatu record di-INSERT, UPDATE dan DELETE. Trigger sangat ideal untuk mengecek atau memodifikasi sebuah data pada kolom sebelum dimasukkan ke dalam database, sehingga sebuah fungsi dapat dipanggil setiap saat secara otomatis ketika sebuah row akan dimodifikasi. Ciri khas dari fungsi yang diperuntukkan untuk trigger adalah menghasilkan output bertipe OPAQUE. Tipe opaque adalah sebuah tipe yang menginformasikan pada database bahwa fungsi tersebut tidak menghasilkan satu dari tipe data yang ditetapkan SQL dan tidak secara langsung dapat digunakan dalam statemen SQL. Language (bahasa) PL/PGSQL dapat digunakan untuk trigger procedure, fungsi untuk trigger ini memiliki beberapa variabel khusus yang terdeklarasi secara otomatis.
Variabel tersebut antara lain:

- NEW : Variabel yang berisi nilai baru suatu record pada saat INSERT atau UPDATE, bertipe RECORD.
- OLD : Variabel yang berisi nilai lama suatu record pada saat UPDATE atau DELETE, juga bertipe RECORD.

Berikut ini beberapa contoh penggunaan fungsi sebagai trigger procedure:
Contoh : trigger berikut ini memastikan isi field atau kolom nama pada tabel anggota selalu huruf besar.
langkah pertama buatlah fungsinya terlebih dahulu : 

db_personal=> CREATE FUNCTION tes_trigger() 
db_personal-> RETURNS opaque 
db_personal-> AS 'BEGIN 
db_personal'> NEW.nama := UPPER(NEW.nama); 
db_personal'> RETURN NEW; 
db_personal'> END;' 
db_personal-> LANGUAGE 'plpgsql'; 
CREATE

         Kemudian lanjutkan dengan pembuatan trigger yang berfungsi untuk memanggil fungsi secara otomatis ketika kita melakukan INSERT ataupun UPDATE pada tabel anggota. 

db_personal=> CREATE TRIGGER tes1_trigger 
db_personal-> BEFORE INSERT 
db_personal-> ON anggota 
db_personal-> FOR EACH ROW 
db_personal-> EXECUTE PROCEDURE tes_trigger(); 
CREATE

Cobalah INSERT beberapa data ke dalam tabel anggota : 

db_personal=> INSERT INTO anggota (id, nama) 
db_personal-> VALUES (26, 'andhie'); INSERT 70831 1 
db_personal=> INSERT INTO anggota 
db_personal-> VALUES (83, 'rWatia'); INSERT 70832 1

         Tampilkan isi dari tabel anggota, hasilnya seperti pada tabel di bawah ini. Jadi setiap data yang kita INSERT walaupun dalam penulisannya menggunakan huruf kecil, namun secara otomatis trigger akan memanggil fungsi yang bertugas untuk mengganti setiap data yang masuk agar hasilnya nanti selalu menjadi huruf besar:

db_personal=> SELECT * FROM anggota;

id | nama
--------+-------------
26 | ANDHIE
83 | RWATIA
(2 rows)

Hasil Praktikum 

1.
 












2. 







3. 











4. 










5. 














Evaluasi Perbandingan PostgreSql dan MySql

         Dalam PostgreSql perlu menambahkan bahasa/language yang dipakai contoh pl pgsql. Tentang percabangan, setelah query if, atau else if serta else maka menggunakan select  into variable (values), dan insert. Pada tipe Char atau Varchar tidak perlu diberi ukuran. Sedangkan untuk MySQL sebaliknya, tidak perlu menambahkan bahasa/language, tipe Char atau Varchar diberi ukuran karena jika tidak diisi akan eror, pada percabangan menggunakan then return concat(values), serta mendeklarasikan variabel terlebih dahulu sebelum meng-insert.

Penutup
1. Kesimpulan
          Berdasarkan praktikum diatas dijelaskan dan di praktekkan tentang fungsi, pl/pgsql dan trigger bahwa terjadi perbedaan fungsi query antara postgresql dan mysql seperti yang telah di kemukakan dalam evaluasi antar keduanya.
2. Saran dan Manfaat
          Semoga sedikit materi diatas dapat berguna bagi pembaca sekalian, terutama bagi penulis untuk lebih mengembangkan ilmu dan pemahamannya 
3. Kritik
          Mohon maaf jika dalam penulisan laporan ini banyak kekurangan dan semoga dapat diperbaiki untuk laporan selanjutnya.

Daftar Pustaka
Modul Praktikum Database 2014