Bagi programmer istilah primary key dan foreign key mungkin sudah tidak asing lagi. Istilah ini biasanya muncul pada SQL atau bahasa query. Mari pelajari apa itu foreign key dan primary key dan bagaimana menggunakannya dalam SQL.
Baca Juga: Pengertian Database Beserta Fungsi Dan Contohnya
SQL melakukan operasi matematika pada data dalam database management system. Database ini berisi tabel berbeda yang masing-masing menyimpan data pada entitas tertentu. Jika kalian memiliki database rental mobil, entitas (atau tabel) dalam database tersebut akan menjadi pelanggan (yang akan menyimpan semua data pribadi pada setiap pelanggan). Tabel database ini berisi baris dan kolom, di mana setiap baris menjadi hosts record dan setiap kolom menyimpan data attribute-specific. Dalam database management system, setiap record (atau baris) harus unik.
DAFTAR ISI
Primary Key
Meskipun ketentuannya adalah bahwa setiap record dalam tabel harus berbeda, tetapi tidak selalu demikian. Melanjutkan contoh database rental mobil, jika database tersebut berisi dua pelanggan yang masing-masing memiliki nama yang sama yaitu “Johnny Cage”, Johnny Cage diharuskan untuk mengembalikan sebuah Mercedes-Benz yang sudah ia sewa. Dengan membuat primary key akan mengurangi risiko ini.
Apa Itu Primary Key
Dalam SQL database management system, primary key adalah tanda pengenal unik yang membedakan satu record dari yang lain. Oleh karena itu, setiap record dalam SQL database management system harus memiliki primary key. Tetapi ada beberapa aturan yang harus kalian ikuti ketika menentukan primary key untuk tabel:
- Primary key harus berisi nilai unik. Jika primary key terdiri dari beberapa kolom, kombinasi value pada kolom ini harus unik.
- Kolom primary key tidak boleh berisi nilai NULL. Ini berarti bahwa kalian harus mendeklarasikan kolom primary key dengan atribut NOT NULL. Jika tidak, MySQL akan memaksa kolom primary key sebagai NOT NULL secara implisit.
- Sebuah tabel hanya memiliki satu primary key
Menggunakan Primary Key Dalam Database
Untuk menyertakan primary key dalam database management system menggunakan SQL, kalian cukup menambahkannya sebagai atribut normal saat membuat tabel baru. Jadi tabel pelanggan akan berisi empat atribut (atau kolom):
- ID Pemilik Mobil (yang akan menyimpan primary key)
- Nama depan
- Nama belakang
- Nomor telepon
Sekarang setiap record pelanggan yang masuk ke database akan memiliki nomor identifikasi unik, serta nama depan, nama belakang, dan nomor telepon. Nomor telepon tidak cukup unik untuk dijadikan primary key, karena meskipun unik untuk satu orang pada satu waktu, seseorang dapat dengan mudah mengubah nomornya, artinya nomor itu bisa saja menjadi milik orang lain.
Record Dengan Contoh Primary Key
/* membuat record baru di tabel pelanggan */ INSERT INTO Pelanggan VALUES ('0004', 'Johnny', 'Cage', '081-999-888-777');
Kode SQL di atas akan menambahkan record baru ke tabel Pelanggan yang sudah ada sebelumnya. Tabel di bawah ini menunjukkan tabel pelanggan baru dengan dua record Johnny Cage.
Foreign Key
Sekarang kalian memiliki primary key yang secara unik membedakan penyewa mobil dari yang lainnya. Satu-satunya masalah adalah, dalam database, tidak ada hubungan nyata antara setiap Johnny Cage dan mobil yang dia sewa. Oleh karena itu, kemungkinan terjadinya kesalahan masih ada.
Di sinilah foreign key berperan. Menggunakan primary key untuk memecahkan masalah ambiguitas kepemilikan hanya dapat dicapai jika primary key berfungsi ganda sebagai foreign key.
Apa Itu Foreign Key?
Dalam SQL database management system, foreign key adalah pengenal unik atau kombinasi pengenal unik yang menghubungkan dua tabel atau lebih dalam database. Dari empat SQL database management system yang ada, relational database management system adalah yang paling populer.
Saat memutuskan tabel mana dalam database relasional yang harus memiliki foreign key, kalian harus terlebih dahulu mengidentifikasi tabel mana yang merupakan subjek dan objek dalam hubungannya.
Baca Juga: Perbedaan Database Relasional Dan Non Relasional
Kembali ke database rental mobil, untuk menghubungkan setiap pelanggan ke mobil yang benar, kalian harus memahami bahwa pelanggan (subjek) menyewa mobil (objek). Oleh karena itu, foreign key harus ada di tabel mobil. Kode SQL yang menghasilkan tabel dengan foreign key sedikit berbeda dari norma.
Membuat Tabel Dengan Contoh Foreign Key
/* membuat tabel mobil baru di database rental mobil */ CREATE TABLE Mobil ( NomorLisensi varchar(30) NOT NULL PRIMARY KEY, JenisMobil varchar(30) NOT NULL, IDPelanggan varchar(30), FOREIGN KEY (IDPelanggan) REFERENCES Pelanggan(IDPelanggan) );
Seperti yang kalian lihat pada kode di atas, foreign key harus diidentifikasi secara eksplisit, bersama dengan referensi ke primary key yang terhubung ke tabel baru. Untuk menambahkan record ke tabel baru, kalian harus memastikan bahwa value di bidang foreign key cocok dengan value di bidang primary key dari tabel asli.
Menambahkan Record Dengan Contoh Foreign Key
/* membuat record baru di tabel mobil */ INSERT INTO Mobil VALUES ('100012', 'Mercedes-Benz', '0004');
Kode di atas membuat record baru di tabel Mobil baru, menghasilkan hasil sebagai berikut.
Dari tabel di atas, kalian dapat mengidentifikasi Johnny Cage yang benar yang menyewa Mercedes-Benz dengan foreign key dalam record.
Advance Foreign Key
Ada dua cara lain untuk menggunakan foreign key dalam database. Jika kalian melihat kembali definisi foreign key di atas, kalian akan menemukan bahwa foreign key dapat menjadi pengenal unik atau kombinasi pengenal unik.
Kembali ke contoh database rental mobil, kalian akan melihat bahwa membuat record baru (dari mobil yang sama) setiap kali pelanggan menyewa mobil itu, mengalahkan tujuan tabel Mobil. Jika mobil akan dijual dan sekali dijual ke satu pelanggan, database yang ada sudah sempurna, tetapi mengingat mobil adalah rental, ada cara yang lebih baik untuk menampilkan data ini.
Composite Key
Composite key memiliki dua atau lebih pengenal unik. Dalam database relasional, akan ada contoh ketika penggunaan foreign key tunggal tidak cukup mewakili hubungan yang ada di dalam database itu. Dalam contoh rental mobil, pendekatan yang paling praktis adalah dengan membuat tabel baru yang menyimpan rincian sewa. Agar informasi dalam tabel rental mobil berguna, ia harus terhubung ke tabel mobil dan pelanggan.
Membuat Tabel Dengan Composite Foreign Key
/* membuat tabel RentalMobil di database rental mobil */ CREATE TABLE RentalMobil ( TanggalSewa DATE NOT NULL, NomorLisensi varchar(30) NOT NULL,FOREIGN KEY (NomorLisensi) REFERENCES mobil(NomorLisensi), IDPelanggan varchar(30) NOT NULL, FOREIGN KEY (IDPelanggan) REFERENCES pelanggan(IDPelanggan), PRIMARY KEY (TanggalSewa, NomorLisensi, IDPelanggan) );
Kode di atas menggambarkan poin penting. Meskipun tabel dalam database SQL dapat memiliki lebih dari satu foreign key, tabel tersebut hanya dapat memiliki satu primary key. Ini karena hanya ada satu cara unik untuk mengidentifikasi record.
Ketiga atribut dalam tabel harus digabungkan untuk memiliki key yang unik. Seorang pelanggan dapat menyewa lebih dari satu mobil pada hari yang sama (jadi IDPelanggan dan TanggalSewa bukanlah kombinasi yang baik) lebih dari satu pelanggan juga dapat menyewa mobil yang sama pada hari yang sama (jadi NomorLisensi dan TanggalSewa bukanlah kombinasi yang baik) .
Namun, pembuatan composite key yang memberi tahu pelanggan mana, mobil apa, dan pada hari apa membuat key unik yang sangat baik. Key unik ini mewakili composite foreign key dan composite primary key.
Foreign Primary Key
Oh ya, foreign primary key juga ada. Meskipun tidak ada nama resminya, foreign key juga bisa menjadi primary key dalam tabel yang sama. Ini terjadi saat kalian membuat tabel baru yang berisi data khusus tentang entitas yang sudah ada (atau record di tabel lain).
Katakanlah Toni (yang bekerja di perusahaan rental mobil) ada di database perusahaan di bawah tabel karyawan. Setelah beberapa tahun, dia menjadi supervisor dan ditambahkan ke tabel supervisor. Toni masih seorang karyawan dan masih memiliki nomor id yang sama. Jadi id karyawan Toni sekarang ada di tabel supervisor sebagai foreign key yang juga akan menjadi primary key dalam tabel itu (karena tidak masuk akal untuk membuat nomor id baru untuk Toni sekarang karena dia adalah supervisor).
Perbedaan Primary Key Dan Foreign Key
Primary Key | Foreign Key |
---|---|
Batasan primary key adalah kolom atau grup kolom yang secara unik mengidentifikasi setiap baris dalam tabel relational database management system. | Foreign key adalah kolom yang membuat hubungan antara dua tabel. |
Ini membantu kalian secara unik mengidentifikasi record dalam tabel. | Ini adalah bidang dalam tabel yang merupakan primary key dari tabel lain. |
Primary key tidak pernah menerima nilai null. | Foreign key dapat menerima beberapa nilai null. |
Primary key adalah clustered index, dan data dalam tabel DBMS secara fisik diatur dalam urutan clustered index. | Foreign key tidak dapat secara otomatis membuat indeks, clustered, atau non-clustered |
Kalian dapat memiliki satu primary key dalam sebuah tabel. | Kalian dapat memiliki beberapa foreign key dalam satu tabel. |
Value primary key tidak dapat dihapus dari tabel induk. | Value foreign key dapat dihapus dari tabel anak. |
Kalian dapat menentukan primary key secara implisit di tabel sementara. | Kalian tidak dapat menentukan foreign key di tabel sementara lokal atau global. |
Primary key adalah clustered index. | Secara default, ini bukan clustered index. |
Tidak ada dua baris yang dapat memiliki value identik untuk primary key. | Foreign key dapat berisi value duplikat. |
Tidak ada batasan dalam memasukkan value ke dalam kolom tabel. | Saat memasukkan value apa pun dalam tabelforeign key, pastikan bahwa value tersebut ada di kolom primary key. |
Kesimpulan
Jadi apa itu primary key dan foreign key? Primary key adalah aturan-aturan yang berguna agar setiap baris data atau nilai bersifat unik, agar masing-masing baris berbeda satu sama lain. Sedangkan foreign key adalah satu atribute (atau satu set atribute) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya.
Dari artikel ini, kalian sudah mengetahui apa itu foreign key dan primary key, cara kerjanya, dan mengapa penting untuk memilikinya dalam database. Kalian juga sudah memahami bentuk dasar primary key dan foreign key dan bahkan lebih kompleks.
Sekian artikel Apa Itu Primary Key Dan Foreign Key Di SQL Database. Nantikan artikel menarik lainnya dan jangan lupa share artikel ini ke teman-teman kalian. Terimakasih…