JARINGAN KOMPUTER

23/10/12

Diagnosa Permasalahan Perangkat pada Jaringan

Permasalahan yang menyebabkan tidak berfungsinya komponen pendukung jaringan pada PC jaringan biasanya disebabkan oleh:
  1. Korosi (berkarat), biasanya terjadi pada PC yang di tempatkan di tempat yang lembab ataupun pada PC yang perawatannya kurang baik.
  2. Rusak
Faktor-faktor penyebab kerusakan:
A. Hardware
  1. Tegangan Listrik
Tegangan listrik dapat menyebabkan ganguan apabila tegangan yang dihasilkan tidak stabil, sering terjadi naik dan turun atau mati mendadak dari sumber PLN. Hal tersebut sangat mempengaruhi dikarenakan semua peralatan yang kita gunakan bersumber pada listrik. Sumber listrik yang kita gunakan tidak baik atau tidak stabil, dapat menyebabkan peralatan yang kita gunakan mudah rusak. Sehinga akan mempengaruhi jaringan apabila terjadi kerusakan pada komputer workstation maupun di komputer server.
  1. Network Interface Card (NIC)
Sebuah kartu jaringan (LAN Card) yang terpasang pada sebuah komputer server maupun workstation sehingga komputer dapat dihubungkan ke dalam sistem jaringan. Apabila terjadi gangguan atau kerusakan pada kartu jaringan berakibat pada komputer tersebut tidak dapat masuk dalam sistem jaringan. Indikator yang dapat dilihat dalam kerusakan kartu jaringan adalah matinya lampu indikator yang terdapat pada kartu jaringan dan lampu indikator di Hub/switch saat komputer telah hidup dan konektifitas kabel dari kartu jaringan dan hub/switch telah baik.
  1. Server
Server adalah komputer yang biasanya dikhususkan untuk
penyimpanan data atau system operasi berbasis network (Network
Operating System), berisikan daftar user yang diperbolehkan
masuk ke server tersebut. Jadi apabila komputer server mengalami
kerusakan atau gangguan secara otomatis seluruh jaringan tidak
berfungsi karena server merupakan pintu masuk dan sebagai pusat
jaringan tersebut. Jadi apabila seluruh jaringan tidak dapat
berfungsi berarti terjadi gangguan atau kerusakan pada server.
  1. Workstation
Workstation adalah komputer yang memanfaatkan jaringan untuk menghubungkan komputer tersebut dengan komputer lain atau komputer tersebut dengan server. Pemanfaatan jaringan tersebut dapat berupa sharing data, sharing printer dan sebagainya. Apabila terjadi kerusakan pada komputer workstation berarti komputer yang digunakan tidak dapat masuk dalam jaringan sehingga tidak dapat berkomunikasi dengan komputer server maupun komputer lain dalam jaringan tersebut.
  1. HUB/Switch
Hub/switch merupakan terminal atau pembagi signal data bagi kartu jaringan (Network Card). Jika Hub mengalami kerusakan berarti seluruh jaringan juga tidak dapat berfungsi untuk berkomunikasi antar workstation atau komputer workstation dengan server. Apabila terjadi kerusakan pada Hub dapat dilihat pada lampu indikator power dan lampu indikator untuk masing masing workstation. Apabila lampu indikator power Hub/switch mati berarti kemungkinan besar Hub tersebut rusak. Jika ada lampu indikator workstation yang tidak menyala menyatakan bahwa komputer workstation sedang tidak aktif (tidak hidup) atau
ada gangguan pada komputer workstation tersebut.
  1. Kabel dan Konektor
Kabel dan konektor merupakan media penghubung antara komputer dengan komputer lain atau dengan peralatan lain yang digunakan untuk membentuk jaringan. Kabel dan konektor untuk membuat jaringan LAN yang banyak digunakan ada 3 jenis yaitu:
· Jenis kabel serat optik menggunakan konektor SC dan ST. Gangguan atau kerusakan pada kabel dan konektor jenis serat optik sangat jarang, tetapi memerlukan penanganan secara khusus untuk perawatan jaringan
· Jenis Kabel UTP dengan konekor RJ45. Gangguan atau

kerusakan pada kabel jenis ini adalah konektor yang tidak terpasang dengan baik (longgar), susunan pengkabelan yang salah dan kabel putus. Indikasi yang dapat dilihat adalah lampu indikator yang tidak hidup pada kartu jaringan atau pada Hub/switch. Jaringan menggunakan kabel UTP kesalahan yang muncul relatif sedikit, karena jaringan terpasang menggunakan topologi star, workstation terpasang secara paralel dengan menggunakan swicth/hub. Sehingga yang terjadi gangguan hanya pada workstation yang kabelnya mengalami gangguan saja

· Jenis kabel Coaxial dengan konektor BNC. Kabel jenis coaxial memiliki akses yang cukup lambat bila dibandingkan jenis kabel lainnya dan sering terjadi gangguan karena konektor yang longgar (tidak konek), kabel short dan kabel terbuka resistor pada terminating conector. Short pada pemasangan kabel dengan plug konektor ini menyebabkan system jaringan akan down dan komunikasi antar komputer berhenti

B. Software

Kesalahan software
Kesalahan bagian software berhubungan dengan kesalahan bagaimana setting dan konfigurasi jaringan yang berkaitan dengan system operasi baik pada komputer server maupun komputer workstation (client) yang digunakan, jenis protokol yang dipakai serta topologi jaringan.
Permasalahan yang sering di temui pada pemasangan jaringan:
  1. Hardware
Permasalahan yang terjadi pada hardware computer biasanya terjadi pada komponen-komponen seperti LAN Card, pengkabelan dan konektor. Hal ini sering disebabkan oleh koneksi (hubungan) yang tidak baik antar komponen dan tidak berfungsinya komponen dikarenakan sudah mati atau rusak.
a) Network Interface Card (kartu jaringan)
Secara fisik untuk mengenali bahwa kartu jaringan tersebut telah atkif atau tidak aktif dapat dilihat pada lampu indikator yang terdapat dalam Kartu jaringan tersebut saat komputer hidup dan kartu jaringan telah dihubungkan dengan kabel jaringan maka lampu indikator harus sudah menyala. Apabila belum menyala berarti terdapat permasalahan atau kerusakan pada kartu jaringan tersebut.
Untuk mengetahui bahwa kartu jaringan telah bekerja atau aktif dapat dilihat pada:
Klik Start > setting > klik Control Panel. Lalu pilih icon system double klik pilih menu Device Manager. Disana dapat dilihat bahwa kartu jaringan tersebut telah dikenal atau belum. Bila sudah dikenal maka kartu jaringan komputer dapat bekerja atau aktif.
b) Pengkabelan dan Konektor
Pemilihan media komunikasi menggunakan kabel sebagai penghubung antar komputer memang merupakan media yang cukup ideal dibandingkan dengan media lainnya seperti RF (radio frekuensi), IR (Infra Red) atau jalur telephone karena murah, mudah dan mempunyai kecepatan data yang cukup tinggi. Tetapi kesalahan dalam aturan pemasangan kabel, kualitas kabel itu sendiri, serta layout atau topologi jaringan seringkali mengganggu dalam system jaringan kabel.
Permasalahan yang terjadi pada thin coax:
a. Konektor longgar (tidak terhubung)
Biasanya terjadi pada pada koneksi antar kartu jaringan dengan konektor kabel.
b. Kabel short.
Kondisi ini menyatakan bahwa telah terjadi kabel yang hubung singkat dalam jaringan.
c. Resistor pada terminating Connector
d. Short pada pemasangan kabel dengan plug konektor
e. Longgar pada male connector
Permasalahan yang terjadi pada kabel UTP:
a. Konektor longgar (tidak terhubung)
b. Kabel short
c. Kabel terbuka (open)
*) Untuk mengecek kabel yang terbuka (open) dan kabel yang short dapat dilakukan dengan menggunakan Multimeter dengan mengetes ujung-ujung kabel.
  1. Software
Permasalahan yang sering muncul pada bagian software ini pada umumnya bisa dikelompokkan atas:
a. Kesalahan setting konfigurasi jaringan
Kesalahan setting konfigurasi sering terjadi pada kartu jaringan yang menggunakan model ISA karena kita harus menentukan :

- Alamat port I/O
- Nomor Interupt
- Direct Memory Access Request line
- Buffer memory Address
*) Berbeda dengan kartu model ISA Kartu jaringan yang menggunakan model PCI tidak perlu mengeset karena secara otomatis telah tersedia.

b. Kesalahan Protocol yang digunakan

Hal ini sering terjadi pada kartu jaringan yang menggunakan slot ISA karena penen- tuan harus dilakukan secara manual. Apabila kita menggunakan protocol kartu jari-ngan model PCI hal tersebut jarang terjadi apabila kita telah menginstall driver de-ngan benar.

c. Kesalahan pengalamatan IP.

Setiap komputer dalam suatu jaringan merupakan identifikasi alamat yang unik, se-hingga tidak diperbolehkan ada alamat yang sama. IP Address dalam jaringan tidak diperbolehkan sama karena merupakan identitas untuk masing-masing komputer da-lam jaringan untuk komunikasi data, jika terjadi alamat yang sama maka kedua kom-puter tidak dapat mengakses jaringan karena terjadi perebutan nomor alamat tersebut.

d. Kesalahan Indentifikasi Client dan server komputer

Penentuan antara komputer server dan komputer client harus jelas untuk jaringan client server, berbeda pada jaringan peer to peer tidak ada penentuan client dan server.

e. Kesalahan Service Network (file and print sharing)

Service network (file and print sharing) yang tidak aktif bisa dikarenakan file and print sharing yang kita hubungi sedang tidak aktif atau kita belum melakukan file and print sharing.

f. Kesalahan Security System

Kesalahan pemasukan password pada saat kita masuk dalam jaringan sehingga kita tidak dapat masuk dalam jaringan karena kesalahan pengamanan (password).
Kerusakan file program, sehingga perlu di update.
Kerusakan file program yang menyebabkan sistem operasi tidak bisa berjalan atau menyebabkan kartu jaringan tidak dapat bekerja (tidak aktif). Untuk dapat melakukan perbaikan dalam kesalahan-kesalahan software tersebut dapat dilakukan dengan setting ulang software sesuai dengan ketentuan dalam jaringan tersebut.
Kasus-kasus yang sering disebabkan oleh sistem operasi networking:
- Tidak bisa sharing files atau printer.
Sharing file atau printer adalah membuka akses agar komputer lain dapat mengakses atau melihat data kita. Tidak dapat sharing file atau printer dapat dikarenakan data atau printer tersebut belum di sharing. untuk dapat melakukan sharing dapat dilakukan dengan klik kanan share.
- Tidak bisa install network adapter.
Kasus ini biasanya disebabkan oleh sorfware kartu jaringan yang tidak sesuai antara driver dengan kartu jaringannya atau pemasangan kartu jaringan yang tidak sempurna pada mainboard sehingga komputer tidak dapat mengenal kartu jaringan tersebut.

Hal yang harus dilakukan dengan pengecekan pada kartu jaringan apakah telah terpasang dengan benar atau kartu jaringan telah terinstall dengan driver bawaannya.
- Komputer lain tidak dapat masuk ke komputer kita.
Komputer lain yang tidak dapat masuk ke komputer kita padahal komputer kita dapat masuk ke komputer lain disebabkan karena kita belum melakukan sharing data atau sharing printer. Tidak bisa Login dalam jaringan
- Tidak bisa masuk dalam jaringan berarti client tidak dapat mengakses jaringan secara keseluruhan.
- Tidak bisa menemukan komputer lain pada daftar network neighborhood.
Apabila secara hardware dan software tidak ada masalah komputer harus dilakukan restart untuk menyimpan semua data yang telah kita update ke sistem operasi.

Kasus-kasus tersebut dapat teratasi apabila tidak terjadi kesalahan-kesalahan software pada saat setting Kartu jaringan. Setting kartu jaringan sangat penting untuk terjadinya hubungan antar komputer, apabila terjadi kesalahan maka menyebabkan komputer tersebut tidak dapat terhubung dalam jaringan. Pengecekan kesalahan harus dilakukan satu persatu dengan teliti sesuai dengan ketentuan yang telah ditetapkan pada jaringan tersebut diantaranya pemberian nomor IP dan subnetmask pada protocol yang digunakan, nama Workgroupnya dan sebagainya.


Tips & Trik Jaringan " Pengecekan Koneksi    Jaringan



Tips & Trik Jaringan

1. Pengecekan Koneksi Jaringan

Bagi pada network administrator LAN atau jaringan lokal komputer, masalah sebuah komputer
tidak bisa mengakses data di server pasti sudah merupakan hal yang biasa di hadapi. Berikut
adalah tips bagi para network administrator pemula, hal-hal yang bisa dilakukan apabila mengalami
masalah seperti di atas.

Sebagai seorang network admin, kadang kala bisa menimbulkan perasaan frustrasi apabila tidak
bisa menemukan penyebab atau sumber masalah pada sebuah komputer yang tidak bisa terkoneksi
ke jaringan atau tidak bisa mengakses data di server padahal sudah login / masuk ke jaringan.
Berikut adalah tips-tips langkah yang harus diambil seandainya mengalami hal ini.
Langkah pengecekan adalah:

1. Cek kartu jaringan atau network card yang terpasang, apakah sudah dikenal oleh sistem operasi,
untuk sistem operasi windows bisa dilakukan dengan mengecek ke control panel kemudian pilih
system.

2. Jika tidak dikenal atau masih ada error dengan kartu jaringannya, coba di remove atau dihapus
kemudian diinstall ulang dengan menggunakan driver (software program untuk kartu jaringan) dari
kartu jaringan tersebut yang sesuai.

3. Apabila kartu jaringan sudah OK dan dikenal oleh sistem operasi. Untuk lingkungan yang
menggunakan protokol TCP/IP mencoba untuk menggunakan utility ping yang ada di sistem operasi
Windows, Linux maupun UNIX. namun sebelum melakukan ping, bisa dilihat berapa alamat IP dari
komputer tersebut dengan menggunakan command atau perintah 'winipcfg' untuk sistem operasi
Windows 9.x atau 'ipconfig' untuk windows NT/W2K. Atau untuk di lingkungan berbasis *nix, bisa
menggunakan command 'ifconfig'.

Contoh:
C:>ipconfig Windows 2000 IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 155.35.119.246
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 155.35.119.1

Dari contoh di atas didapatkan bahwa alamat IP nya adalah 155.35.119.246. Dan subnet masknya
255.255.0.0, subnet mask ini berfungsi sebagai penentuan segmen dalam jaringan atau membagi
jaringan yang besar menjadi jaringan yang lebih kecil. Kalau default gateway itu berfungsi jika kita
akan berkomunikasi dengan komputer lain di luar jaringan kita atau di luar segmen jaringan kita.
Untuk segmen akan dibahas di artikel lain mendatang.
Kemudian kita coba ping ke alamat IP dari komputer tersebut.
Contoh:
C:>ping 155.35.119.246
Pinging 155.35.119.246 with 32 bytes of data:
Reply from 155.35.119.246: bytes=32 time<10ms TTL=128
Reply from 155.35.119.246: bytes=32 time<10ms TTL=128
Reply from 155.35.119.246: bytes=32 time<10ms TTL=128
Reply from 155.35.119.246: bytes=32 time<10ms TTL=128
Ping statistics for 155.35.119.246:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
Jika mendapatkan hasil seperti di atas maka setting di kartu jaringannya sudah dikenal oleh sistem
operasi. Langkah selanjutnya adalah mencoba koneksi ke komputer di dalam jaringan yang sama.

4. Untuk mengecek koneksi ke komputer lain dalam satu jaringan yang sama, juga bisa dilakukan
dengan menggunakan utility ping seperti di atas tadi. Misalnya katakan komputer teman kita
alamat IP nya 155.35.119.138 dengan asumsi segmen yang sama yaitu subnet masknya
255.255.0.0
Contoh:
C:>ping 155.35.119.138
Pinging 155.35.119.138 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 155.35.119.138:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

Perhatikan bahwa pesan yang didapatkan berbeda dengan yang tadi di mana pesannya ini
menunjukkan paket yang kita kirimkan ke komputer tersebut dengan protokol ICMP tidak direspon
atau alias 'timed out' atau paket yang dikirim tidak mencapai tujuan selama waktu tertentu (TTL -
Time To Live).
Lalu apakah berarti komputer kita masih bermasalah ???
Jawabannya belum tentu, bisa jadi komputer dengan alamat IP 155.35.119.138 itu tidak aktif atau
tidak dinyalakan atau tidak terhubung ke jaringan.
Sehingga kita perlu mencari target komputer lain yang pasti bahwa koneksi ke jaringan tidak
mempunyai masalah sama sekali. Sebagai contoh misalnya alamat IP 137 lagi aktif maka kita coba
ping ke IP 137 tersebut seperti contoh di bawah ini:

C:>ping 155.35.119.137
Pinging 155.35.119.137 with 32 bytes of data:
Reply from 155.35.119.137: bytes=32 time<10ms TTL=255
Reply from 155.35.119.137: bytes=32 time<10ms TTL=255
Reply from 155.35.119.137: bytes=32 time<10ms TTL=255
Reply from 155.35.119.137: bytes=32 time<10ms TTL=255
Ping statistics for 155.35.119.137:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

Apabila kita mendapatkan respon seperti di atas jika menggunakan utility ping ke komputer lain
yang juga terkoneksi ke jaringan, maka bisa dipastikan bahwa komputer kita sudah terhubung
dengan baik.



Read more ...
18/10/12
CARA KONEKSI DATABASE MC ACCESS VS DELPHI




Buat Teman-teman seperjuangan,
 Kali ini kita akan belajar mengenai koneksi Database Access dengan DB 7 melalui ADO (ActiveX Data Objects). Delphi dapat menggunakan database dari ms Access untuk dipakai sebagai penyimpanan dan pemrosesan data. dengan fasilitas ADO pada delphi 7, dapat dikoneksikan database ms access dengan ekstensi .mdb berikut cara melakukan koneksinya:
langkah 1
- buka delphi 7
langkah 2
- pilih bagian ADO
- ambil ADOConnection dan ADOTable dan masukkan ke dalam form
- ADOConnection digunakan untuk melakukan koneksi dengan file database yang telah dibuat
- ADOTable digunakan untuk mengambil table yang ada di dalam database. pada ADOTable dapat disetting nilai field yang terdapat pada table database yang diambil. ADOTable terkoneksi dengan ADOConnection
langkah 3
- pilih bagian data access
- ambil datasource dan masukkan ke dalam form
- datasource digunakan untuk pengambilan data field yang terdapat di dalam table, datasource secara langsung terkoneksi dengan ADOTable
langkah 4
-doubleklik pada ADOConnection,  kan muncul dialog seperti pada gambar
-lalu klik build
langkah 5
- akan keluar dialog seperti gambar diatas
- pilih microsoft jet 4, microsoft jet 4 digunakan untuk mengenali file database dari ms Access
- kemudian pilih next
langkah 6
- pada bagian conection, pilih lokasi database(ekstensi .mdb) yang sebelumnya telah dibuat
- lakukan test connection untuk melihat database telah terkoneksi atau belum.
- apabila database memiliki password maka isikan pada bagian password dan username
- setelah selesai klik ok
langkah 7
- klik ADOConection, pada bagian properties (bagian kiri bawah) atur seperti pada gambar diatas
- conected diatur true agar file database terkoneksi dengan program yang dibuat
- name dapat diubah sesuai kebutuhan untuk mempermudah pembuatan program yang melibatkan ADOConnection, pada gambar diatas name diubah menjadi koneksi


langkah 8
- klik ADOTable, pada bagian properties (bagian kiri bawah) atur seperti pada gambar diatas
- active digunakan untuk mengaktifkan pengambilan tabel
- name digunakan untuk merubah nama ADOTabel yang digunakan dalam program, pada gambar diatas name diubah menjadi table1
- table direct digunakan untuk melakukan akses table pada database secara langsung
- tablename digunakan untuk melakukan pengambilan table pada file database, seringkali dalam sebuah database terdapat banyak table dan querry, karena itu untuk mengakses banyak table diperlukan banyak ADOTable karena sebuah ADOTable hanya dapat mengakses 1 table saja dalam 1 waktu, pada gambar diatas dipilih table dengan nama database pada file database yang telah diload oleh ADOConnection(ADOConnection harus dalam posisi Connected=true)
langkah 9
- klik datasource, pada bagian properties (bagian kiri bawah) atur seperti pada gambar diatas
- dataset digunakan untuk mengambil data field pada table yang diinginkan, table yang telah aktif dan telah dibuat adalah table dari ADOTable dengan nama table1 karena itu dataset dapat diisi dengna table1
- name juga dirubah untuk mempermudah penulisan program, pada gambar diubah menjadi source1
- setelah pengaturan selesai maka telah terjadi hubungan yaitu pengambilan file database oleh ADOConnection, lalu pengambilan Table Database oleh ADOTable, dan pengambilan data field oleh datasource dan koneksi antara database dan program dalam delphi telah selesai.
- selanjutnya database dapat digunakan sesuai kebutuhan
langkah selanjutnya adalah contoh untuk menampilkan database yang telah dihubungkan
langkah 10
- masuk ke bagian data control
- pilih dbgrid lalu tempatkan apda form seperti pada gambar diatas
- dbgrig adalah tampilan interface berupa table, namun karena belum diisi maka tampilan dbgrid masih kosong seperti pada gambar
langkah 11
- pada bagian properties dbgrid, datasource dapat diisi dengan source1 yaitu nilai dari field yang telah diambil dari database access
- setelah melakukan perubahan properties pada dbgrid maka tampilannya akan berubah dan menampilkan isi table database yang telah diambil seperti terlihat pada gambar
- apabila table tidak muncul pada dbgrid perlu decek kembali apakah ADOConnection sudah connected = true dan apakah ADOTable sudah active = true
langkah 12
- tampilan pada dbgrid merupakan tampilan yang masih kasar dan belum terlihat baik karena itu dapat dilakukan perubahan tampilan dari field dengan ADOTable
- doubleklik pada ADOTable, maka akan muncul form dialog
- selanjutnya klik kanan pada kotak dialog tersebut lau pilih Add all Fields


langkah 13
- setelah field muncul lau dapat dipilih field yang ingin diatur, dan pengaturannya dapat dilakukan melalui bagian properties di kiri bawah
- pada gambar dipilih field kode lalu pada properties diatur visible = false maka selanjutnya pada dbgrid terlihat bahwa field kode menghilang
-field kode sebenarnya amsih ada hanya tidak ditampilkan pada dbgrid karena telah diatur pada properties fieldnya, ini berguna untuk menyembunyikan field yang tidak perlu dilihat
langkah 14
- selanjutnya adalah field nama, pada bagian prperties terlihat size field ini 255 sehingga terlihat sangat panjang pada dbgrid karen itu dapat dipendekkan dengan merubah nilai displaywidth
- pada gambar display width dirubah menjadi 30 sehingga pada dbgrid field name memendek hanya 30 karakter
- tampilan pada dbgrid sudah terlihat sesuai dan baik


langkah 15
- form dapat diatur sesuai dengan keinginan
- program ini telah selesai untuk menampilkan database yang telah terkoneksi
langkah 16
- untuk melakukan save pada delphi 7 dapat dilakukan dengan save all untuk save form dan save project.

heee....mudah bukan...??? kebetulan saya ( Willh ) masih tahap belajar juga Nich.....


Read more ...
16/06/12

    Bagi Anda dan saya yang sedang membuat sistem informasi akademik dan merasa kesulitan dengan bagaimana cara menampilkan nilai Index Prestasi (IP) mahasiswa untuk setiap semesternya, mudah-mudahan artikel ini berguna.
Ide menulis artikel ini muncul sewaktu perjalanan menuju my campus :-)
OK… dalam artikel ini akan saya coba kupas bagaimana membuat query SQL untuk menampilkan Index Prestasi mahasiswa untuk setiap semester yang telah ditempuhnya. Query ini pasti terdapat dalam sebuah sistem informasi akademik untuk menginformasikan track record akademik seorang mahasiswa yang telah menempuh perkuliahan.
Misalkan kita memiliki tabel matakuliah (‘mk’) dan pengambilan matakuliah (‘ambilmk’) dalam database sebagai berikut:

1.CREATE TABLE mk (
2.kodeMK varchar(5),
3.namaMK varchar(20),
4.sks int(11),
5.PRIMARY KEY(kodeMK)
6.)
1.CREATE TABLE ambilmk (
2.nim varchar(5),
3.kodeMK varchar(5),
4.nilai float,
5.smt varchar(10),
6.tahun varchar(9),
7.PRIMARY KEY  (nim, kodeMK, smt, tahun),
8.)

disertai dengan record untuk masing-masing tabel sbb:

1.INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '3', 'GANJIL', '2008/2009');
2.INSERT INTO `ambilmk` VALUES ('M002', 'MK02', '4', 'GANJIL', '2008/2009');
3.INSERT INTO `ambilmk` VALUES ('M002', 'MK03', '3', 'GENAP', '2008/2009');
4.INSERT INTO `ambilmk` VALUES ('M002', 'MK04', '4', 'GENAP', '2008/2009');
5.INSERT INTO `ambilmk` VALUES ('M002', 'MK05', '4', 'GANJIL', '2009/2010');

1.INSERT INTO `mk` VALUES ('MK01', 'DATABASE', '3');
2.INSERT INTO `mk` VALUES ('MK02', 'PEMROGRAMAN DASAR', '2');
3.INSERT INTO `mk` VALUES ('MK03', 'PEMROGRAMAN WEB', '4');
4.INSERT INTO `mk` VALUES ('MK04', 'OOP', '3');
5.INSERT INTO `mk` VALUES ('MK05', 'PEMROGRAMAN VISUAL', '3');

Keterangan:

  Di dalam tabel ‘ambilmk’ terdapat field ‘smt’ yang digunakan untuk memberi keterangan pada semester apa (genap/ganjil) si mahasiswa mengambil matakuliah tersebut. Sedangkan field ‘tahun’ menunjukkan tahun ajarannya.
   OK… sekarang bagaimana dengan bentuk query SQL nya. Untuk mencari IP, tentu kita harus tahu dulu formulanya, yaitu
IP = sum(sks x nilai)/sum(sks)
atau hasil dari penjumlahan sks x nilai matakuliah yang telah diambil dibagi dengan jumlah sks matakuliah tersebut.
Nah… sekarang kita terapkan formula tersebut ke dalam query SQL. Dalam hal ini kita akan menampilkan hasil querynya dalam bentuk SMT, TAHUN, IP.
   But… tunggu dulu. Field ‘nilai’ ada di tabel ‘ambilmk’ sedangkan field ‘sks’ ada di tabel ‘mk’. So… gimana donk? …. Lho apanya yang gimana? kan kita bisa relasikan kedua tabel melalui field ‘kodemk’. So… no problem kan? :-)

1.SELECT smt, tahun, sum(sks * nilai)/sum(sks) as IP
2.FROM ambilmk, mk
3.WHERE ambilmk.kodemk = mk.kodemk AND nim = 'M002'
4.GROUP BY tahun, smt
Query SQL di atas akan mencoba menampilkan IP mahasiswa bernim ‘M002 untuk setiap semester dan tahun ajarannya.
Mungkin Anda bertanya, mengapa dalam query SQL perlu diberikan GROUP BY tahun, smt? Ya… karena query ini tujuannya adalah menampilkan IP setiap tahun dan semesternya. Sehingga perhitungan nilai untuk menghasilkan IP juga harus perlu dikelompokkan berdasarkan tahun dan semesternya.
Hasil query di atas akan menghasilkan output seperti di bawah ini
Photobucket
Trus.. mungkin Anda bertanya lagi, apakah perintah ‘GROUP BY tahun, smt’ nya harus seperti itu? Maksudnya, bisakah dibalik menjadi ‘GROUP BY smt, tahun’? Jawabannya adalah ‘NO PROBLEM’. Hasilnya tetap sama, namun yang berbeda adalah tampilannya saja. Bila Anda menggunakan ‘GROUP BY smt, tahun’ maka pengelompokan diprioritaskan pada semester, sehingga dalam tampilannya menjadi seperti di bawah ini
Photobucket
Anda lihat bahwa pada hasil di atas, jika digunakan ‘GROUP BY smt, tahun‘ maka nama semester yang sama akan mengumpul menjadi satu (dalam baris yang berurutan).
Sekarang Anda coba bandingkan dengan gambar pertama yang merupakan hasil dari penggunaan ‘GROUP BY tahun, smt‘. Dalam gambar tersebut tampak bahwa tahun yang sama akan mengumpul menjadi satu (dalam baris yang berurutan). Nah.. tentunya tampilan yang lebih baik adalah tampilan pada gambar pertama di atas yang menggunakan ‘GROUP BY tahun, smt‘.
    OK.. mudah-mudahan sedikit artikel ini berguna buat Anda yang sedang belajar SQL maupun yang sedang membuat sistem informasi akademik.
Sebuah sistem informasi akademik seharusnya merekam atau mencatat semua track record akademik mahasiswanya secara lengkap detail dan lengkap. Proses pencatatan ini harus dilakukan secara kontinyu tiap semester.
    Sistem informasi akademik tidak lepas dengan pencatatan nilai semua mahasiswanya. Dalam pencatatan nilai ini, terkadang ada banyak mahasiswa yang mengambil sebuah matakuliah lebih dari sekali. Yah… itu wajar mengingat tidak semua matakuliah itu mudah, sehingga butuh beberapa kali pengambilan matakuliah yang sama sampai mencapai nilai yang baik.
     Sebagai contoh misalkan ada mahasiswa A dia mengambil matakuliah X pada semester 1. Karena si A ini anaknya malas belajar, maka nilai matakuliah X nya jelek sekali yaitu 1.0 (D). Nah… semester 3, si A ini kembali lagi mengambil matakuliah X. Namun dengan usahanya kali ini dia hanya mendapatkan nilai 2.0 (C). Karena matakuliah itu sebenarnya menyenangkan, maka si A ingin mengambil lagi matakuliah X di semester 5. Nah.. karena usahanya dalam belajar tinggi, maka akhirnya ia mendapat nilai 4.0 (A).
Nah… dalam sistem informasi akademik harus dapat mencatat semua track record mahasiswa A di atas dalam pengambilan matakuliah X nya, mulai dari semester 1, 3, dan 5.
Selanjutnya ketika si A akan lulus kuliah, maka sistem informasi akademik akan mencetak semua hasil studinya (transkrip nilai). Untuk kasus di atas (pengambilan matakuliah X), harusnya sistem informasi akademik hanya akan menampilkan hasil yang terbaik, yaitu nilai 4.0 (A) pada matakuliah X nya.
Yang menjadi pertanyaan adalah, ‘Bagaimana membuat query SQL untuk menampilkan daftar matakuliah yang telah diikuti mahasiswa beserta hasilnya, dengan ketentuan jika ada sebuah matakuliah yang diikuti beberapa kali maka hanya akan ditampilkan sekali yaitu yang memiliki nilai terbaik saja”. Pertanyaan inilah yang akan dibahas pada artikel kali ini.
OK.. untuk membahasnya, ada baiknya kita sajikan terlebih dahulu data-datanya. Dalam kasus ini misalkan terdapat 3 buah tabel yaitu ‘mhs’, ‘mk’ dan ‘ambilmk’. Tabel ‘mhs’ digunakan untuk menyimpan data mahasiswa, ‘mk’ untuk menyimpan data matakuliah-matakuliah, dan ‘ambilmk’ untuk menyimpan data pengambilan matakuliah oleh mahasiswa beserta nilainya.

1.CREATE TABLE mhs (
2.nim varchar(10),
3.namamhs varchar(30),
4.alamat text,
5.sex varchar(10),
6.PRIMARY KEY  (nim)
7.);

1.INSERT INTO mhs VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
2.INSERT INTO mhs VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
3.INSERT INTO mhs VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
4.INSERT INTO mhs VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
5.INSERT INTO mhs VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L');

1.CREATE TABLE mk (
2.kodemk varchar(5),
3.namamk varchar(20),
4.sks int(11),
5.smt int(11),
6.PRIMARY KEY  (kodemk)
7.) ;
1.INSERT INTO mk VALUES ('K001', 'KALKULUS I', 3, 1);
2.INSERT INTO mk VALUES ('K002', 'KALKULUS II', 3, 2);
3.INSERT INTO mk VALUES ('K003', 'GEOMETRI', 2, 1);
4.INSERT INTO mk VALUES ('K004', 'NUMERIK', 3, 2);

1.CREATE TABLE ambilmk (
2.nim varchar(10),
3.kodemk varchar(5),
4.smt varchar(6),
5.thajaran varchar(9),
6.nilai float,
7.PRIMARY KEY (nim, kodemk, smt, thajaran)
8.);

1.INSERT INTO ambilmk VALUES ('M0197001', 'K001', 'GANJIL', '2007/2008', 1);
2.INSERT INTO ambilmk VALUES ('M0197001', 'K002', 'GANJIL', '2007/2008', 2);
3.INSERT INTO ambilmk VALUES ('M0197001', 'K003', 'GANJIL', '2007/2008', 3);
4.INSERT INTO ambilmk VALUES ('M0197002', 'K001', 'GANJIL', '2007/2008', 2);
5.INSERT INTO ambilmk VALUES ('M0197002', 'K002', 'GANJIL', '2007/2008', 3);
6.INSERT INTO ambilmk VALUES ('M0197001', 'K001', 'GANJIL', '2008/2009', 2);
7.INSERT INTO ambilmk VALUES ('M0197001', 'K001', 'GANJIL', '2009/2010', 4);
Dari data pengambilan matakuliah di atas tampak bahwa mahasiswa bernim ‘M0197001 mengambil matakuliah berkode ‘K001 beberapa kali, tepatnya 3 kali. Pengambilan pertama dia mendapat 1.0, kedua 2.0 dan ketiga mendapat 4.0.
Sekarang bagaimana cara menulis query SQL untuk menampilkan semua matakuliah yang telah diikuti mahasiswa bernim ‘M0197001 ini?
OK… misalkan kita gunakan query seperti berikut ini

1.SELECT nim, kodemk, nilai
2.FROM ambilmk
3.WHERE nim = 'M0197001';

Hasil query di atas adalah
Photobucket
Jika Anda gunakan query di atas maka akan tampak semua matakuliah yang telah diikuti mahasiswa tersebut. Dalam hasil yang diperoleh akan tampak bahwa matakuliah ‘K001 muncul sebanyak 3 kali dengan nilainya masing-masing. Sehingga penggunaan query di atas belum menampilkan hasil pengambilan matakuliah ‘K001 secara tunggal dengan nilai tertinggi.
Hmm… yang nilainya tertinggi yah… OK.. berarti kita harus gunakan function MAX(nilai). Tapi eit… tunggu dulu! Nilai tertinggi di sini bukan nilai nilai tertinggi secara umum dari semua matakuliah yang diambil tapi nilai tertinggi dari matakuliah yang sama yang pernah diambilnya. Oleh karena itu dalam query SQL yang kita buat ini nanti harus ada ‘GROUP BY kodemk’

1.SELECT nim, kodemk, max(nilai)
2.FROM ambilmk
3.WHERE nim = 'M0197001'
4.GROUP BY kodemk;

Hasil query di atas adalah
Photobucket
Yes…. sudah lebih baik sekarang. Dari hasil di atas tampak bahwa untuk nilai ‘K001 sudah muncul hanya sebuah dengan nilai yang tertinggi.
OK.. next… bagaimana jika kita ingin menampilkan nama masing-masing matakuliahnya dan juga SKS nya? Hmm.. ya berarti kita harus relasikan tabel ‘ambilmk’ dengan ‘mk’.


1.SELECT ambilmk.nim, ambilmk.kodemk, mk.namamk, mk.sks, MAX(ambilmk.nilai)
2.FROM ambilmk, mk
3.WHERE ambilmk.kodemk = mk.kodemk AND ambilmk.nim = 'M0197001'
4.GROUP BY ambilmk.kodemk;

Hasil query di atas adalah
Photobucket
He..3x mudah bukan membuat query SQL nya. Nah… mudah-mudahan artikel ini bisa membantu Anda yang sedang membuat sistem informasi akademik.


 BACA JUGA YANG INI DEH.....

    Pada artikel ini akan diberikan beberapa contoh perintah SQL yang diimplementasikan pada multi tabel. Adapun perintah SQL untuk manipulasi data pada satu tabel, saya yakin hal ini cukup mudah bagi Anda. Dalam contoh ini akan diambil studi kasus tentang pengambilan matakuliah mahasiswa.
Tabel-tabel yang dibuat pada studi kasus ini cukup sederhana saja untuk memudahkan pemahaman. Adapun tabel-tabel tersebut adalah:

1.mhs (
2.nim varchar(3),
3.namaMhs varchar(30),
4.primary key(nim)
5.)
1.mk (
2.kodeMK varchar(3),
3.namaMK varchar(30),
4.sks integer,
5.primary key(kodeMK)
6.)
1.ambilMK (
2.nim varchar(3),
3.kodeMK varchar(3),
4.nilai integer,
5.primary key(nim, kodeMK)
6.)

   Dalam hal ini, field nim dan kodeMK pada tabel ambilMK merupakan foreign key. Apabila diperhatikan, tabel mhs dengan tabel ambilMK saling berelasi karena nim dalam tabel ambilMK berasal dari nim dalam tabel mhs (master tabel).
Demikian pula antara tabel mk dengan ambilMK. Kedua tabel ini juga berelasi karena kodeMK dalam tabel ambilMK berasal dari kodeMK dalam tabel mk.
Untuk record masing-masing tabel, misalkan diberikan berikut ini:
Tabel : mhs

1.nim Â Ã‚  namaMhs
2.001 Â Ã‚  Joko
3.002 Â Ã‚  Amir
4.003 Â Ã‚  Budi
Tabel : mk

1.kodeMK Â Ã‚  namaMK Â Ã‚   Â Ã‚  sks
2.A01 Â Ã‚     Kalkulus Â Ã‚    3
3.A02 Â Ã‚     Geometri Â Ã‚    2
4.A03 Â Ã‚     Aljabar Â Ã‚   Â Ã‚ 3
Tabel : ambilMK

1.nim Â Ã‚  kodeMK Â Ã‚  nilai
2.001 Â Ã‚  A01 Â Ã‚       3
3.001 Â Ã‚  A02 Â Ã‚       4
4.001 Â Ã‚  A03 Â Ã‚       2
5.002 Â Ã‚  A02 Â Ã‚       3
6.002 Â Ã‚  A03 Â Ã‚       2
7.003 Â Ã‚  A01 Â Ã‚       4
8.003 Â Ã‚  A03 Â Ã‚       3

Selanjutnya misalkan akan dicari data-data sbb:
  1. Tampilkan nim dan nama mahasiswa yang mengambil Kalkulus (kodeMK = A01)
  2. Tampilkan nim, nama mahasiswa dan jumlah SKS matakuliah yang diambil untuk setiap mahasiswa
  3. Berapakah IPK mahasiswa bernama Budi (NIM: 003)
  4. Tampilkan nim, nama mahasiswa, dan IPK setiap mahasiswa
     Untuk menjawab no. 1, kita harus cari dulu tabel mana yang terkait dengan query tersebut. Apabila kita akan mencari query tersebut berdasarkan nama matakuliah ‘Kalkulus’ maka tabel yang terkait adalah mhs (untuk menampilkan nim dan nama mahasiswa), mk (karena dalam tabel ini terdapat nama matakuliah), serta tabel ambilMK (karena tabel ini berisi data pengambilan matakuliah oleh mahasiswa).
Setelah menentukan tabel mana yang terkait dengan query, selanjutnya dapat dibuat statement SQL nya, yaitu

1.SELECT mhs.nim, mhs.namaMhs
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.AND mk.namaMK = 'Kalkulus';
Maksud mhs.nim, maksudnya adalah menampilkan data nim yang berasal dari tabel mhs. Dapat pula Anda menuliskan SQL nya seperti ini

1.SELECT ambilMK.nim, mhs.namaMhs
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.AND mk.namaMK = 'Kalkulus';

    Hal ini dikarenakan untuk menampilkan nim dapat pula berasal dari tabel ambilMK.
Perhatikan bagian FROM dari kedua statement SQL di atas. Nama-nama tabel yang terkait dengan query dituliskan pada bagian FROM ini.
Selanjutnya apa maksud dari perintah mhs.nim = ambilMK.nim? Perintah ini digunakan untuk merelasikan tabel mhs dan ambilMK, dimana kedua tabel direlasikan melalui field nim di kedua tabel. Hal yang sama juga berlaku untuk perintah mk.kodeMK = ambilMK.kodeMK.
Sedangkan perintah mk.namaMK = ‘Kalkulus’ digunakan sebagai syarat pencarian data (menampilkan data mahasiswa yang mengambil matakuliah Kalkulus).
    Apabila pencarian data mahasiswa yang mengambil Kalkulus ini berdasarkan kode matakuliah (A01), maka Anda tidak perlu menggunakan tabel mk, tapi cukup tabel mhs dan ambilMK saja. Hal ini dikarenakan kodeMK dapat diketahui dari tabel ambilMK. Sehingga perintah SQL nya

1.SELECT mhs.nim, mhs.namaMhs
2.FROM mhs, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND ambilMK.kodeMK = 'A01';
Ketiga statement SQL di atas akan menghasilkan hasil yang sama yaitu
1.NIM Â Ã‚  namaMhs
2.001 Â Ã‚  Joko
3.003 Â Ã‚  Budi

  Selanjutnya akan dijawab pertanyaan no. 2. Seperti halnya langkah penyelesaian pertanyaan no. 1, langkah pertama harus kita tentukan dulu tabel apa saja yang terkait dengan query. Dalam hal ini kita akan menggunakan tabel mhs, mk dan ambilMK. Tabel mhs untuk menampilkan nim dan nama mahasiswa. Tabel mk digunakan karena di dalamnya terdapat data SKS. Sedangkan tabel ambilMK digunakan karena berisi data yang menunjukkan pengambilan matakuliah mahasiswa.
Perintah SQL untuk pertanyaan no. 2 adalah

1.SELECT mhs.nim, mhs.namaMhs, sum(mk.sks) as jumlahSKS
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.GROUP BY ambilMK.nim
atau

1.SELECT mhs.nim, mhs.namaMhs, sum(mk.sks) as jumlahSKS
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.GROUP BY mhs.nim

Untuk mencari jumlah SKS setiap mahasiswa, kita menggunakan perintah sum(mk.sks). Supaya perintah ini bisa jalan, maka harus ditambahkan perintah GROUP BY mhs.nim atau GROUP BY ambilMK.nim. Hal ini dikarenakan proses penjumlahan sks harus dilakukan pada setiap kelompok data. Maksudnya apa ya?
Perhatikan perintah SQL berikut ini

1.SELECT mhs.nim, mhs.namaMhs, mk.sks
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK

Perintah di atas akan menampilkan nim, nama mahasiswa serta sks setiap mata kuliah yang diambil. Hasilnya adalah

1.NIM Â Ã‚  namaMhs Â Ã‚   Â Ã‚  SKS
2.001 Â Ã‚  Joko Â Ã‚   Â Ã‚         3
3.001 Â Ã‚  Joko Â Ã‚   Â Ã‚         2
4.001 Â Ã‚  Joko Â Ã‚   Â Ã‚         3
5.002 Â Ã‚  Amir Â Ã‚   Â Ã‚         2
6.002 Â Ã‚  Amir Â Ã‚   Â Ã‚         3
7.003 Â Ã‚  Budi Â Ã‚   Â Ã‚         3
8.003 Â Ã‚  Budi Â Ã‚   Â Ã‚         3

Untuk pertanyaan no. 2 ini, seharusnya akan tampil hasil berikut
1.NIM Â Ã‚  namaMhs Â Ã‚   Â Ã‚  jumlahSKS
2.001 Â Ã‚  Joko Â Ã‚   Â Ã‚        8
3.002 Â Ã‚  Amir Â Ã‚   Â Ã‚        5
4.003 Â Ã‚  Budi Â Ã‚   Â Ã‚        6

  Sehingga supaya mendapatkan hasil seperti di atas, kita akan menjumlahkan setiap SKS yang diambil mahasiswa, berdasarkan kelompok mahasiswa, dalam hal ini dikelompokkan berdasarkan NIM. Mengapa tidak dikelompokkan berdasarkan nama mahasiswa? Wah bisa gawat kalau ini terjadi, karena ada kemungkinan  nama mahasiswa yang sama. Oleh karena itu harus ada perintah GROUP BY mhs.nim


   Bagaimana perintah SQL untuk menampilkan IPK dari mahasiswa berNIM ’003?
Untuk membuat SQL dari query di atas, lagi-lagi langkah pertama adalah menentukan di tabel mana kita akan bekerja. Apabila Anda perhatikan, maka tabel yang dipilih adalah mk dan ambilMK. Mengapa demikian? Tabel mk digunakan untuk mengambil informasi terkait dengan sks matakuliah yang diambil mahasiswa dan tabel ambilMK berisi informasi daftar matakuliah yang diambil mahasiswa.
Nah… , setelah Anda menentukan tabel yang digunakan, selanjutnya Anda harus tahu formula untuk menghitung IPK. Apa rumusnya? yaitu jumlah dari perkalian sks dan nilai yang diambil mahasiswa dibagi dengan jumlah sks yang diambil mahasiswa.
OK begitu Anda tahu rumusnya, langsung dapat diimplementasikan ke SQL, yaitu

1.SELECT sum(ambilMK.nilai * mk.sks)/sum(mk.sks) as IPK
2.FROM ambilMK, mk
3.WHERE ambilMK.kodeMK = mk.kodeMK
4.AND ambilMK.nim = '003';

  Dari SQL di atas, Anda akan memperoleh hasil IPK mhs bernim ’003 adalah 3.5
Hikmah dari contoh kasus pencarian IPK ini adalah, apabila Anda membuat sistem untuk pencatatan nilai siswa seperti sistem informasi akademik dan sejenisnya, sebaiknya data IP atau IPK jangan disimpan dalam tabel, melainkan melalui proses query. Apabila data IP atau IPK tersimpan ke dalam tabel, maka kemungkinan terjadi ketidakkonsistenan data semakin besar. Bisa jadi IP atau IPK yang tersimpan di table
berbeda dengan kenyataan berdasarkan nilai-nilai matakuliah yang diperoleh siswa. Lagipula jika data-data IP dan IPK disimpan dalam tabel, maka hanya akan menambah penuh database Anda :-)
    OK… selanjutnya akan kita bahas untuk pertanyaan no. 4, yaitu bagaimana statement SQL untuk menampilkan nim, nama dan nilai IPK semua mahasiswa.
Nah… kalau pertanyaan ini, kita harus menggunakan semua tabel, yaitu mhs, mk dan ambilMK.Tabel mhs diperlukan karena untuk menampilkan nama mahasiswa, bisa juga untuk nim. Tapi nim juga dapat ditampilkan melalui tabel ambilMK.
Bagaimana statement SQL nya?

1.SELECT mhs.nim, mhs.namaMhs, 
2.sum(ambilMK.nilai * mk.sks)/sum(mk.sks) as IPK
3.FROM mhs, ambilMK, mk
4.WHERE mhs.nim = ambilMK.nim AND ambilMK.kodeMK = mk.kodeMK
5.GROUP BY mhs.nim

Mengapa harus ada perintah GROUP BY mhs.nim? Hal ini karena perhitungan IPK dapat dilakukan setelah data dikelompokkan berdasarkan nim, mengingat seorang mahasiswa dapat mengambil matakuliah lebih lebih dari satu.

 BACA JUGA ARTIKEL INI...

Ada beberapa mahasiswa saya yang bertanya,bisa tidak di MySQL diterapkan konsep Foreign Key dan Referential Integrity seperti halnya di MS. Access?”. Memang dalam MS. Access kita bisa melakukan setting relasi antar tabel, yang menggambarkan hubungan PRIMARY KEY dan FOREIGN KEY antar tabel.
Sebagai contoh, misalkan dalam kasus pengambilan matakuliah mahasiswa. Dalam kasus ini misalkan terdapat tabel induk bernama ‘MHS’ yang di dalamnya terdapat field NIM, NAMAMHS. Tabel induk yang lain adalah ‘MK’ untuk menyimpan data matakuliah dengan field-fieldnya KODEMK, NAMAMK. Dalam hal ini field NIM dan KODEMK masing-masing adalah primary key pada tabel ‘MHS’ dan ‘MK’. Selanjutnya ada tabel lain bernama ‘AMBILMK’ dengan field NIM, KODEMK, NILAI yang digunakan untuk menyimpan data pengambilan matakuliah mahasiswa. Nah… dalam hal ini, field NIM dan KODEMK keduanya adalah bertindak sebagai FOREIGN KEY.
   Selanjutnya dalam MS. Access terdapat pula fasilitas untuk mengimplementasikan referensial integrity. Misalkan, kita ubah data salah satu kode NIM mahasiswa dalam tabel induk ‘MHS’. Nah… secara otomatis proses update ini juga terjadi di tabel ‘AMBILMK’ yaitu pada data yang terkait NIM tersebut. Begitu pula pada proses penghapusan. Sebagai contoh misalkan kita hapus salah satu kode matakuliah di tabel MK, maka secara otomatis data yang terkait dengan kode matakuliah tersebut pada tabel ‘AMBILMK’ akan terhapus.
   Nah.. bagaimana dengan MySQL? Kira-kira bisa tidak diterapkan kedua hal di atas seperti halnya MS. Access? Saya jawab TENTU SAJA BISA.
Yang menjadi pertanyaan adalah, “Bagaimana cara melakukannya?”.
Ya… untuk menerapkan konsep FOREIGN KEY dan REFERENTIAL INTEGRITY ini, kita harus mensetting MySQL nya bisa support untuk tabel bertipe INNODB. Biasanya ketika proses instalasi MySQL akan ditanyakan apakah databasenya support dengan INNODB? Untuk hal ini, Anda harus jawab YA. Namun.. bila proses instalasi Anda terlanjur tidak memilih support INNODB, maka cara mengaktifkan INNODB adalah buka file “my.ini” lalu cari baris perintah “skip-innodb”. Hapuslah perintah ini, lalu hentikan MySQL dan hidupkan kembali MySQL (restart MySQL).
   OK… sekarang kita coba untuk studi kasus. Kita akan membuat database untuk keperluan pengambilan matakuliah mahasiswa seperti pada kasus di atas. Berikut ini, adalah perintah SQL untuk membuat tabel-tabelnya.
Perintah SQL untuk membuat tabel ‘MHS’

1.CREATE TABLE mhs
2.(
3.nim  varchar(8),
4.namaMhs varchar(20),
5.PRIMARY KEY (nim)
6.) TYPE = INNODB;
Perintah SQL untuk membuat tabel ‘MK’

1.CREATE TABLE mk
2.(
3.kodeMK  varchar(3),
4.namaMK varchar(20),
5.PRIMARY KEY (kodeMK)
6.) TYPE = INNODB;
Perhatikan kedua perintah SQL di atas. Karena kita akan membuat tabel bertipe INNODB, maka masing-masing perintah SQL diberikan perintah TYPE = INNODB;
Sekarang, kita lanjutkan untuk membuat tabel untuk ‘ambilMK’.

01.CREATE TABLE ambilMK
02.(
03.nim  varchar(8),
04.kodeMK varchar(3),
05.nilai float(3,2),
06.PRIMARY KEY (nim, kodeMK),
07.FOREIGN KEY (nim) REFERENCES mhs (nim) ON DELETE CASCADE ON UPDATECASCADE,
08.FOREIGN KEY (kodeMK) REFERENCES mk (kodeMK) ON DELETE CASCADE ON UPDATECASCADE
09.) TYPE = INNODB;

Tabel di atas terdapat dua primary key yaitu NIM dan KODEMK. Sedangkan field NIM ini juga merupakan foreign key yang direferensikan dari field NIM yang ada dalam tabel MHS. Oleh karena itu tambahkan perintah “FOREIGN KEY (nim) REFERENCES mhs (nim)”. Selanjutnya apa maksud dari “ON DELETE CASCADE”? Perintah ini maksudnya bila ada data NIM yang dihapus pada tabel MHS, maka secara otomatis data NIM yang ada dalam tabel AMBILMK ini juga akan terhapus. Sedangkan “ON UPDATE CASCADE” digunakan untuk proses update otomatis pada NIM dalam tabel AMBILMK, apabila NIM yang ada di tabel MHS ini diupdate.
Hal yang sama juga kita terapkan untuk tabel AMBILMK. Dalam hal ini, KODEMK adalah sebagai foreign key yang direfensikan dari KODEMK yang ada dalam tabel MK.
Sekarang coba Anda masukkan data-data berikut ini pada tabel MHS

1.NIM       NAMAMHS
2.M0197001  Rosihan Ari Yuana
3.M0197002  Dwi Amalia Fitriani
4.M0197003  Faza Fauzan
5.M0197004  Nada Hasanah
6.M0197005  Muh. Ahsani Taqwim
Masukkan pula data pada tabel MK

1.KODEMK    NAMAMK
2.M01       Database
3.M02       OOP
Nah… untuk mengecek referensial integrity, sekarang kita coba masukkan data pada tabel AMBILMK.

1.INSERT INTO ambilmk VALUES ('M0197001', 'M01', 3.0);
Ketika perintah SQL di atas dijalankan, data dapat dimasukkan ke tabel AMBILMK dengan sukses. Kita lihat bahwa NIM M0197001 terdapat dalam tabel MHS, begitu pula pada kode matakuliah M01 yang ada pada tabel MK.
Sehingga isi tabel AMBILMK menjadi

1.NIM       KODEMK    NILAI
2.M0197001  M01       3.0
Sekarang kita coba masukkan data berikut ini

1.INSERT INTO ambilmk VALUES ('M0197006', 'M01', 3.0);
Nah… perintah di atas akan menghasilkan error. Hal ini disebabkan NIM M0197006 tidak ada dalam tabel MHS.
Sekarang kita coba melakukan proses update. Kita akan mengupdate NIM M0197001 menjadi M0197010 yang ada dalam tabel MHS.
1.UPDATE mhs SET nim = 'M0197010' WHERE nim = 'M0197001';
Hasil query di atas pada tabel MHS menjadi

1.NIM       NAMAMHS
2.M0197010  Rosihan Ari Yuana
3.M0197002  Dwi Amalia Fitriani
4.M0197003  Faza Fauzan
5.M0197004  Nada Hasanah
6.M0197005  Muh. Ahsani Taqwim
Sekarang Anda coba lihat isi tabel AMBILMK. Pastilah isinya menjadi berikut ini

1.NIM       KODEMK    NILAI
2.M0197010  M01       3.0
Selanjutnya kita coba update untuk KODEMK yang ada dalam tabel MK. Misalnya akan diubah kode mk M01 menjadi M09.
1.UPDATE mk SET kodeMK = 'M09' WHERE kodeMK = 'M01';
Hasil query di atas pada tabel MK adalah

1.KODEMK    NAMAMK
2.M09       Database
3.M02       OOP
Nah… bila kita lihat data di tabel AMBILMK, pastilah isinya menjadi

1.NIM       KODEMK    NILAI
2.M0197010  M09       3.0
1.NIM       KODEMK    NILAI
2.M0197010  M09       3.0
Bagaimana dengan proses penghapusan? Kita cek aja… sekarang kita coba hapus data mahasiswa berNIM M0197010 dalam tabel MHS.

1.DELETE FROM mhs WHERE nim = 'M0197010';
Hasil dari query SQL di atas pada tabel MHS adalah

1.NIM       NAMAMHS
2.M0197002  Dwi Amalia Fitriani
3.M0197003  Faza Fauzan
4.M0197004  Nada Hasanah
5.M0197005  Muh. Ahsani Taqwim

Sekarang bila kita lihat isi tabel AMBILMK, pastilah menjadi kosong karena data pengambilan matakuliah terkait dengan mahasiswa NIM M0197010 ini ikut terhapus.
OK… begitulah penjelasan ini saya tulis. Moga-moga bermanfaat bagi  kita semua deh... semua… terus semangat belajar dan pantang menyerah. Indonesia sangat membutuhkan kita ..Salam Hangat....WILLH NOBIS




Read more ...