Selasa, 20 Januari 2015

Sistem Basis Data (Agregat dan Distink)

 Query dalam  MySQL yang menggunakan fungsi agregat, group by dan having. Tabel-tabel yang akan digunakan adalah sebagai berikut:
  • matakuliah(kodemk, namamk, sks), berisi daftar matakuliah yang ditawarkan
  • dosen(nip, nama), berisi daftar dosen pengampu kuliah
  • mahasiswa(nim, nama, dosenpembimbing), berisi daftar mahasiswa
  • kuliah(kodekuliah, kodemk, nip, thnakademik, semester), berisi daftar matakuliah dan dosen pengampu
  • peserta(nimkodekuliah, nilai), berisi kuliah yang diikuti mahasiswa beserta nilainya dalam huruf
Dalam pembahasan kali ini diasumsikan:
  • matakuliah hanya ditawarkan sekali dalam setahun, yaitu pada semester 1 (ganjil) saja atau semester 2 (genap) saja dan tidak kedua-duanya.
  • bila pernah mengulang matakuliah, nilai yang diikutkan untuk perhitungan IP adalah nilai terakhir
  • matakuliah dikatakan lulus bila nilai yang diperoleh minimal ‘D’
Berikut ini adalah contoh-contoh query dalam MySQL:
1.      Menampilkan banyaknya SKS yang telah diselesaikan oleh masing-masing mahasiswa
a.       Bila matakuliah yang diulang semua masuk dalam perhitungan
SELECT nim, SUM( sks ) jumlahsks
FROM peserta, (
SELECT kodekuliah, kuliah.kodemk, sks
FROM kuliah, matakuliah
WHERE kuliah.kodemk = matakuliah.kodemk
) A
WHERE peserta.kodekuliah = A.kodekuliah
GROUP BY nim
Penjelasan:
Pada query ini menampilkan jumlah SKS yang telah diselesaikan oleh masing-masing mahasiswa bila matakuliah yang diulang semua masuk dalam perhitungan. Pertama-tama, melakukan join tabel kuliah dengan tabel matakuliah pada kondisi kodemk pada tabel kuliah sama dengan kodemk pada tabel matakuliah untuk mendapatkan kodekuliah, kodemk dan sks.
…(
SELECT kodekuliah, kuliah.kodemk, sks
FROM kuliah, matakuliah
WHERE kuliah.kodemk = matakuliah.kodemk
) A
Lalu hasil join tersebut diberi alias A. Selanjutnya, tabel A tadi  join-kan dengan tabel peserta pada kondisi kodekuliah pada tabel peserta sama dengan kodekuliah pada tabel A untuk mendapatkan nim dan sks yang selanjutnya menjumlahkan sks dengan SUM(sks) yang dikelompokkan berdasarkan nim menggunakan GROUP BY nim.
b.      Bila matakuliah yang diulang hanya yang sesuai dengan asumsi yang masuk dalam perhitungan
SELECT nim, SUM( sks ) totalsks
FROM (
SELECT DISTINCT nim, kodemk
FROM peserta, kuliah
WHERE peserta.kodekuliah = kuliah.kodekuliah
)P, matakuliah
WHERE P.kodemk = matakuliah.kodemk
GROUP BY nim
Penjelasan:
Pada query ini menampilkan jumlah SKS yang telah diselesaikan oleh masing-masing mahasiswa bila matakuliah yang diulang  hanya dihitung sekali. Pertama-tama  melakukan join tabel peserta dengan tabel kuliah pada kondisi kodekuliah pada tabel peserta sama dengan kodekuliah pada tabel kuliah untuk mendapatkan nim dan kodemk.
… (
SELECT DISTINCT nim, kodemk
FROM peserta, kuliah
WHERE peserta.kodekuliah = kuliah.kodekuliah
)P …
Kata DISTINCT setelah SELECT digunakan untuk menghilangkan pengulangan  record yang mempunyai nim dan kodemk yang sama agar matakuliah yang diulang oleh seorang mahasiswa hanya muncul sekali. Hasil join tersebut diberi alias P. Lalu tabel P  join-kan dengan tabel matakuliah pada kondisi kodemk pada tabel P sama dengan kodemk pada tabel matakuliah untuk mendapatkan nim dan sks yang dijumlahkan dengan SUM(sks) setelah dikelompokkan berdasarkan GROUP BY nim.
2.      Menampilkan data-data yang bisa untuk melakukan perhitungan IPK (berdasar asumsi di atas)
SELECT nim, kuliah.kodemk, nilai, sks
FROM peserta, matakuliah, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
AND kuliah.kodemk = matakuliah.kodemk
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
Penjelasan:
Pada query ini  melakukan join pada tiga tabel, yaitu peserta, matakuliah dan kuliah dengan kondisi kodekuliah pada tabel kuliah sama dengan kodekuliah pada tabe lpeserta dan kodemk pada tabel  kuliah sama dengan kodemk pada tabel matakuliah. Setelah itu  lakukan operasi intersection dengan query yang menampilkan tahun terakhir menyelesaikan suatu matakuliah.
AND (
nim, kuliah.kodemk, thnakademik
)
IN (
SELECT nim, kodemk, MA  thnakademik ) thnterakhir
FROM peserta, kuliah
WHERE kuliah.kodekuliah = peserta.kodekuliah
GROUP BY nim, kodemk
)
Pada query untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah,  melakukan join pada tabel peserta dan tabel kuliah dengan kondisi kodekuliah pada tabel kuliahsama dengan kodekuliah pada tabel peserta. Lalu untuk mencari tahun terakhir digunakan fungsi MA thnakademik )  setelah dikelompokkan berdasarkan nim dan kodemk dengan GROUP BY nim, kodemk. Lalu operasi intersection dilakukan dengan memeriksa apakah record nim, kodemk, thnakademik dari hasil join tiga tabel ada pada hasil query untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah.
3.      Menampilkan dosen yang pernah mengampu kelas matakuliah yang pesertanya tidak lebih dari 15 mahasiswa
SELECT DISTINCT nip
FROM kuliah, (
SELECT kodekuliah, COUNT( * ) jumlahpeserta
FROM peserta
GROUP
BY kodekuliah
) banyakpeserta
WHERE kuliah.kodekuliah = banyakpeserta.kodekuliah
AND jumlahpeserta <=15
Penjelasan:
Pada query ini akan menampilkan dosen yang pernah mengampu  matakuliah yang pesertanya <= 15 mahasiswa. Awalnya menggunakan tabel peserta,  hitung dahulu jumlah peserta dari setiap kuliah dengan menggunakan COUNT setelah dikelompokkan berdasarkan kodekuliah dengan GROUP BY kodekuliah.
…(
SELECT kodekuliah, COUNT( * ) jumlahpeserta
FROM peserta
GROUP
BY kodekuliah
) banyakpeserta
Setelah itu query tersebut diberi alias banyak peserta. Lalu pada query utama  melakukan join pada tabel banyakpeserta dengan tabel kuliah pada kondisi kodekuliah pada tabel kuliah sama dengan kode kuliah pada tabel banyak peserta serta menambahkan kondisi jumlahpeserta <= 15. Pada query utama menampilkan nip yang di dahului dengan kataDISTINCT agar nip yang ditampilkan tidak ada perulangan.

Fungsi GROUP BY dan HAVING berkaitan dengan fungsi agregat. Fungsi agregat merupakan kelompok fungsi di MySQL yang memungkinkan untuk memiliki parameter berupa kelompok data. Sebagai contoh dari fungsi agregat adalah fungsi SUM() yang akan menjumlahkan seluruh nilai yang menjadi parameternya. Contoh lain adalah fungsi MAX() yang akan menghasilkan nilai terbesar dari keseluruhan nilai yang menjadi parameternya.

Name
Description
Return the average value of the argument
Return bitwise and
Return bitwise or
Return bitwise xor
Return the count of a number of different values Berikut
Return a count of the number of rows returned
Return a concatenated string
Return the maximum value
Return the minimum value
Return the population standard deviation
Return the population standard deviation
Return the sum
Return the population standard variance



 Buatlah tabel nilai yang menyimpan data nilai mahasiswa, strukturnya sebagai berikut:

Column
Type
Comment
Nim
nchar(10)
 Nim mahasiswa
Nama
varchar(30)
 Nama mahasiswa
Matkul
varchar(20)
 Nama Matakuliah
Nilai
int(3)
 Nilai mahasiswa

1. Tampilkan rata-rata nilai dari seluruh mahasiswa.
Untuk menyelesaikannya tidak perlu menggunakan GROUP BY karena yang diminta adalah seluruh mahasiswa. Untuk mendapatkan rata-rata nilai  menggunakan fungsi AVG(). Berikut ini query untuk kasus tersebut.

SELECT AVG(nilai) as rata_rata FROM nilai;
2. Tampilkan rata-rata nilai untuk setiap mahasiswa
Karena yang diminta adalah rata-rata untuk setiap mahasiswa  menggunakan GROUP BY untuk mengelompokkan rata-rata berdasarkan field tertentu. Query dan hasilnya  sebagai berikut:

SELECT nim, nama, AVG(nilai) as rata_rata FROM nilai GROUP BY nim, nama;

3. Tampilkan nilai terbesar dan terkecil untuk setiap mahasiswa.
Agregat yang digunakan untuk menampilkan nilai terbesar dan terkecil yaitu MAX() dan MIN(). Berikut ini query dan hasil query-nya.

SELECT nim, nama, MAX(nilai) as terbesar, MIN(nilai) as terkecil FROM nilai;
4. Tampilkan rata-rata nilai yang didapat mahasiswa untuk setiap matakuliah
 Querynya kurang lebih sebagai berikut:
SELECT matkul, AVG(nilai) as rata_rata FROM nilai GROUP BY matkul;

5. Tampilkan rata-rata nilai untuk setiap mahasiswa, yang rata-rata nilai lebih besar dari 80
Yang ingin ditampilkan adalah hanya mahasiswa yang nilainya lebih dari 80. Query  sebagai berikut:

SELECT nim, AVG(nilai) as rata_rata FROM nilai GROUP BY nim HAVING AVG(nilai)>80;



Pemrograman Array


Array adalah sekumpulan variabel yang memiliki tipe data yang sama dan dinyatakan dengan nama yang sama. Array merupakan konsep yang penting dalam pemrograman, karna array memungkinkan untuk menyimpan data maupun referensi objek dalam jumlah banyak dan terindeks. Array menggunakan indeks integer untuk menentukan urutan elemen-elemennya, dimana elemen pertamanya dimulai dari indeks 0,elemen kedua memiliki indeks 1, dan seterusnya.
·         Contoh :
-          Angka untuk menyimpan sederetan bilangan
-          Buku untuk menyimpan sekumpulan data buku
-          Mahasiswa untuk menyimpan beberapa data mahasiswa
·         Sebagai contoh jika A merupakan sebuah array dengan tipe integer, maka notasi dari array A adalah: A[n], dengan n merupakan angka index dari array tersebut misal:
A[0]=100
A[1]=200
A[2]=300
A[3]=400

A.   Mendeklarasikan Variabel Array
Mendeklarasikan variabel array dengan tipe data yang diinginkan dengan cara yang hampir sama dengan variabel biasa. Misalnya untuk mendeklarasikan variabel bertipe integer, dapat dilakukan dengan cara :
int [ ] bilangan; atau int bilangan [ ];
Jadi perbedaan utama pendeklarasian variabel array dengan variabel biasa adalah adanya tanda kurung [ ] di akhir tipe data atau di akhir nama variabel array. Pada tahap pendeklarasian variabel array ini belum ada alokasi memory untuk menyimpan data.
B.   Mendefenisikan Array
 Setelah mendeklarasikan array, kita perlu mendefenisikan array, dalam arti menentukan besar array yang diinginkan. Misalnya dengan cara :
Bilangan = new int [5];
Array memiliki ukuran yang tetap dalam arti tidak dapat membesar atau mengecil ukurannya setelah didefenisikan. Setelah didefenisikan, maka variabel dengan nama bilangan dapat menyimpan 5 nilai integer yang dapat diakses melalui indeks 0 sampai indeks 4. Setelah pendefenisian array, maka memori akan dialokasikan untuk menyimpan data dari array. Besar memori yang dialokasikan tergantung dari tipe data variabel array dan jumlah elemen array yang didefenisikan.

C.   Array Dua Dimensi
      Pada java juga menyediakan fasilitas untuk membuat array dua dimensi yang dapat membantu dalam pemrograman apabila array datu dimensi tidak mencukupi dalam menghasilkan suatu solusi. Array dua dimensi sebenarnya adalah array yang berisi array.

D.   Array Multidimensi
        Selain array satu dimensi dan array dua dimensi, dapat juga membuat array multi dimensi pada java. Array multidimensi merupakan array yang terdiri dari array yang tidak terbatas hanya dua dimensi saja. Kita dapat menggunakan kode berikut untuk mendapatkan array 3 dimensi :
Int [ ] [ ] array dimensi = new int [ 5 ] [ 10 ] [ 5 ] ;
  Dan pada array multidimensi , kita dapat menetukan ukuran array yang berbeda pada tiap array. Misalnya :
Int [ ] [ ] [ ] mdimensi = new int [ 5 ] [ ] [ ] ;
   Dari kode diatas, kita mendapatkan array pertama dengan 5 elemen, tetapi kita belum mendefinisikan ukuran array dimensi kedua dan ketiga.
Contoh ;
// Elemen 512 x 128 dari integer array
int[][] twoD = new int[512][128];
// karakter array 8 x 16 x 24
char[][][] threeD = new char[8][16][24];
// String array 4 baris x 2 kolom
String[][] dogs = {{ "terry", "brown" },
{ "Kristin", "white" },
{ "toby", "gray"},
{ "fido", "black"}
};
            Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses element pertama dari baris pertama didalam array dogs, kita akan menulis,

System.out.print( dogs[0][0] );

Kode diatas akan mencetak String “terry” di layar.

 COntoh program dari netbeans

1.      Script Array.java
Gambar. scripr array.java

Hasil output

Gambar. hasil run