Foreign Key Mysql – Setting via PhpMyAdmin

Kalau pembaca pernah belajar database, tentunya tidak asing lagi dengan istilah Primary Key dan Foreign Key.

Saya mungkin termasuk golongan awal yang menggunakan MySQL. Saya dulu gak bisa membuat PK dan FK di MySQL karena memang keterbatasannya (sekaligus kelebihannya – tergantung sudut pandang).

Sekarang dengan MySQL versi 5 (entah sudah dari versi berapa ya) ada storage engine yang disebut InnoDB. Sedangkan ketika dulu saya pakai mysql hanya ada storage engine MyISAM.

Silahkan cari di google dengan keyword “perbandingan innodb myisam” untuk mengetahui lebih lanjut.

Pada tulisan kali ini, simple seperti biasanya… saya mencoba untuk menuliskan bagaimana setting PK dan FK lewat PhpMyAdmin.

contoh :

table_satu mempunya field sebagai berikut 

company_code VARCHAR(4) ==> klik INDEX dan PK sewaktu create table

company_name VARCHAR(30)

jangan diisi dulu dengan data. saya juga tidak terlalu detail jadi terserah saja type data yang diinginkan apa. gampangnya coba VARCHAR saja.

table_dua mempunyai field sebagai berikut :

nourut INT(5) ==> PK

comp_code VARCHAR(4) ==> perhatikan, harus type data yang sama dan length/value juga sama dengan company_code pada table 1

product VARCHAR(10)

Setelah selesai, klik Structure pada table_dua ini.

Kemudian perhatikan tombol / gambar seperti di bawah ini, klik tombol tersebut

PhpMyAdmin Structure Relation View

Maka akan muncul seperti gambar di bawah ini 

FK dan PK

Memang contoh di atas tidak pas betul dengan kasus yang sedang saya tulis, tapi tak apa.. karena yang penting gambarnya mirip-mirip begitu lah.

Selanjutnya field comp_code pada table_dua dihubungkan kepada company_code pada table_satu. Pada drop down menunya, pilihlah :

‘nama_database_anda’.’nama_table’.’field_PK’  ==> ‘databaseku’.’table_satu’.’company_code’

nama database = databaseku

nama table = table_satu

nama field pada table_satu yang menjadi primay key = company_code

ON DELETE = CASCADE

ON UPDATE = CASCADE

maksudnya adalah, ketika primary key di delete / update, maka otomatis isi pada table anak akan otomatis mengikuti.

Jika isi pada table_satu (table induk) di delete 1 company_code, maka seluruh isi pada table_dua (table anak) yang memiliki company_code yang sama, akan didelete juga. Jika diupdate, maka bgitu juga akan terupdate pada table_dua.

Jika dipilih RESTRICT, maka table induk tidak akan boleh didelete maupun diupdate, sehingga table anak juga tidak ikut ter-delete / ter-update.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s