Apa yang dimaksud dengan foreign key berikan contoh nya

02/01/2018    Risman Hakim    185766    Website

Perbedaan Primary Key, Foreign Key dan Candidate Key - Setelah kemarin saya membahas mengenai join tabel pada SQL, kali ini saya akan melanjutkan pembahasan yang masih bersangkutan dengan SQL yakni key. Key pada SQL merupakan gabungan beberapa atribut dimana fungsinya adalah untuk membedakan semua basis data didalam tabel secara unik ataupun suatu cara untuk menghubungkan antara tabel satu dengan tabel yang lainnya.

Didalam SQL, key terbagi menjadi beberapa jenis diantaranya adalah sebagai berikut :

  • Primary Key
  • Foreign Key
  • Candidate Key
  • Super Key
  • Alternate Key
  • Composite Key

Dari semua key diatas, saya akan membahas apa saja perbedaan dari masing-masing key tersebut, namun kali ini saya akan membahas terlebih dahulu Perbedaan Primary Key, Foreign Key dan Candidate Key.

1. Primary Key

Primary Key merupakan sebuah aturan dimana fungsinya adalah untuk membedakan anatara baris satu dengan baris lainnya yang ada pada tabel dan bersifat unik.

Berikut adalah contoh primary key pada salah satu tabel.

Apa yang dimaksud dengan foreign key berikan contoh nya

Ada ketentuan yang harus diperhatikan ketika field yang menjadi primary key yakni :

Data tidak boleh sama atau ganda (unik)
Data tidak boleh bernilai null

Contoh sederhana penerapan primary key adalah seperti contoh diatas adalah id.

2. Foreign Key

Dari namanya kita bisa mengira bahwa foreign (tamu) key, merupakan suatu atribut untuk melengkapi hubungan yang menunjukan ke induknya, itu artinya field pada tabel merupakan kunci tamu dari tabel lain. Dan biasanya penggunaan foreign key akan sangat dibutuhkan ketikan kita menemukan banyak tabel dan ingin menghubungkan satu tabel dengan tabel lainnya.

Contohnya seperti pada gambar dibawah ini.

Apa yang dimaksud dengan foreign key berikan contoh nya

3. Candidate Key

Yang terakhir dari pembahasan key pada SQL adalah candidate key, candidate key merupakan suatu atribut ataupun super key yang mengidentifikasi secara unik untuk kejadian spesifik dari entitas.

Berikut ini adalah contoh candidate key.

Apa yang dimaksud dengan foreign key berikan contoh nya

Baiklah, cukup sekian pembahasan mengenai Perbedaan Primary Key, Foreign Key dan Candidate Key, semoga bermanfaat sampai jumpa diartikel selanjutnya.

Artikel, MySQL

Published by Ade Kurniawan on July 15, 2021

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

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 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 

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)

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.

Apa yang dimaksud dengan foreign key berikan contoh nya
Index tabel

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

Apa yang dimaksud dengan foreign key berikan contoh nya

3. Hasil akhir

Apa yang dimaksud dengan foreign key berikan contoh nya
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

Apa yang dimaksud dengan foreign key berikan contoh nya
Constraint Error Foreign Key