Home » MySQL » Mengenal Primary Key dan Foreign Key di PHPMyAdmin

Mengenal Primary Key dan Foreign Key di PHPMyAdmin

Published by Ade Kurniawan on

Jika ingin membuat database di MySQL maka hal yang harus dikuasai dengan baik adalah cara menentukan dan membuat Primary Key dan Foreign Key.

Sebut saja kita ingin  membuat database penjualan barang, maka perhatikan apa proses dan entitas yang terlibat dan harus disimpan di database. Barang memiliki kode, nama, harga, deskripsi dll. Barang bisa disebut sebagai entitas dan (kode,nama,harga,deskripsi dll) dapat disebut attribute.

Selanjutnya saat ingin menjual barang maka dapat diketahui bahwa ini adalah proses (Menjual). Ketika menjual maka yang hendak disimpan adalah data penjualan. Maka sebutkan semua hal yang harus disimpan saat penjualan terjadi, semua hal tersebut harus diwakilkan oleh sebuah id unik untuk dapat disimpan dan dikenali di database.

Pahami database sebagai hal yang memang terjadi di keseharian kita, saat barang berhubungan dengan penjualan maka akan ada relasi yang harus dibuat. Dengan hal itu membuat database akan menjadi lebih mudah karena keadaan sudah diketahui. Begitu juga saat tabel lain ditambah ke database penjualan yang sedang dibuat, seperti tabel customer. Saat penambahan tabel costumer tersebut dilakukan hendaknya terlebih dahulu kamu memiliki alasan kenapa tabel tersebut ditambahkan.

APA itu Primary Key dan Foreign Key?

Pengertian Primary Key

Primary Key adalah suatu kolom yang dipilih untuk menjadi id untuk setiap baris data sebuah tabel.  Banyak pakar telah membahas pengertian Primary Key ini. Merujuk pada pengertian primary key dari javatpoint Nilai dari primary key merupakan suatu yang unik.

Untuk lebih mudah dipahami, uraian definisi Primary Key kita bawa ke study kasus database penjualan tadi dimana kita telah membahas tentang tabel barang, penjualan dan customer.

Konsep diawal tadi kita analisa database dengan mengenal istilah Entitas dan Atribut. Barang adalah entitas dan atributnya adalah kode,nama, harga dan deskripsi. Saat membuat tabel di database penjualan, entitas Barang adalah nama tabel dan atribut kode,nama, harga dan deskripsi  adalah kolom seperti Berikut

Tabel Barang

Menentukan Primary Key Tabel Barang
Contoh Tabel Barang

Dari tabel di atas Primary key dipilih dari salah satu kolom/atribut yang ada. Primary key harus merupakan data yang unik maksudnya data yang terdapat pada kolom yang dipilih tidak memiliki data yang sama.

Perhatikan data nama, terdapat ada 2 nama yang sama. Demikian juga dengan data harga ada pula data yang sama. Untuk deskripsi mesikipun tidak memilik data yang sama namun sebaiknya kolom yang berisi data dengan spasi tidak dijadikan unik key. Satu – satunya yang memenuhi syarat untuk menjadi primary key adalah kode.

Kode memiliki nilai yang berbeda dan bisa disebut sebagai unik identifikasi untuk setiap baris data. Namun apakah kode bisa dijadikan primary key? Jawaban untuk sementara bisa digunakan untuk primary key jika data kode barang seperti data tabel di atas.

Namun bagaimana jika kebutuhan menyimpan barang semakin banyak sehingga kode barang menjadi sangat bervariasi seperti C001 atau D0-001 atau KM IN.

Hal ini akan menimbulkan masalah di kemudian hari. Kode barang menjadi data yang tidak beraturan lagi dan rawan perbedaan tipe data.

Nah jika sudah begini solusinya bagaimana?? Apakah kode masih menjadi atribut yang ideal untuk dijadikan Primary Key? Tentu saja jawabannya tidak

Untuk mengantisipasi primary key yang tidak ideal di atas maka sebaiknya Primary Key Dibuat sebagai data yang sudah memiliki jumlah tetap dan memiliki type data sama.

Dalam hal di atas jika kode barang berubah-ubah bentuknya maka buatlah atribut/kolom baru dengan nama id_barang yang mana datanya dapat dikontrol secara internal. Buatlah id_barang auto increment sehingga datanya memiliki tipe data yang sama seperti ineger atau biginteger. Atau jika ingin menggabungkan data integer dan string seperti A0001 buatlah inputnya menjadi teratur dan dikontrol sebelum dimasukkan ke database.

Membuat database dengan tipe A0001 ini dikenal dengan id dengan prefix. Kemampuan programming sedikit diperlukan untuk membuat format ini.

Pengertian Foreign Key

Foreign Key adalah Satu attribute atau kolom yang terdapat pada tabel anak. Atribut atau kolom ini merupakan primary di kolom induk.

Seperti contoh di atas id_barang akan menjadi foreign key di tabel penjualan. Tabel barang dapat disebut sebagai tabel induk dan tabel penjualan disebut sebagai tabel anak.

Ilustrasi lain yang dapat memudahkan memahami konsep antara tabel anak dan tabel induk dapat dilihat pada data provinsi dan kabupaten seperti gambar di bawah ini

 Contoh Tabel Induk dan Tabel Anak
Contoh Tabel Induk Provinsi dan Tabel Anak Kabupaten

Ilustrasi tabel anak dan tabel induk adalah bagian termudah untuk memahami foreign key.

Dari tabel di atas provinsi adalah induk dari kabupaten. Saat membuat foreign key maka id_provinsi akan dibuat menjadi kunci tamu di tabel kabupaten.

Kabupaten sebagai anak dari provinsi adalah hal yang memang kita temui di lapangan. Untuk menjadikan Kabupaten sebagai anak dari propinsi maka id_provinsi harus menjadi foreign key di tabel kabupaten.

Contoh Lain tabel fakultas dan tabel jurusan. Jurusan adalah sublevel dari fakultas. Saat ingin menjadikan jurusan sebagai sublevel fakultas, maka id_fakultas harus menjadi foreign key di tabel jurusan. Silahkan terapkan pada phpmyadmin seperti cara di bawah ini.

Cara Membuat Primary Key dan Foreign Key di MySQL PHPMyAdmin

Studi kasus tabel provinsi dan kabupaten. Setiap kabupaten memiliki induk yaitu provinsi.

Buatlah database terlebih dahulu dengan membuka pehpmyadmin. disini database yang digunakan adalah indonetsource. tabel yang akan dibuat adalah tabel provinsi dengan primary key id_provinsi dan tabel kabupaten dengan primary key id_kabupaten.

Foreign key berada di tabel anak yaitu tabel kabupaten.

Masing – masing tabel adalah sebagai berikut:

1.  Tabel induk provinsi 

Membuat primary key

Amati kolom “action”, sebuah attribut dapat dijadikan primary dengan mengklik tanda kunci / text Primary pada kolom Action. Setelah di klik maka ikon kunci akan muncul pada atribut seperti di bawah ini

2.  Tabel anak (kabupaten)

membuat foreign key tabel kabupaten
Tabel Kabupaten

Untuk membuat tabel kabupaten kita memerlukan tiga buah atribut atau kolom. Satu kolom yang menjadi tambahan adalah kolom id_provinsi yang menjadi foreign key.

3. Selesaikan Foreign Key dengan membari index pada id_provinsi

Buka tabel anak disini(kabupaten) dan beri index foreign key untuk atribut id_provinsi. Untuk memberi index buka tabel kabupaten klik “Relation view” dan ceklist kolom id_provinsi dan klik index.

membari index tabel di mysql
Index tabel

Membuat Relasi dan Constraint Foreign Key

Tujuan adanya foreign key adalah untuk bisa direlasikan data di tabel induk dan tabel anak. Saat relasi dibuat juga diperlukan batasan apakah data induk boleh dihapus saat datanya tersimpan sebagai foreign key di tabel anak.

Data induk sebaiknya tidak boleh di hapus jika foreign keynya masih tersimpan di tabel anak. untuk mebuat constraint ini silahkan ikuti langkah berikut.

1. Design relasi dan constraint on delete dengan memilih Menu Restrict pada menu designer saat create relation di terapkan ke tabel provinsi dan kabupaten

membuat constraint foreign key

3. Hasil akhir

Contoh Relasi dengan constraint foreign key
Contoh Relasi dengan Constraint

Silahkan isikan data ke tabel provinsi dan tabel kabupaten lakukan test Constraint.

jika constraint berjalan dengan benar maka saat menghapus data provinsi yang telah digunakan sebagai foreign key di tabel kabupaten akan memunculkan error seperti di bawah ini

Constraint Error Foreign Key

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *