Minggu, 14 Desember 2014

laapooraan 10

BAB 1
LANDASAN TEORI

iReport adalah tools yang memudahkan anda membuat laporan. Biasanya iReport di gunakan dalam bahasa pemrograman Java. iReport bersifat open source jadi Anda bebas menggunakan dan tidak perlu membeli lisensi untuk mengembangkannya. 
Terdapat banyak tools untuk reporting dalam java. Diantaranya yang dapat digunakan adalah : 
 JasperReports : Merupakan software open source untuk reporting 
 iReport : Merupakan Visual Designer untuk membuat laporan yang komplek menggunakan JasperReports library tanpa harus memiliki pengetahuan tentang XML JasperReports  & iReport dapat di download melalui: http://jasperforge.org/  
Beberapa fitur iReport : 
98% mendukung JasperReports tags   
Visual designer wysiwyg untuk menggambar rectangles, lines, ellipses, text fields fields, charts, sub reports...  
Built-in editor dengan syntax highlighting 
Mendukung Unicode dan bahasa non Latin (Russian, Chinese, Korean,...)  Document structure browser
Menggabungkan compiler dan exporter 
Mendukung semua JDBC compliant databases
  Memiliki Wizard untuk membuat report secara otomatis  
Mendukung  sub reports 
Save backup    
Support for templates  
Membuat Report di Java-Netbeans Menggunakan JasperReport dan Ireport. Sebelum kita mengetahui cara membuatnya, sebaiknya kita mengetahui pengertian dari JasperReport dan iReport. Berikut pengertiannya : 
iReport     : adalah Visual Designer untuk membuat laporan yang komplek, menggunakan jasperReport Libarary. 
iReport adalah tools yang memudahkan Anda membuat laporan. Biasanya iReport di gunakan dalam bahasa pemrograman Java. iReport bersifat open source jadi Anda bebas menggunakan dan tidak perlu membeli lisensi untuk mengembangkannya.
JasperReport  : adalah software(library) open source untuk reporting. 
jasperReport dapat anda download di alamat : http://jasperforge.org/ 
JasperReports adalah sumber terbuka Java alat pelaporan yang dapat menulis ke berbagai sasaran, seperti: layar, printer, menjadi file PDF, HTML, Microsoft Excel, RTF, ODT, nilai-nilai yang dipisahkan dengan koma atau XML .
Dapat digunakan dalam aplikasi Java aktif, termasuk Java EE atau aplikasi web, untuk menghasilkan konten dinamis. Membaca dengan instruksi dari file XML atau .jasper.JasperReports adalah bagian dari inisiatif tumpukan sumber terbuka Lisog 
JasperReports adalah open source pelaporan perpustakaan yang dapat dimasukkan ke dalam aplikasi Java. Fitur termasuk:    Scriptlets dapat menyertai definisi laporan yang definisi laporan dapat memohon pada setiap titik untuk melakukan proses administrasi tambahan. Scriptlet dibangun menggunakan Java, dan memiliki banyak kait yang dapat dipanggil sebelum atau setelah tahap laporan generasi, seperti laporan, halaman, kolom atau kelompok.  Sub-laporan Untuk pengguna dengan lebih canggih laporan manajemen persyaratan, laporan yang dirancang untuk JasperReports dapat dengan mudah diimpor ke JasperServer - server interaktif laporan... JasperReports laporan didefinisikan dalam XML file format, disebut JRXML, yang dapat menjadi tangan-kode, dihasilkan, atau dirancang menggunakan alat. File format didefinisikan oleh Dokumen jenis definisi (DTD) atau skema XML untuk versi yang lebih baru, menyediakan interoperabilitas terbatas. Perbedaan utama antara menggunakan XML dan .jasper file adalah bahwa XML file harus disusun pada saat runtime menggunakan JasperCompileManager kelas.



BAB II
HASIL PRAKTIKUM

1. Tambahkan plugin terlebih dahulu untuk buat wizard ireport. (Tools > Plugins)

2. Akan muncul tampilannya, pilih Download, pilih semua plugin dan klik Open.

 

3. Klik Install.
 4. Kita klik kanan pada project yang akan kita beri ireport. Pilih New > Report Wizard. 

 

5. Ketik nama file sesuai yang anda inginkan. Klik Browse...

6. Pilih Next > New > Database JDBC connection > Next.

7. Isi dengan postgreSQL yang ingin anda hubungkan. Jika sudah, test koneksi, lalu Save.

8. Isi query untuk menampilkan data. (select*from mahasiswa;) Lalu klik Next.




9. Pindah data yang ada di bagian sebelah kanan ke kiri.

10. Untuk langkah selanjutnya, kosongkan saja, lalu klik Next.

11. Pilih Layout > Tabular Layout > Next.




12. Buka menu Files > klik kanan file ireport > ubah jadi format .jrxml di Properties.



13. Ketik kode di kelas yang telah dibuat.



14. Buat tombol Print, dan beri kode.



15. Jalankan programnya, dan klik Print. Maka akan muncul ireport yang telah dibuat. Masuk ke file ireport anda, pilih Parameters > add Parameters > ubah nama parameters jadi "nim".



16. Ubah kelas Parameters jadi java.lang.Integer.



17. Masuk ke Rport Query > isi "select*from mahasiswa where nim_mah = $P {nim};" > OK.



18. Di tombol Print, isi seperti ini.



19. Uji program dengan menjalankannya. Masukkan nim yang diinginkan > Print.



BAB III
PENUTUP

Kesimpulan
Anda dapat mengetahui cara bagaimana membuat ireport untuk data yang ada di dalam DBMS. Prosesnyapun cukup banyak. Semoga itu dapat membantu anda. Terima Kasih.

laapooraan 9

BAB I
LANDASAN TEORI

Ada langkah - langkah yang harus dilakukan untuk menggunakan aplikasi berbasis java supaya dapat terhubung dengan database server.

1. Impor Package Java.sql
Sebelum membuat program JDBC, pertama harus mengimpor package java.sql dahulu. Karena di dalam package java.sql tersebut ada kelas - kelas yang akan digunakan dalam prosesdengan database server. Misalnya saja kelas DriverManager, Connection, dan ResultSet.
Adapun listing untuk mengimpor package java.sql adalah sebagai berikut :
import java.sql.*;
 Listing tersebut harus dituliskan sebelum menulis kelas.

2. Memanggil Driver JDBC
Langkah pertama jika ingin melakukan koneksi dengan database server adalah dengan memanggil JDBC Driver dari database server yang akan digunakan.Driver adalah library yang digunakan untuk berkomunikasi dengan database server. Driver dari setiap database itu berbeda. Jadi harus menyesuaikan dengan Driver JDBC sesuai database server yang akan digunakan. Berikut listingnya :
Class.forName(namaDriver); atau
 ClassforName(namaDriver).newInstance();
Keduanya memiliki fungsi sama yaitu, melakukan registrasi class driver dan melakukan intansiasi. Jika driver tidak ditemukan, akan menghasilkan exception (ClassNotFoundException). Untuk menghasilkan exception bila driver tidak ditemukan, maka perlu penambahan try-catch. Caranya menambahkan try-catch untuk penanganan error bila driver tidak ditemukan.
 Try
{
Class.forName(namaDriver) ;

}
catch (ClassNotFoundException e)
{...Penanganan Error ClassNotFoundException
}

3. Membangun Koneksi
Setelah driver JDBC dipanggil, bangun koneksi dengan interface Connection. Itu dibuat untuk membangun keoneksi dengan database ataupun mengkoneksi 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 methode getConnection().
Connection koneksi = DriverManager.getConnection(<argumen>);
Untuk menangani error yang mungkin terjadi pada proses melakukan koneksi dengan database maka  ditambahkan try-catch. Exception yang akan dihasilkan pada proses  ini  adalah  berupa  SQLException.  Adapun  cara  penulisan  listingnya  adalah sebagai berikut :
try {
... koneksi database
} catch (SQLException sqle){
... penanganan error koneksi
}

Ada beberapa macam argumen yang berbeda dari methode getConnection() yang dipanggil dari DriverManager, yaitu :

getConnection(String.url)
Di methode ini hanya memerlukan argumen URl, sedangkan untuk data dan password sudah diikutkan langsung.
jdbc:<DBServer>://[Host][:Port]/<namaDB>?<user=User>&<password=Pasword>
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc:  postgresql://localhost:3306/Dbase? User  =  adi  &  password= pas”;
Connection koneksi = DriverManager.getConnection(url);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}



getConnection(String url, Properties info)
Pada  methode  ini  memerlukan  URL  dan  sebuah  object  Properties. Sebelum  menggunakan  methode  ini,  Anda  harus  melakukan  import  package berupa  java.util.*,  ini  dikarenakan  object  Properties  terdapat  pada  package tersebut.  Object  roperties  berisikan  spesifikasi   dari  setiap  parameter  database misalnya user name, password, autocommit, dan sebagainya. Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:5432/praktikumdbd”;
Properties prop = new java.util.Properties(); // tidak mengimpor kelasprop.put(“user”,”NamaUser”);
prop.put(“password”,”datapassword”);
Connection koneksi = DriverManager.getConnection(url, prop);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}

getConnection(String url, String user, String password)
Pada  methode  ini  memerlukan  argumen  berupa  URL,  user  name,  dan password.  Methode  ini  secara  langsung  mendefinisikan  nilai  URL,  user  name dan password.
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:5432/ praktikumdbd”;
String user = “adi”
String password “ternate”
Connection koneksi = DriverManager.getConnection(url, user, password);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}


4. Membuat Statement
JDBC API menyediakan interface yang berfungsi untuk melakukan proses pengiriman statement SQL yang terdapat pada package java.sql. Statement yang ada secara umum digunakan terdiri dari berikut :
Statement
Interface ini dibuat oleh methode Connection.createStatement(). Object Statement digunakan untuk pengiriman statement SQL tanpa parameter serta Setiap SQL statement yang dieksekusi dikirim secara utuh ke database.
Statement stat = Connection.createStatement();
PreparedStatement
Interface ini dibuat oleh methode Connection.prepareStatement(). Object PreparedStatement digunakan untuk pengiriman statement SQL dengan atau tanpa parameter. Interface ini memiliki performa lebih baik dibandingkan dengan interface Statement karena dapat menjalankan beberapa proses dalam sekali pengiriman perintah SQL, pengiriman selanjutnya hanya parametered querynta saja.
PreparedStatement stat = Connection.prepareStatement();

 5. Melakukan Query
Setelah kita memiliki object statement, kita dapat menggunakannya untuk
melakukan pengiriman perintah SQL dan mengeksekusinya. Methode eksekusi yang
digunakan untuk perintah SQL terbagi menjadi dua bagian yaitu untuk perintah
SELECT methode eksekusi yang digunakan adalah executeQery() dengan nilai
kembaliannya adalah ResultSet, dan untuk perintah INSERT, UPDATE, DELETE
methode eksekusi yang digunakan adalah 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. Sebelum kita menutup koneksi database, kita perlu melepas object Statement dengan kode sebagai berikut : statment.close();
Untuk menutuo koneksi dengan database server dapat kita lakukan dengan kode sebagai berikut : connection.close();



BAB II
HASIL PRAKTIKUM

1.  Buatlah koneksi seperti contoh listing kode diatas dengan database kalian masing2 ! 
Praktek Langkah-langkah Koneksi database dengan java di Netbeans

1. buatlah project baru pada netbeans
2. pada project tersebut, klik kanan – properties
3. pilih Libraries pada list Properties
4. add Library
5. add JAR/Folder
6. browse file konektor PostgreSQL
7. ambil file konektor, semisal :postgresql-9.0-801.jdbc4.jar atau versi yang lain.
8. kemudian open
9. Klik OK
Lalu masukkan kode seperti berikut :
2.  Buatlah form pada netbeans dan buatlah tombol insert, update, delete, tampil dan
pencarian seperti dibawah !
3.  Buat Event tiap tombol seperti contoh listing diatas dengan catatan memakai database praktikan sendiri dan menggunakan tabel mahasiswa. Untuk tampil, data munculkan pada jtabel atau text area.

  • Simpan

 
  • Hapus

  • Edit

  • Tampil

  • Reset
  • Cari

4.  Buatlah seperti nomor 2. Dengan  aturan terdapat kelas koneksi sendiri sehingga tidak menulis ulang pemanggilan driver jdbc, url, dan  koneksi  nya pada saat insert,update, delete dan tampil data.

Untuk nomer 4 ini, kita harus membuat kelas baru lagi. Lalu memberi kode koneksi seperti ini.

  • Simpan

  • Edit

  • Hapus

  •  Tampil

  • Reset


BAB III
PENUTUP

 Kesimpulan
Jadi, kesimpulan yang dapat diambil adalah, kita dapat mengkoneksikan sql ke netbeans. SQL bisa dimasukkan ke dalam bahasa pemrograman. Tadi adalah salah satu caranya atau buktinya. Kita juga harus mempunyai banyak referensi.

Saran
Karena berhubungan dengan Java, jadi harus pintar dan jeli dalam mengkoreksi kesalahan yang dibuat dalam Java netbeans

Selasa, 25 November 2014

laapooraan 8

BAB I
LANDASAN TEORI



Pendukung Fungsi

PostgreSQL memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom atau baris menjadi huruf besar. Fungsi tersebut bernama upper (nama_kolom), berfungsi memanggil fungsi upper dengan nama_kolom sebagaii argumen sehingga menghasilkan nilai padakolom 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];

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)

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.
Berikut adalah 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); Sudah memahami fungsi, ada tahap selanjutnya, yaitu  trigger.

Trigger
Menjalankan fungsi disaat kita INSERT, UPDATE DAN DELETE data memiliki tipe data khusus yaitu OPAQUE. Memiliki variabel khusus NEW : insert atau update, OLD    : update atau delete
CREATE TRIGGER nama_trigger
BEFORE
    INSERT
    ON nama_tabel
    FOR EACH ROW
EXECUTE PROCEDURE fungsi_dipanggil();

Buat fungsi huruf besar semua
CREATE FUNCTION huruf_besar() RETURNS opaque AS'
BEGIN
    NEW.nama_kolom := UPPER(NEW.nama_kolom);
    RETURN NEW;
END;
'LANGUAGE 'plpgsql';
 
BAB II
HASIL PRAKTIKUM
 
1. Buatlah  fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi sebagai berikut : celcius= (5*(nilai Fahrenheit-32))/9!
Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut ! 
 

2. Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT !
 

 


3. Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql !
 
Nilai > 100 atau Nilai<0  : Nilai Salah
Nilai ≥ 90  : Nilai A
70 ≤ Nilai < 90 : Nilai B
60 ≤ Nilai < 70 : Nilai C
50 ≤ Nilai < 60 : Nilai D
0 ≤ Nilai < 50 : Nilai E

Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut ! 
 
 
4.Buatlah  fungsi menggunakan pl/pgsql  untuk mencari  bilangan ganjil atau genap dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !




5. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.

BAB III
PENUTUP

  • KESIMPULAN 
Jadi kesimpulannya, di setiap DBMS jika ingin membuat suatu query, maka harus hati-hati. Karena di setiap DBMS itu berbeda-beda.
  • SARAN
Sarannya, lebih banyak penjelasan. lebih jelas cara atau strukturnya. lebih rajin dan semangat.

Selasa, 04 November 2014

Laapooraan 6

BAB I
LANDASAN TEORI

Pengertian Normalisasi
Istilah normalisasi berasal dari E. F. Codd, salah seorang perintis teknologi basis data. Selain  dipakai sebagai metodologi tersendiri untuk menciptakan struktur tabel (relasi) dalam basis data (dengan tujuan untuk mengurangi kemubadziran data), normalisasi terkadang hanya dipakai sebagai perangkat verifikasi terhadap tabel - tabel yang dihasilkan oleh metodologi lain.
Bentuk Normal
Aturan-aturan normalisasi dinyatakan dalam istilah bentuk normal. Bentuk normal adalah suatu aturan yang dikarenakan pada relasi - relasi tersebut pada level-level normalisasi. Suatu relasi dikatakan berada dalam bentuk normal tertentu jika memenuhi kondisi-kondisi tertentu. Misalnya,suatu relasi berada dalam bentuk normal pertama (biasa disebut 1NF) jika dan hanya jika setiap atribut bernilai tunggal untuk setiap baris. Beberapa level yang biasa digunakan pada normalisasi adalah :
  • Bentuk Tidak Normal
  • Bentuk Normal Pertama (1NF)
  • Bentuk Normal Kedua (2NF)
  • Bentuk Normal Ketiga (3NF)
  • Bentuk Normal Boyce-Codd (BCNF)
  • Bentuk Normal Keempat (4NF)
  • Bentuk Normal Kelima (5NF)
Bentuk normal pertama hingga ketiga (dibuat oleh E. F. Codd) merupakan bentuk normal yang umum dipakai. Artinya bahwa pada kebanyakan relasi, bila ketiga bentuk normal tersebut telah dipenuhi, maka persoalan anomali tidak akan muncul lagi. Bentuk normal Boyce-Codd merupakan revisi terhadap bentuk normal ketiga. Bentuk normal 4NF dan 5NF (dikemukakan oleh Fagin) hanya dipakai pada kasus-kasus khusus, yakni pada relasi yang mengandung dependensi nilai banyak.
1. Bentuk Tidak Normal
Bentuk ini merupakan kumpulan data yang akan disimpan, tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi dan data dikumpulkan apa adanya.
2. Bentuk Normal Pertama (1NF)
Bentuk normal pertama biasa dikenakan pada tabel yang belum ternormalisasi. Tabel yang belum ternormalisasi adalah tabel yang memiliki atribut yang berulang. Definisinya adalah suatu relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atribut bernilai tunggal untuk setiap baris. Data yang tak ternormalisasi dapat diubah ke dalam bentuk normal pertama dengan cara membuat setiap baris berisi kolom dengan jumlah yang sama dan setiap kolom hanya mengandung satu nilai. Relasi yang memenuhi bentuk normal pertama umumnya memiliki berbagai masalah. Masalah yang timbul secara umum adalah disebabkan oleh adanya kemubadziran. Selain itu, sekalipun ketidakkon-sistenan misalnya tidak terjadi, namun terjadi ketidakefisienan sewaktu mengubah data. Berbagai persoalan yang menyangkut anomali biasanya juga muncul pada relasi yang hanya memenuhi bentuk normal pertama.
3. Bentuk Normal Kedua (2NF)
 Didefinisikan berdasarkan dependensi fungsional. Suatu relasi berada adalam bentuk normal kedua jika dan hanya jika:
  • Berada pada bentuk normal pertama.
  • Semua atribut  bukan kunci memiliki dependensi sepenuhnya terhadap kunci primer.
Bentuk normal kedua mensyaratkan setiap atribut bergantung pada kunci primer. Untuk mengubah suatu relasi yang tergolong sebagai bentuk normal pertama ke bentuk normal kedua perlu dilakukan dekomposisi terhadap relasi tersebut. Proses dekomposisi dapat dilakukan dengan menggambarkan diagram dependensi fungsional terlebih dahulu. Masalah yang masih sering terjadi pada relasi yang tergolong pada bentuk normal kedua diakibatkan oleh adanya dependensi transitif. Yang mengakibatkan kemungkinan munculnya permasalahan sebagaimana pada bentuk normal pertama.
4. Bentuk Normal Ketiga (3NF)
Definisinya setiap relasi dikatakan dalam bentuk normal ketiga (3NF)  jika :
  • Berada dalam bentuk normal kedua
  • Setiap atribut bukan kunci tidak memiliki ekspendensi transitif terhadap kunci primer.
5. Bentuk Normal Boyce-Codd (BCNF)
Definisi : suati relasi disebut memenuhi bentuk normal Boyce-Codd jika dan hanya jika semua penentu (determinan) adalah kunci kandidat (atribut yang bersifat unik). BCNF merupakan bnetuk normal sebagai perbaikan terhadap 3NF. Suatu relasi yang memenuhi BCNF selalu memenuhi 3NF, tapi tidak untuk sebaliknya. Suatu relasi yang memenuhi 3NF belum tentu memenuhi BCNF. Dalam banyak literatur disebutkan bahwa BCNF adalah perbaikan dari 3NF, karena bentuk normal ketigapun mungkin masih mengandung anomali sehingga masih perlu dianomalisasi lebih lanjut.
6. Bentuk Normal Keempat (4NF)
Dalam normalisasi ini kita mengenal adanya tipe baru dari ketergantungan (dependency) yaitu Multivalued Dependency (MVD), yang merupakan generalisasi dari functional dependence. Atau sebaliknya, FD adalah peristiwa khusus dari MVD di mana himpunan nilai dependent berisi satu nilai saja.
7. Bentuk Normal Kelima (5NF)
Suatu relation dapat terus dilakukan  proses nonloss-decomposition sampai semua projection berada pada 5NF. Tetapi  hal ini juga ada keterbatasan yaitu join dependency (JD), yaitu bila projection dapat dilakukan sehingga tidak ada nilai yang hilang, apabila di join kembali. JD adalah generalisasi dari MVD. Suatu relation R berada pada 5NF bila setiap join dependency di R dibuat dengan candidate key di R.


BAB II
HASIL PRAKTIKUM

Diketahui soalnya adalah sebagai berikut :

Kemudian langkah-langkahnya kita buat unnormalized form-nya dulu.

Setelah dapat bentuk unnormalisasinya buat normalisasi yang pertama (1NF)




Dan kita buat bentuk normalisasi yang kedua (2NF). Dan hasil akhirnya (3NF) seperti ini.


BAB III
PENUTUP

Kesimpulan
Dalam merancang database harus dapat  dijawab apabila kita diberikan data, maka bagaimana kita menentukan struktur  logik yang tepat untuk data tersebut, atau bagaimana kita menentukan relation-relation yang diperlukan dan apa atributnya. Semua relation dalam relational database selalu sudah ternormalisasi, dalam arti bahwa semua relation sudah didefinisikan terhadap domain sederhana, yaitu domain yang hanya berisi nilai atomik. Dalam normalisasi lanjutan kita berusaha untuk menghilangkan/mengurangi data yang duplikasi atau mubazir agar supaya mendapatkan bentuk yang baik, hemat tempat, hemat waktu, hemat biaya dan yang memberikan respon yang baik dan cepat.
Suatu relation dikatakan sudah berada  pada bentuk normalisasi tertentu bila memenuhi beberapa batasan tertentu pada tingkat tersebut. Tingkat normalisasi yang lebih tinggi dianggap lebih baik dari tingkat dibawahnya.

Tingkat-tingkat normalisasi :
1.  Relation umum (yang belum dan yang sudah ternormalisasi)
2.  1NF (First Normal Form) relation yang sudah ternormalisasi.
3.  2NF (Second Normal Form) relation.
4.  3NF (Third Normal Form) relation.
5.  BCNF (Boyce Codd Normal Form) relation.
6.  4NF (Fourth Normal Form) relation.
7.  PJ/NF (Project Join Normal Form) atau 5NF (Fifth Normal Form) relation

Untuk 6NF dan 7NF dan seterusnya belum terpikirkan saat ini, walaupun
begitu nanti akan kita bicarakan salah satu tingkat normalisasi lagi yaitu DKNF atau
Domain-Key-Normal Form.

Saran
Jujur, saya masih belum faham, atau istilahnya blank soal seperti ini. Dan mohon kejelasan lagi untuk materi ini. Terimakasih.

Minggu, 19 Oktober 2014

Laapooraan 5

BAB I
LANDASAN TEORI

Agregate Operator
Agregate digunakan untuk melakukan perhitungan menjadi sebuah nilai dari beberapa input. Adapun fungsi agregate yang ada dalam PostgreSQL diantaranya :

1. COUNT(*)
Untuk menghitung jumlah baris. Struktur querynya :
SELECT COUNT(*) FROM [NAMA_TABEL];

 2.  SUM(NAMA KOLOM)
Untuk menghitung penjumlahan data.Struktur querynya :
SELECT SUM(NAMA_KOLOM) FROM [NAMA_TABEL];

3. MAX(NAMA_KOLOM)
Untuk mencari nilai terbesar. Struktur querynya :
SELECT MAX(NAMA_KOLOM) FROM [NAMA_TABEL];

4. MIN(NAMA KOLOM)
Untuk mencari nilai terkecil. Struktur querynya :
SELECT MIN(NAMA_KOLOM) FROM [NAMA_TABEL];

5. AVG(NAMA KOLOM)
Untuk mencari nilai rata-rata. Struktur querynya :
SELECT AVG(NAMA_KOLOM) FROM [NAMA_TABEL];

GROUP BY
Group By merupakan fungsi yang digunakan untuk melakukan pengelompokan dari perintah  SELECT. Group by seringkali diperlukan untuk menjalankan  agregate menjadi sebuah  kelompok  dari hasil Query.  Berikut struktur SQL untuk penampilan data :
SELECT [NAMA_KOLOM] FROM [NAMA_TABEL] GROUP BY [NAMA_KOLOM];

HAVING
Pemakaian HAVING terkait dengan GROUP BY, kegunaanya adalah untuk
menentukan  kondisi bagi GROUP BY, dimana kelompok yang memenuhi  kondisi
saja yang akan di hasilkan. Berikut struktur querynya :
SELECT (NAMA_KOLOM) FROM [NAMA_TABEL] GROUP BY [NAMA_KOLOM] HAVING KONDISI;

CASE
Meskipun SQL bukan merupakan sebuah prosedur bahasa perograman, namun dalam prosesnya dapat dengan bebas mengontrol data yang kembali dari query. Kata WHERE menggunakan perbandingan untuk mengontrol pemilihan data, sedangkan CASE perbandingan dalam bentuk output kolom. Jadi intinya penggunaan CASE akan membentuk output tersendiri berupa sebuah kolom baru dengan data dari operasi yang di dalamnya.Struktur didalam select seperti berikut :
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result] END

Berikut contoh query penggunaan case, penentuan umur jika umurnya dibawah 1986-01-01 dianggap dewasa dan lebih dari itu dianggap remaja : SELECT TXT_NAMADEPAN, TXT_NAMAAKHIR, DT_TGLLAHIR, CASE WHEN DT_TGLLAHIR < '1986-01-01' THEN 'DEWASA' ELSE 'BALITA' END AS UMUR FROM PEGAWAI;
Maka hasilnya seperti ini :
VIEW
Views dapat juga disebut tabel bayangan tetapi bukan temporary table, bukan juga merupakan sebuah tabel yang asli.  Suatu view adalah suatu  relasi virtual  yang tidak perlu ada  database tetapi dapat diproduksi atas permintaan oleh pemakai tertentu, pada ketika permintaan.  Satu lagi kelebihan yang dimiliki oleh view yaitu dapat menyimpan perintah query, dan dapat mewakili sebuah subset dari tabel asli dan memilih kolom atau row tertentu dari tabel biasa. Contoh query :
CREATE VIEW [NAMA_TABEL] VIEW AS QUERY;
Catatan : Query diatas merupakan query untuk menampilkan data menggunakan query sql select.



BAB II
HASIL PRAKTIKUM

Soal 1
Dari tabel mahasiswa yang telah dibuat  tambahkan 3 data lagi  ,  tambahkan kolom gender kemudian update datanya  dan  tampilkan banyaknya data mahasiswa yang telah di inputkan. Kemudian cari nim atau id mahasiswa yang paling kecil, paling besar dan rata-ratanya.
Jawaban
Karena data tabel sudah ada dan melebihi dari yang dibutuhkan, maka kita tidak perlu membuat lagi. Cukup pakai saja yang kemaren. Langsung saja, query yang dipakai adalah sebagai berikut :
  • Untuk mencari nilai nim mahasiswa terkecil : select min(nim_mah) from mahasiswa;
  • Untuk mencari nilai nim mahasiswa terbesar : select max(nim_mah) from mahasiswa;
  • Untuk mencari rata - rata nilai nim mahasiswa : select avg(nim_mah) from mahasiswa; 
Hasil untuk SQL Shell :
 Dan untuk hasil query dari mySQL :

Soal 2
Tampilkan rata-rata id atau nim mahasiswa yang data nimnya lebih dari 12.
Jawaban
Untuk menampilkan nilai rata - rata seperti nomor 1 tadi tapi data nim mahasiswanya yang lebih dari 12 querynya seperti ini :
  • select avg(nim_mah) from mahasiswa where nim_mah > 12; 
 Dan hasilnya bisa dilihat seperti berikut :
SQL Shell

mySQL

Soal 3
Tampilkan jumlah mahasiswa berdasarkan fakultas. Sehingga hasilnya seperti berikut: 
Jawaban
Untuk membuat tampilan mahasiswa seperti gambar tersebut, kita menggunakan query seperti ini :
  • select nama_fak, count(*)from mahasiswa,fakultas where mahasiswa.id_fak=fakultas.id_fak group by nama_fak;
Hasilnya adalah :
Hasil SQL Shell
Hasil mySQL

Soal 4
Tampilkan  seperti nomor 3 dengan persyaratan jumlah mahasiswa yang lebih dari sama dengan 2 saja yang ditampilkan.
Jawaban
Untuk menjawab soal nomor 4, yang harus dilakukan yaitu menggunakan query seperti ini :
  • select nama_fak, count(*)from mahasiswa,fakultas where mahasiswa.id_fak=fakultas.id_fak group by nama_fak having count(*) >=2;
 Hasil dari pekerjaannya adalah sebagai berikut :
Hasil SQL Shell
mySQL

Soal 5
Tampilkan data mahasiswa dengan persyaratan, jika jenis kelaminnya “L” maka
tertulis laki-laki dan bila “P” maka tertulis perempuan.
Jawaban
Nah, kalau seperti itu, tinggal pakai query dari CASE. Seperti ini :
  •  select no_id, nama, alamat, no_telp, case when gender='p' then 'perempuan' else 'laki-laki' end as umur from mahasiswa;
Didapat hasilnya seperti ini :
SQL Shell
mySQL

Soal 6
Buatlah view untuk query  penampilan data mahasiswa, fakultas. Ambil berdasarkan nim, nama mahasiswa, nama fakultas.
Jawaban
Yang harus dilakukan pertama kali adalah membuat tabel VIEW. Berikut query untuk menampilkan data nim, nama mahasiswa, dan nama fakultas berdasar tabel mahasiswa, fakultas :
  • create view pelajar as select no_id,nama,nama_fak from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;
  • select*from pelajar;
Dan bisa dilihat hasilnya seperti ini :
SQL Shell

mySQL



BAB III
PENUTUP

Perbedaan
 MySQL
  • Untuk query COUNT, MIN, dan MAX, tidak boleh ada spasi. Misalkan "select count (*) from mahasiswa;" akan menghasilkan eror. Maka seharusanya "select count(*) from mahasiswa;". Begitu pula berlaku untuk query MIN dan MAX.
SQL Shell
  •   Kalau MySQL tidak memakai spasi, nah, kalau SQL bebas. Bisa pakai spasi maupun tidak. Dan hasilnya juga sama.
Persamaan
 MySQL dan SQL Shell
  • Dari semua hasil, query dari MySql bisa digunakan ke SQL Shell.

Kesimpulan
Agregate Operator
Digunakan untuk melakukan penghitungan menjadi sebuah nilai dari beberapa nilai input.
  • Count(*) : untuk menghitung jumlah baris.
  •  Sum(nama_kolom) : untuk menghitung penjumlahan data.
  • Max(nama_kolom) : untuk mencari nilai data terbesar.
  • Min(nama_kolom) : untuk mencari nilai data terkecil.
  • Avg(nama_kolom) : untuk mencari nilai rata - rata dari suatu data.
Group By
Merupakan fungsi yang digunakan untuk melakukan pengelompokan dari perintah SELECT.

Having
Kegunaannya adalah untuk menentukan kondisi bagi Group By.


Case
Kata Where menggunakan perbandingan untuk mengontrol pemilihan data, sedangkan Case perbandingan dalam bentuk output kolom.

View
Suatu relasi virtual yang tidak perlu ada database tapi dapat diproduksi atas permintaan pemakai tertentu, pada ketika permintaan.

Daftar Pustaka
Modul Praktikum BAB V.pdf