Primary Key dan Foreign Key: Fungsi, Perbedaan, dan Contoh yang Mudah Dipahami
Dalam pengelolaan database, data perlu disusun secara terstruktur agar mudah dicari, diperbarui, dan dihubungkan satu sama lain. Salah satu konsep penting yang digunakan dalam database relasional adalah primary key dan foreign key. Keduanya berperan dalam mengidentifikasi data serta menjaga hubungan antar tabel agar tetap konsisten.
Primary key digunakan untuk membedakan setiap baris data dalam sebuah tabel, sedangkan foreign key berfungsi menghubungkan data pada satu tabel dengan data pada tabel lain. Kedua konsep ini banyak digunakan dalam pengembangan aplikasi, website, sistem informasi, dan berbagai layanan digital yang membutuhkan penyimpanan data terstruktur.
Memahami perbedaan primary key dan foreign key sangat penting bagi pemula yang sedang mempelajari database maupun pengembang yang ingin merancang struktur data secara tepat. Artikel ini membahas pengertian, fungsi, perbedaan, contoh penggunaan, serta cara menerapkannya dalam database menggunakan SQL.
Apa Itu Primary Key?
Primary key adalah kolom atau kombinasi beberapa kolom dalam tabel database yang digunakan untuk mengidentifikasi setiap baris data secara unik. Artinya, setiap nilai primary key harus berbeda dan tidak boleh bernilai NULL.
Sebagai contoh, tabel pelanggan dapat memiliki kolom id_pelanggan sebagai primary key. Setiap pelanggan mendapatkan ID yang berbeda sehingga sistem dapat membedakan pelanggan satu dengan lainnya, meskipun mereka memiliki nama yang sama.
Primary key biasanya menggunakan nomor ID yang dibuat secara otomatis. Namun, kolom lain juga dapat digunakan selama nilainya memenuhi persyaratan keunikan dan tidak kosong.
Fungsi Primary Key dalam Database
Primary key memiliki beberapa fungsi penting dalam pengelolaan data.
1. Mengidentifikasi Setiap Baris Data
Primary key membantu sistem menemukan satu baris data secara tepat. Misalnya, ketika terdapat dua pelanggan bernama Andi, sistem dapat membedakan keduanya melalui ID pelanggan masing-masing.
2. Mencegah Duplikasi Identitas
Karena nilainya harus unik, primary key mencegah dua baris memiliki identitas yang sama pada kolom atau kombinasi kolom tersebut.
3. Memudahkan Pengelolaan Data
Primary key dapat digunakan sebagai acuan ketika data akan dicari, diperbarui, atau dihapus. Dengan demikian, sistem dapat menentukan baris yang tepat untuk diproses.
4. Menjadi Acuan Relasi Antar Tabel
Primary key sering digunakan sebagai referensi bagi foreign key pada tabel lain. Hubungan ini memungkinkan database mengaitkan data yang saling berhubungan tanpa harus mengulang seluruh informasi.
Karakteristik Primary Key
Agar dapat berfungsi dengan baik, primary key memiliki beberapa karakteristik utama:
- Unik
Nilainya tidak boleh sama pada baris yang berbeda. - Tidak boleh NULL
Setiap baris harus memiliki nilai primary key. - Satu primary key per tabel
Sebuah tabel hanya memiliki satu definisi primary key, tetapi definisi tersebut dapat terdiri dari beberapa kolom. - Dapat berupa satu atau beberapa kolom
Primary key tidak harus selalu menggunakan satu kolom saja.
Pemilihan primary key sebaiknya mempertimbangkan kestabilan nilai dan kemudahan pengelolaan data. ID khusus biasanya lebih praktis dibandingkan atribut yang dapat berubah, seperti nama pelanggan atau alamat email.
Apa Itu Foreign Key?
Foreign key adalah kolom atau kombinasi beberapa kolom yang digunakan untuk membangun hubungan antara tabel dalam database relasional. Nilainya merujuk pada data yang sesuai dalam tabel lain, umumnya melalui primary key pada tabel yang menjadi referensi.
Sebagai contoh, sebuah database memiliki tabel pelanggan dan tabel pesanan. Tabel pelanggan menyimpan identitas setiap pelanggan, sedangkan tabel pesanan menyimpan transaksi yang dilakukan. Kolom id_pelanggan pada tabel pesanan dapat menjadi foreign key yang merujuk pada id_pelanggan di tabel pelanggan.
Dengan hubungan tersebut, sistem dapat mengetahui pelanggan yang melakukan setiap pesanan tanpa harus mengulang nama dan informasi pelanggan pada seluruh data transaksi.
Fungsi Foreign Key dalam Database
Foreign key memiliki beberapa fungsi utama dalam menjaga keteraturan data.
1. Menghubungkan Data Antar Tabel
Foreign key memungkinkan database mengaitkan data yang berada pada tabel berbeda. Misalnya, sistem dapat menghubungkan data pesanan dengan pelanggan yang membuatnya.
2. Menjaga Integritas Referensial
Foreign key membantu memastikan bahwa nilai referensi yang dimasukkan sesuai dengan data yang tersedia pada tabel tujuan. Dengan demikian, database dapat mencegah hubungan ke data yang tidak ada.
3. Mengurangi Pengulangan Data
Informasi yang sudah disimpan pada satu tabel tidak perlu selalu disalin ke tabel lain. Tabel terkait cukup menyimpan ID yang menjadi referensi.
4. Mengatur Perubahan Data yang Saling Berkaitan
Foreign key dapat dikonfigurasi untuk menentukan tindakan ketika data yang dirujuk diperbarui atau dihapus. Pilihannya antara lain menolak perubahan, menghapus data terkait, atau memperbarui nilai referensi secara otomatis, sesuai aturan yang ditetapkan.
Karakteristik Foreign Key
Foreign key memiliki karakteristik yang berbeda dari primary key, antara lain:
- Nilainya merujuk pada kolom yang sesuai di tabel lain atau pada tabel yang sama.
- Nilainya dapat berulang karena beberapa baris bisa merujuk pada data yang sama.
- Nilainya dapat NULL jika aturan kolom mengizinkannya dan hubungan tersebut tidak wajib.
- Kolom yang dirujuk harus memenuhi persyaratan database untuk dijadikan target foreign key, biasanya berupa primary key atau kolom dengan batasan unik yang sesuai.
Berbeda dengan primary key, foreign key tidak harus memiliki nilai yang unik. Sebagai contoh, satu pelanggan dapat melakukan beberapa pesanan sehingga ID pelanggan yang sama bisa muncul pada banyak baris tabel pesanan.
Perbedaan Primary Key dan Foreign Key
Primary key dan foreign key sama-sama penting dalam database relasional, tetapi memiliki tujuan yang berbeda. Primary key berfokus pada identitas setiap baris, sedangkan foreign key berfokus pada hubungan dan validitas referensi antar tabel.
Berikut perbedaan keduanya.
| Aspek | Primary Key | Foreign Key |
|---|---|---|
| Fungsi utama | Mengidentifikasi setiap baris secara unik | Menghubungkan data antar tabel |
| Nilai unik | Wajib unik | Boleh berulang |
| Nilai NULL | Tidak diperbolehkan | Dapat diperbolehkan jika aturan kolom mengizinkan |
| Jumlah per tabel | Satu definisi primary key | Dapat memiliki beberapa foreign key |
| Lokasi penggunaan | Tabel yang memiliki identitas data | Tabel yang menyimpan referensi ke data lain |
| Tujuan | Menjaga keunikan identitas | Menjaga integritas referensial |
| Contoh | id_pelanggan pada tabel pelanggan |
id_pelanggan pada tabel pesanan |
Sebagai gambaran sederhana, primary key dapat dianggap sebagai nomor identitas setiap data, sedangkan foreign key berfungsi seperti referensi yang menunjukkan data lain yang berkaitan.
Contoh Primary Key dan Foreign Key dalam Database
Untuk memahami cara kerja keduanya, gunakan contoh database toko online yang memiliki tabel pelanggan dan tabel pesanan.
1. Contoh Tabel Pelanggan
Tabel pelanggan menyimpan informasi dasar setiap pelanggan. Kolom id_pelanggan digunakan sebagai primary key.
| id_pelanggan | nama_pelanggan | |
|---|---|---|
| 101 | Andi | [email protected] |
| 102 | Sinta | [email protected] |
| 103 | Budi | [email protected] |
Pada tabel tersebut, id_pelanggan menjadi identitas unik untuk setiap pelanggan. Meskipun terdapat pelanggan yang memiliki nama sama, sistem tetap dapat membedakan mereka melalui ID masing-masing.
2. Contoh Tabel Pesanan
Tabel pesanan menyimpan informasi transaksi yang dilakukan pelanggan. Kolom id_pesanan berfungsi sebagai primary key, sedangkan id_pelanggan menjadi foreign key.
| id_pesanan | tanggal_pesanan | id_pelanggan |
|---|---|---|
| 5001 | 2026-10-20 | 101 |
| 5002 | 2026-10-21 | 102 |
| 5003 | 2026-10-22 | 101 |
Pada contoh tersebut, pelanggan dengan ID 101 memiliki dua pesanan. Hal ini diperbolehkan karena foreign key tidak harus unik.
Melalui kolom id_pelanggan, sistem dapat mengetahui bahwa pesanan 5001 dan 5003 dibuat oleh pelanggan yang sama, yaitu Andi. Sementara itu, database dapat menolak ID pelanggan yang tidak ditemukan pada tabel pelanggan, jika batasan foreign key telah diterapkan.
3. Hubungan Antara Kedua Tabel
Hubungan kedua tabel tersebut dapat digambarkan sebagai berikut: pelanggan.id_pelanggan → pesanan.id_pelanggan
Kolom id_pelanggan pada tabel pelanggan merupakan primary key, sedangkan kolom dengan nama yang sama pada tabel pesanan merupakan foreign key.
Hubungan ini membentuk relasi satu-ke-banyak (one-to-many), yaitu satu pelanggan dapat memiliki banyak pesanan, tetapi setiap pesanan pada contoh tersebut merujuk pada satu pelanggan.
Cara Membuat Primary Key dan Foreign Key Menggunakan SQL
Primary key dan foreign key dapat dibuat menggunakan SQL (Structured Query Language). Berikut contoh penerapannya pada database toko online.
1. Membuat Tabel Pelanggan dengan Primary Key
Gunakan perintah berikut untuk membuat tabel pelanggan.
CREATE TABLE pelanggan (
id_pelanggan INT PRIMARY KEY,
nama_pelanggan VARCHAR(100) NOT NULL,
email VARCHAR(150)
);
Pada kode tersebut, kolom id_pelanggan ditetapkan sebagai primary key. Artinya, nilainya harus unik dan tidak boleh NULL.
Kolom nama_pelanggan menggunakan NOT NULL agar setiap pelanggan wajib memiliki nama. Sementara itu, kolom email tidak diwajibkan terisi dalam contoh ini.
2. Membuat Tabel Pesanan dengan Foreign Key
Selanjutnya, buat tabel pesanan yang mengacu pada tabel pelanggan.
CREATE TABLE pesanan (
id_pesanan INT PRIMARY KEY,
tanggal_pesanan DATE,
id_pelanggan INT,
FOREIGN KEY (id_pelanggan)
REFERENCES pelanggan(id_pelanggan)
);
Pada kode tersebut, id_pesanan berfungsi sebagai primary key. Sementara itu, id_pelanggan ditetapkan sebagai foreign key yang merujuk pada id_pelanggan di tabel pelanggan.
Dengan aturan tersebut, database dapat menolak pesanan yang menggunakan ID pelanggan yang tidak ada pada tabel referensi. Karena kolom foreign key tidak diberi NOT NULL, nilai NULL masih diperbolehkan dalam contoh ini.
3. Memasukkan Data ke dalam Tabel
Setelah kedua tabel dibuat, masukkan data pelanggan terlebih dahulu.
INSERT INTO pelanggan
(id_pelanggan, nama_pelanggan, email)
VALUES
(101, 'Andi', '[email protected]'),
(102, 'Sinta', '[email protected]');
Kemudian, masukkan data pesanan.
INSERT INTO pesanan
(id_pesanan, tanggal_pesanan, id_pelanggan)
VALUES
(5001, '2026-10-20', 101),
(5002, '2026-10-21', 102),
(5003, '2026-10-22', 101);
Data tersebut dapat disimpan karena setiap id_pelanggan yang digunakan pada tabel pesanan tersedia di tabel pelanggan.
Sebaliknya, jika pesanan baru menggunakan id_pelanggan 999 sementara pelanggan tersebut tidak ada, database akan menolak penyimpanan data karena melanggar batasan foreign key.
Contoh sintaks di atas menggunakan SQL yang umum pada database relasional. Detail tipe data dan perilaku tertentu dapat berbeda antara MySQL, PostgreSQL, SQL Server, dan sistem database lainnya.
Jenis Primary Key yang Perlu Diketahui
Selain menggunakan satu kolom, primary key juga dapat dibentuk dengan beberapa cara sesuai kebutuhan struktur data.
1. Simple Primary Key
Simple primary key adalah primary key yang menggunakan satu kolom untuk mengidentifikasi setiap baris data.
Contohnya, tabel pelanggan menggunakan id_pelanggan sebagai identitas unik. Metode ini mudah dipahami dan umum digunakan karena setiap data memiliki satu ID khusus.
2. Composite Primary Key
Composite primary key adalah primary key yang terdiri dari dua kolom atau lebih. Kombinasi nilai seluruh kolom harus unik, meskipun masing-masing kolom tidak harus unik jika berdiri sendiri.
Sebagai contoh, tabel detail pesanan dapat menggunakan kombinasi id_pesanan dan id_produk sebagai primary key.
CREATE TABLE detail_pesanan (
id_pesanan INT,
id_produk INT,
jumlah INT NOT NULL,
PRIMARY KEY (id_pesanan, id_produk)
);
Dalam contoh tersebut, kombinasi ID pesanan dan ID produk tidak boleh berulang. Pendekatan ini sesuai jika satu produk hanya dicatat satu kali dalam setiap pesanan. Jika desain sistem mengizinkan baris berulang untuk produk yang sama dalam satu pesanan, diperlukan strategi identifikasi yang berbeda.
Hubungan Primary Key dan Foreign Key dalam Relasi Database
Primary key dan foreign key membantu membentuk berbagai jenis hubungan dalam database relasional. Bentuk hubungan yang digunakan bergantung pada kebutuhan aplikasi dan struktur data.
One-to-One
Relasi one-to-one menghubungkan satu baris pada suatu tabel dengan paling banyak satu baris pada tabel lain. Contohnya, satu akun pengguna memiliki satu tabel profil tambahan.
Foreign key dapat digunakan untuk menghubungkan kedua tabel, sedangkan batasan unik pada kolom referensi dapat digunakan untuk membatasi agar setiap akun hanya memiliki satu profil.
One-to-Many
Relasi one-to-many memungkinkan satu baris pada tabel pertama berhubungan dengan banyak baris pada tabel kedua.
Contohnya, satu pelanggan dapat membuat banyak pesanan. Primary key pada tabel pelanggan menjadi referensi bagi foreign key pada tabel pesanan.
Many-to-Many
Relasi many-to-many memungkinkan banyak baris pada satu tabel berhubungan dengan banyak baris pada tabel lainnya.
Contohnya, satu siswa dapat mengikuti banyak mata pelajaran, sementara satu mata pelajaran dapat diikuti banyak siswa. Hubungan ini biasanya dibentuk menggunakan tabel penghubung yang memiliki foreign key ke kedua tabel utama.
| Jenis Relasi | Contoh | Penerapan Key |
|---|---|---|
| One-to-one | Pengguna dan profil | Foreign key dengan batasan unik |
| One-to-many | Pelanggan dan pesanan | Foreign key pada tabel pesanan |
| Many-to-many | Siswa dan mata pelajaran | Tabel penghubung dengan dua foreign key |
Pemahaman tentang jenis relasi ini membantu pengembang menentukan penempatan foreign key dan menyusun struktur database yang sesuai dengan kebutuhan aplikasi.
Kesalahan yang Perlu Dihindari Saat Menggunakan Primary Key dan Foreign Key
Perancangan primary key dan foreign key perlu dilakukan dengan cermat agar hubungan antar data tidak menimbulkan masalah.
1. Menggunakan Kolom yang Nilainya Mudah Berubah
Menggunakan nama, nomor telepon, atau alamat email sebagai primary key dapat menyulitkan pengelolaan data jika nilainya berubah. Dalam banyak kasus, ID khusus lebih praktis karena dapat dipertahankan meskipun informasi pelanggan diperbarui.
2. Tidak Menjaga Keunikan Primary Key
Primary key tidak boleh memiliki nilai yang sama pada baris berbeda. Karena itu, pastikan mekanisme pemberian ID tidak menghasilkan duplikasi dan setiap baris memiliki identitas yang valid.
3. Memasukkan Foreign Key yang Tidak Memiliki Referensi
Foreign key harus merujuk pada nilai yang tersedia di tabel tujuan, kecuali nilai NULL diperbolehkan. Data referensi yang tidak valid dapat menyebabkan proses penyimpanan ditolak oleh database.
4. Menghapus Data Tanpa Memperhatikan Relasi
Menghapus baris yang masih dirujuk oleh tabel lain dapat melanggar integritas referensial. Tentukan aturan penghapusan yang sesuai, seperti menolak penghapusan atau menggunakan ON DELETE CASCADE jika data terkait memang harus dihapus secara otomatis.
Penggunaan cascade perlu dipertimbangkan dengan hati-hati karena dapat menghapus banyak data terkait dalam satu operasi.
Kesimpulan
Primary key dan foreign key merupakan komponen penting dalam database relasional. Primary key digunakan untuk mengidentifikasi setiap baris secara unik, sedangkan foreign key menghubungkan data antar tabel sekaligus membantu menjaga integritas referensial.
Keduanya bekerja bersama untuk membuat struktur database lebih teratur, mengurangi pengulangan data, dan memastikan hubungan antar informasi tetap valid. Dengan memahami cara kerja serta penerapannya melalui SQL, pengembang dapat merancang database yang lebih konsisten dan mudah dikelola.
Pemilihan key yang tepat menjadi dasar penting dalam pengembangan aplikasi, website, dan sistem informasi yang mengandalkan data terstruktur. Untuk mendapatkan lebih banyak informasi dan panduan praktis seputar teknologi digital, website, hosting, dan pengelolaan sistem, kunjungi berbagai artikel informatif lainnya di Blog Hosteko.
