Minggu, 12 April 2015

Pengertian Stenografi Dan Kriptografi

Pengertian Stenografi Dan Manfaatnya - Setiap mahasiswa pasti mendapat materi tentang steno, steno banyak yang menafsirkan sebagai tulisan cepat, maka banyak orang yang beranggapan bahwa tulisan steno berarti tulisan cepat. Hal ini timbul karena sebagian orang hanya melihat dari hasil yang dicapai seorang stenografer yang mempu menulis steno dengan cepat, seperti pada saat mencatat suatu percakapan dengan menggunakan tulisan steno. Stenografer mampu mencatat suatu percakapan dengan lengkap karena memakai stenografi, hal ini tidak akan dapat dilakukan apabila memakai tulisan latin biasa. Nah sebenarnya apa sih Stenografi itu ???
  
 
Pengertian Stenografi Dan Manfaatnya

Stenografi berasal dari bahasa Yunani, yang terdiri dari 2 (dua) kata yaitu“STENOS” yang berarti singkatan atau pendek“GRAPHEIN” yang berarti tulisan.Jadi stenografi ( stenography ) berarti tulisan singkat atau tulisan pendek. Tulisan steno dibuat dan disusun sedemikian rupa pendek dan singkat sehingga mengakibatkan cepat dalam menulisnya. Stenografi menggunakan tanda-tanda khususyang lebih singkat daripada tulisan panjangnya ( latin), dan kemudian disempurnakan dengan menambah beberapa singkatan ( sudah singkat disingkat lagi ), sehingga waktu yang digunakan untuk menulis stenogramnya lebih cepat dibanding waku untuk mengucapkan kata yang dimaksud. Misalnya orang yang menulis huruf latin t diperlukan 4 gerakan, sedangkan untuk menulis huruf t dengan menggunakan huruf steno hanya diperlukan satu gerakan saja. Karena hampir setiap lambang atau symbol huruf steno hanya memerlukan satu gerakan saja.Maka karena pendeknya gerakan atau sedikitnya gerak yang dibutuhkan dalam menulis steno, stenografi jauh lebih cepat dibandingkan dengan menulis huruf latin.


PERKEMBANGAN STENOGRAFI
Stenografi berkembang mulai beberapa abad sebelum Masehi. Hal ini dibuktikan dengan adanya penemuan dibeberapa tempat didunia. Perkembangan stenografi tersebut dapat terlihat di negara-negara tertentu, misalnya :
Stenografi yang dikarang oleh Timothy Bright pada tahun 1588 John Willis pada tahun 1602 dan J. Pitman yang semuanya dari Inggris ( London )
Stenografi yang dikarang oleh Gregg dan John Comstock Evans.
Di Jerman terdapat pengarang F.X Gabelsbelger pada tahun 1824.
Stenografi oleh Abel Duploge tahun 1862 dan Prevost Delanncy tahun 1878 dari Perancis.
Di Belanda terdapat pengarang A.W. Groote pada tahun 1899 dan disusul oleh Gerard Schaap.
Di Indonesia terdapat pengarang J. Paat / Sabirin dan Karundeng tahun 1925.
Berdasarkan Surat Keputusan No.51/1968 tanggal 1 Januari 1968 telah ditetapkan sistem Karundeng sebagai sistem stenografi standar mata pelajaran pada Lembaga-Lembaga Pendidikan dalam Lingkungan Departemen Pendidikan dan Kebudayaan. Oleh karena itu stenografi sistem Karundeng merupakan sistem Nasional.

MANFAAT STENOGRAFI

Manfaat stenografi banyak sekali. Salah satu profesi yang erat kaitannya dengan ketrampilan stenografi adalah wartawan. Ketrampilan ini bisa dipakai oleh wartawan saat mencatat berita atau mewawancarai narasumber. Dengan ketrampilan menulis cepat, ia bisa memperoleh bahan berita dengan lebih cepat. Memang sih, ada voice recorder, tape recorder, handphone, bahkan Blackberry yang bisa digunakan secara praktis dan mudah. Tapi ketrampilan stenografi tetap unik, bermanfaat, dan menarik untuk dipelajari.

Bayangkan saja, seandainya suatu saat aneka macam gadget yang selama ini digendong menguntit kita ke mana-mana, tiba-tiba hilang, lupa dibawa, atau dilarang dibawa/digunakan karena alasan tertentu. Lantas, apa yang bisa kita lakukan? Bagaimana mencatat berita? Menulis, tentu saja. Tapi menulis saja tidak cukup. Perlu menulis dengan cepat. Dan soal ini, tidak semua orang bisa, kecuali mereka yang benar-benar mahir stenografi.

Selain wartawan, stenografi juga bermanfaat untuk sekretaris, mahasiswa, dan profesi lain yang membutuhkan ketrampilan menulis dengan cepat. Sekretaris bisa mencatat agenda rapat dengan cepat. Mahasiswa bisa mencatat ceramah atau bahan kuliah yang disampaikan dosennya dengan mudah dan cepat, tanpa khawatir tertinggal satu kata pun.

Adapun manfaat dari belajar stenografi ini adalah sebagai berikut :
  1. Untuk membuat hasil persidangan atau risalah lengkap.
  2. Hasil sidang notulis sidang atau panitia sidang pengadilan.
  3. Untuk mencatat berita atau pesan melalui pesawat telepon atau berupa sandi-sandi, baik bagi operator sekretaris maupun bagi petugas airport.
  4. Untuk mencatat dikte.
  5. Mahasiswa/siswa yang pekerjaan setiap hari menulis.
  6. Bagi wartawan yang bidang pekerjaannya mencari berita, menulis berita dan mewawancarai orang.
  7. Untuk menterjemahkan rekaman hasil sidang atau rapat, karena dengan steno dapat diterjemahkan dengan cepat.
  8. Untuk mencatat dan membuat catatan yang bersifat rahasia.
Sumber

PENGERTIAN KRIPTOGRAFI

Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce Scheiner dalam bukunya "Applied Cryptography", kriptografi adalah ilmu pengetahuan dan seni menjaga message-message agar tetap aman (secure).

Kriptografi adalah cabang dari ilmu matematika yang memiliki banyak fungsi dalam
pengamanan data. Kriptografi adalah proses mengambil pesan/message dan menggunakan
beberapa fungsi untuk menggenerasi materi kriptografis (sebuah digest atau
message terenkripsi).

Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier - Applied Cryptography]. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data [A. Menezes, P. van Oorschot and S. Vanstone - Handbook of Applied Cryptography]. Tidak semua aspek keamanan informasi ditangani oleh kriptografi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :
\
1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.
2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.
3. Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.
4. Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.

Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang mendasari kriptografi yakni:
Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami.
Data integrity (keutuhan data) yaitu layanan yang mampu mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain).
Authentication (keotentikan) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi.
Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).

Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya.
Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi :
Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli).
Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi.
Enkripsi (fungsi E) adalah proses pengubahan plaintext menjadi ciphertext.
Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli.
Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi.

Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan di atas, proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti.

Perkembangan komunikasi telah mendorong manusia untuk menyembunyikan informasi yang dimilikinya dari orang lain demi alasan keamanan dan privasi.
Seseorang yang berusaha untuk mengembangkan dan membuat kode kriptografi disebut cryptographer. Sedangkan seseorang yang berusaha memecahkan kode tersebut disebut cryptanalists.
Kriptografi telah dikenal sejak 4000 tahun yang lalu. Kriptografi dahulunya adalah usaha untuk mengubah pesan dengan menambah atau mengubah karakter tertentu. Sekarang, telah ditemukan metode kriptografi terbaru yaitu: quantum cryptography.

Physical Cryptography
Physical cryptography meliputi metode untuk menukar tempat (transposition) atau mensubtitusikan karakter tertentu dalam pesan.
Substitution Ciphers Adalah metode kriptografi dengan jalan mengganti karakter/simbol tertentu dengan karakter/simbol yang lain.
Misal “a“: “x“ dan “b” : “y”, maka
“apa kabar” : “xpx kxyxr”.
Masalah: (a) tidak aman dan (b) apakah “x” dalam pesan benar-benar “x” atau hasil substitusi?
Transposition Ciphers Adalah metode kriptografi dengan menukarkan atau mengacak kata/bagian kata dari pesan dengan aturan tertentu.
Contoh:
“Aku Cinta Kamu” : “kuA taCin muKa”
Steganography Yaitu proses menyembunyikan pesan dalam pesan lain dengan harapan agar pesan yang sesungguhnya tidak dapat dideteksi.
Contoh:
“Aku Cinta Kamu” : “Aku Sangat Cinta Durian Kamu”
Hybrid System Yaitu gabungan dari ketiga metode di atas. Contoh: Mesin Enigma yang dipakai Jerman dalam PD II untuk mengirim pesan ke perahu “U”-nya, menggunakan kombinasi antara subtitusi dan transposisi.

Quantum Cryptography
Quantum kriptografi adalah metode enskripsi yang relatif baru. Pada awal tahun 2002, aplikasinya dibatasi untuk laboratorium dan proyek rahasia pemerintah. Proses didasari oleh Prinsip Ketidakpastian Heisenberg yang sebenarnya dipakai dalam teori atom modern.
Dalam quantum kriptografi, pesan dikirim dengan menggunakan runtun foton. Jika penerima mengetahui urutan dan polaritas dari foton maka ia bisa menterjemahkan pesan tersebut, Dan jika seseorang yang berusaha mengintip pesan, beberapa foton akan berubah polaritasnya. Hal ini akan memberi tahu si penerima bahwa pesan telah dibaca orang lain, dan dia bisa meminta si pengirim untuk mengirim ulang pesan dengan polaritas foton yang berbeda.
Quantum kriptografi memungkinkan adanya enskripsi yang tidak bisa dipecahkan. Meski demikian biaya yang dibutuhkan sangat mahal dan masih dipakai dalam aplikasi yang terbatas.

Algoritma sandi adalah algoritma yang berfungsi untuk melakukan tujuan kriptografis. Algoritma tersebut harus memiliki kekuatan untuk melakukan (dikemukakan oleh Shannon):
konfusi/pembingungan (confusion), dari teks terang sehingga sulit untuk direkonstruksikan secara langsung tanpa menggunakan algoritma dekripsinya
difusi/peleburan (difusion), dari teks terang sehingga karakteristik dari teks terang tersebut hilang.
sehingga dapat digunakan untuk mengamankan informasi. Pada implementasinya sebuah algoritmas sandi harus memperhatikan kualitas layanan/Quality of Service atau QoS dari keseluruhan sistem dimana dia diimplementasikan. Algoritma sandi yang handal adalah algoritma sandi yang kekuatannya terletak pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Teknik dan metode untuk menguji kehandalan algoritma sandi adalah kriptanalisa.

Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen teks terang /plaintext dan yang berisi elemen teks sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D.
Enkripsi : E(P) = C
Dekripsi : D(C) = P atau D(E(P)) = P
Secara umum berdasarkan kesamaan kuncinya, algoritma sandi dibedakan menjadi :
kunci-simetris/symetric-key, sering disebut juga algoritma sandi konvensional karena umumnya diterapkan pada algoritma sandi klasik
kunci-asimetris/asymetric-key
Berdasarkan arah implementasi dan pembabakan jamannya dibedakan menjadi :
algoritma sandi klasik classic cryptography
algoritma sandi modern modern cryptography
Berdasarkan kerahasiaan kuncinya dibedakan menjadi :
algoritma sandi kunci rahasia secret-key
algoritma sandi kunci publik publik-key
Pada skema kunci-simetris, digunakan sebuah kunci rahasia yang sama untuk melakukan proses enkripsi dan dekripsinya. Sedangkan pada sistem kunci-asimentris digunakan sepasang kunci yang berbeda, umumnya disebut kunci publik(public key) dan kunci pribadi (private key), digunakan untuk proses enkripsi dan proses dekripsinya. Bila elemen teks terang dienkripsi dengan menggunakan kunci pribadi maka elemen teks sandi yang dihasilkannya hanya bisa didekripsikan dengan menggunakan pasangan kunci pribadinya. Begitu juga sebaliknya, jika kunci pribadi digunakan untuk proses enkripsi maka proses dekripsi harus menggunakan kunci publik pasangannya.

Skema ini adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut private-key. Dapat dianalogikan seperti kotak pos yang hanya dapat dibuka oleh tukang pos yang memiliki kunci tapi setiap orang dapat memasukkan surat ke dalam kotak tersebut. Keuntungan algoritma model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi para korensponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan skema kunci-simetris, jumlah kunci yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.

Sumber


Senin, 24 Januari 2011

Tugas Database Lanjut (Foreign key)

Foreign Key Di MySQL

Dalam relational basis data, terdapat istilah kunci utama (primary key) dan kunci tamu (foreign key). Tujuan utama dari adanya kedua
istilah tersebut adalah pengidentifikasian tiap table dan kejelasan hubungan antara 2 atau lebih table. Primary key adalah satu atau beberapa
kolom pada table yang mengidentifikasikan tiap kolom dan baris pada table tersebut. Sedangkan Foreign Key adalah satu atau beberapa kolom pada table yang merupakan primary key pada table satu namun diletakan
pada table dimana tablenya berelasi dengan table dirinya.
Pada gambar diatas, nim pada table mhs adalah primary key. Sedangkan primary key pada table matkul adalah id_matkul. Lalu id_matkul menempel pada table mhs yang kita sebut sebagai foreign key.

Biasanya saya menyebut table yang berisi foreign key sebagai table anak karena table tersebut mengait pada table lain. Sedangkan table yang terkait saya sebut sebagai table induk. Pada contoh table di atas, mhs sebagai table anak sedangkan matkul sebagai table induk.
Contoh isi dari kedua table tersebut dapat dilihat dibawah ini.

Table mhs
Nim Nama Alamat Id_matkul
10107644 Adiputra Artupida Bekasi IF123
10107634 Hermansyah Bandung IF222
10107635 Budianto Nugroho Semarang IF111
10107636 Silan Bekasi IF333

Table Matkul
Id_matkul Nm_matkul Jml_sks
IF123 Pemrograman Web 3
IF111 Pemrograman C 3
IF222 Pemrograman Java 3
IF333 Pemrograman OOP 3

Saya langsung praktikan pada mysql. Berikut adalah codenya :

CREATE TABLE IF NOT EXISTS matkul(
id_matkul CHAR(5) NOT NULL PRIMARY KEY,
nm_matkul VARCHAR(30) NOT NULL,
jml_sks INT(3) NOT NULL
);



CREATE TABLE IF NOT EXISTS mhs(
nim CHAR(8) NOT NULL PRIMARY KEY,
nama VARCHAR(50) NOT NULL,
alamat VARCHAR(60) NOT NULL,
id_matkul CHAR(5),
FOREIGN KEY(id_matkul) REFERENCES matkul(id_matkul)
);

INSERT INTO mhs VALUES
(’10107633′,’Adiputra Artupida’,'Bekasi’,'IF123′),
(’10107634′,’Hermansyah’,'Bandung’,'IF222′),
(’10107635′,’Budianto Nugroho’,'Semarang’,'IF111′),
(’10107636′,’Silan’,'Bekasi’,'IF333′);

INSERT INTO matkul VALUES
(‘IF123′,’Pemrograman Web’,3),
(‘IF111′,’Pemrograman C’,3),
(‘IF222′,’Pemrograman Java’,3),
(‘IF333′,’Pemrograman OOP’,3);


Perhatikan baris kode pada table mhs,

FOREIGN KEY(id_matkul) REFERENCES matkul(id_matkul)

Itulah cara mendefinikan foreign key pada mysql. Id_matkul didefinisikan sebagai foreign key yang mereferensikan(mengacu) pada table matkul pada kolom id_matkul.

Yang ingin saya fokus bicarakan pada artikel ini adalah bagaimana bila data matkul misalnya data dengan id_matkul=’IF123’ dihapus? Apakah data mahasiswa yang mengambil id_matkul akan dihapus juga atau akan dibiarkan apa adanya?

DELETE FROM matkul WHERE id_matkul=’IF123’

Maka pasti terjadi error

“Cannot delete or update a parent row: a foreign key constaint fails (‘test’.’mhs’,CONSTRAINT ‘mhs_ibfk_3’ FOREIGN KEY (‘id_matkul’) REFERENCES ‘matkul’ (‘id_matkul))

Maksudnya adalah tidak dapat menghapus atau mengupdate kolom pada table induk karena bereferensi pada table mhs.
Lalu bagaimana solusinya?

Pada MYSQL, kita harus menambahkan perintah ON DELETE [opsi] dan ON UPDATE [opsi]pada table yang mereferensikan foreign key. Opsi pada perintah tersebut jelasnya dibawah ini.

1. RESTRICT, Jika tabel anak berisi nilai dalam kolom yang mengkait yang nilainya sama dengan di kolom terkait pada tabel induk, baris dalam tabel induk tidak bisa dihapus, dan nilai di kolom terkait tidak dapat diupdate. Ini adalah opsi default jika klausa ON DELETE atau ON UPDATE tidak dispesifikasikan.

2. CASCADE, Baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk dihapus ketika barisbaris yang berkaitan dihapus dari tabel induk. Baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk diupdate ketika nilai-nilai yang berkaitan diupdate dalam tabel induk.

3. SET NULL, Nilai-nilai dalam kolom yang mengkait dari tabel anak diset ke NULL saat baris-baris dengan data terkait dalam tabel induk dihapus dari tabel induk atau ketika data terkait dalam tabel induk diupdate. Untuk menggunakan opsi ini, semua kolom-kolom yang mengkait dalam tabel anak harus mengijinkan nilai NULL.

4. NO ACTION Tidak ada aksi yang diambil dalam tabel anak ketika baris-baris dihapus dari tabel induk atau nilai-nilai dalam kolom terkait dalam tabel induk diupdate.

5. SET DEFAULT Nilai-nilai dalam kolom-kolom yang mengkait dari tabel anak diset ke nilai default mereka ketika baris-baris dihapus dari tabel induk atau kolom terkait dari tabel induk diupdate.

Ketika kita mendefinisikan foreign key dengan
FOREIGN KEY(id_matkul) REFERENCES matkul(id_matkul)
Maka perintah ON DELETE dan ON UPDATE nya ber-Opsi RESTRICT karena defaultnya dari references foreign key, yang artinya tidak boleh dihapus atau diupdate. Itulah yang menyebabkan error bila kita mendelete atau mengapdate table induk.

Coba sekarang kita ubah struktur table dari mhs dengan merubah references foreign key dengan opsi ON DELETE dan ON UPDATE CASCADE.


Karena kita menggunakan OPSI CASCADE pada ON DELETE dan ON UPDATE nya maka bila kita menghapus salah satu kolom pada table induk maka table anak pun akan terhapus juga. Terlihat bahwa data mahasiswa yang bernama Adiputra Artupida dihapus karena Adiputra Artupida mengambil matkul dengan id ‘IF123’ dimana id tersebut telah dihapus pada table matkul.

Yang lainnya silakan improve sendiri. Saran kalau kita ingin merelasikan foreign key biasakan menggunakan perintah ON UPDATE dan ON DELETE dengan OPSI yang disesuaikan dengan kebutuhan.
Pada gambar diatas, nim pada table mhs adalah primary key. Sedangkan primary key pada table matkul adalah id_matkul. Lalu id_matkul menempel pada table mhs yang kita sebut sebagai foreign key.

Biasanya saya menyebut table yang berisi foreign key sebagai table anak karena table tersebut mengait pada table lain. Sedangkan table yang terkait saya sebut sebagai table induk. Pada contoh table di atas, mhs sebagai table anak sedangkan matkul sebagai table induk.
Contoh isi dari kedua table tersebut dapat dilihat dibawah ini.

Table mhs
Nim Nama Alamat Id_matkul
10107644 Adiputra Artupida Bekasi IF123
10107634 Hermansyah Bandung IF222
10107635 Budianto Nugroho Semarang IF111
10107636 Silan Bekasi IF333

Table Matkul
Id_matkul Nm_matkul Jml_sks
IF123 Pemrograman Web 3
IF111 Pemrograman C 3
IF222 Pemrograman Java 3
IF333 Pemrograman OOP 3

Saya langsung praktikan pada mysql. Berikut adalah codenya :

CREATE TABLE IF NOT EXISTS matkul(
id_matkul CHAR(5) NOT NULL PRIMARY KEY,
nm_matkul VARCHAR(30) NOT NULL,
jml_sks INT(3) NOT NULL
);



CREATE TABLE IF NOT EXISTS mhs(
nim CHAR(8) NOT NULL PRIMARY KEY,
nama VARCHAR(50) NOT NULL,
alamat VARCHAR(60) NOT NULL,
id_matkul CHAR(5),
FOREIGN KEY(id_matkul) REFERENCES matkul(id_matkul)
);

INSERT INTO mhs VALUES
(’10107633′,’Adiputra Artupida’,'Bekasi’,'IF123′),
(’10107634′,’Hermansyah’,'Bandung’,'IF222′),
(’10107635′,’Budianto Nugroho’,'Semarang’,'IF111′),
(’10107636′,’Silan’,'Bekasi’,'IF333′);

INSERT INTO matkul VALUES
(‘IF123′,’Pemrograman Web’,3),
(‘IF111′,’Pemrograman C’,3),
(‘IF222′,’Pemrograman Java’,3),
(‘IF333′,’Pemrograman OOP’,3);


Perhatikan baris kode pada table mhs,

FOREIGN KEY(id_matkul) REFERENCES matkul(id_matkul)

Itulah cara mendefinikan foreign key pada mysql. Id_matkul didefinisikan sebagai foreign key yang mereferensikan(mengacu) pada table matkul pada kolom id_matkul.

Yang ingin saya fokus bicarakan pada artikel ini adalah bagaimana bila data matkul misalnya data dengan id_matkul=’IF123’ dihapus? Apakah data mahasiswa yang mengambil id_matkul akan dihapus juga atau akan dibiarkan apa adanya?

DELETE FROM matkul WHERE id_matkul=’IF123’

Maka pasti terjadi error

“Cannot delete or update a parent row: a foreign key constaint fails (‘test’.’mhs’,CONSTRAINT ‘mhs_ibfk_3’ FOREIGN KEY (‘id_matkul’) REFERENCES ‘matkul’ (‘id_matkul))

Maksudnya adalah tidak dapat menghapus atau mengupdate kolom pada table induk karena bereferensi pada table mhs.
Lalu bagaimana solusinya?

Pada MYSQL, kita harus menambahkan perintah ON DELETE [opsi] dan ON UPDATE [opsi]pada table yang mereferensikan foreign key. Opsi pada perintah tersebut jelasnya dibawah ini.

1. RESTRICT, Jika tabel anak berisi nilai dalam kolom yang mengkait yang nilainya sama dengan di kolom terkait pada tabel induk, baris dalam tabel induk tidak bisa dihapus, dan nilai di kolom terkait tidak dapat diupdate. Ini adalah opsi default jika klausa ON DELETE atau ON UPDATE tidak dispesifikasikan.

2. CASCADE, Baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk dihapus ketika barisbaris yang berkaitan dihapus dari tabel induk. Baris-baris dalam tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk diupdate ketika nilai-nilai yang berkaitan diupdate dalam tabel induk.

3. SET NULL, Nilai-nilai dalam kolom yang mengkait dari tabel anak diset ke NULL saat baris-baris dengan data terkait dalam tabel induk dihapus dari tabel induk atau ketika data terkait dalam tabel induk diupdate. Untuk menggunakan opsi ini, semua kolom-kolom yang mengkait dalam tabel anak harus mengijinkan nilai NULL.

4. NO ACTION Tidak ada aksi yang diambil dalam tabel anak ketika baris-baris dihapus dari tabel induk atau nilai-nilai dalam kolom terkait dalam tabel induk diupdate.

5. SET DEFAULT Nilai-nilai dalam kolom-kolom yang mengkait dari tabel anak diset ke nilai default mereka ketika baris-baris dihapus dari tabel induk atau kolom terkait dari tabel induk diupdate.

Ketika kita mendefinisikan foreign key dengan
FOREIGN KEY(id_matkul) REFERENCES matkul(id_matkul)
Maka perintah ON DELETE dan ON UPDATE nya ber-Opsi RESTRICT karena defaultnya dari references foreign key, yang artinya tidak boleh dihapus atau diupdate. Itulah yang menyebabkan error bila kita mendelete atau mengapdate table induk.

Coba sekarang kita ubah struktur table dari mhs dengan merubah references foreign key dengan opsi ON DELETE dan ON UPDATE CASCADE.


Karena kita menggunakan OPSI CASCADE pada ON DELETE dan ON UPDATE nya maka bila kita menghapus salah satu kolom pada table induk maka table anak pun akan terhapus juga. Terlihat bahwa data mahasiswa yang bernama Adiputra Artupida dihapus karena Adiputra Artupida mengambil matkul dengan id ‘IF123’ dimana id tersebut telah dihapus pada table matkul.

Yang lainnya silakan improve sendiri. Saran kalau kita ingin merelasikan foreign key biasakan menggunakan perintah ON UPDATE dan ON DELETE dengan OPSI yang disesuaikan dengan kebutuhan.

Sumber
http://terusbelajar.wordpress.com/2009/11/13/foreign-key-di-mysql/

Rabu, 05 Januari 2011

MI resmi sebagai Official Fans Club Milan

Pada hari Jumat (15 oktober 2010) Milanisti Indonesia, yang diwakilkan oleh Toel, Reza Razer, dan Andri, berkesempatan untuk berkunjung ke sekertariat resmi AIMC (Associazione Italiana Milan Club) di Stadion San Siro, Milan. AIMC merupakan organisasi resmi Milan Fans Club di bawah naungan langsung AC Milan. Perwakilan MI disambut dengan hangat oleh Signore Carlo, Signore Vincenzo, dan Signora Arabella dari AIMC. Pada kesempatan tsb, Toel dkk menjelaskan segala sesuatu tentang MI antara lain kegiatan rutin serta sezione yang tercakup di Indonesia. Selain itu juga diserahkan kelengkapan administrasi serta cinderamata dari Indonesia kepada AIMC berupa syal dan polo shirt MI. Selanjutnya pihak AIMC yang diwakilkan oleh signore Carlo mengajak Toel, Reza, dan Andri untuk berkeliling Stadion San Siro dimulai dari Curva Nord, VIP dan Curva Sud serta San Siro store.
Pagi hari di tanggal 18 Oktober 2010, perwakilan MI bersama dengan rombongan tim MJC Indonesia mengunjungi Stasion San Siro untuk melakukan tour stadion. Setelah dilakukannya tour,  Toel dkk langsung menuju ke sekertariat AIMC kembali untuk bertemu dengan signora Arabella dan ternyata disana sudah menunggu presiden AIMC signore Alesandro Capitano. Dengan sangat antusias mereka menyambut kembali sambil menyerahkan bukti surat resminya bahwa MI sudah resmi bergabung dalam keluarga besar AIMC dengan no register/code (Al vostro club e stato assegnato I'll numero di codice : 310200 ) sekaligus fasilitas lainnya.
Dengan adanya surat resmi tersebut bahwa Milanisti Indonesia per tanggal 18 Oktober 2010 sudah resmi sebagai Official Fans Club Milan dan tercatat resmi di Italia. Rasa syukur kepada Tuhan serta ucapan terima kasih terdalam untuk perwakilan MI (Toel, Reza, dan Andri), para member, founder, dan seluruh milanisti yang ada di Indonesia atas dukungan dan doanya sehingga apa yang kita semua inginkan dapat tercapai.
Semoga hal ini dapat dijadikan MI dan seluruh entitas didalamnya sebagai titik tolak agar dapat lebih baik, lebih solid, kompak, dan lebih semangat dengan tetap berlandaskan rasa kekeluargaan...

Forza Milanisti Indonesia...!!

sumber : http://sito.milanisti.or.id/berita-kegiatan/berita/berita-2010/52-aimc.html

Pengikut

Total Tayangan Halaman