Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Desain Basis Data

Pelajaran 5 dari 20

Kunci dan relasi

Kunci primer, kandidat, alami, dan surogat

Setelah pelajaran ini kamu bisa memilih kunci primer dari kunci kandidat, membedakan kunci alami dan surogat, dan memakai kunci komposit.

±14 menitDiperiksa 28 Sep 2026

Materi

Kunci primer adalah kolom atau gabungan kolom yang mengenali setiap baris secara unik. Dokumentasi PostgreSQL merumuskan syaratnya: nilainya unik dan tidak NULL, dan satu tabel hanya boleh punya satu kunci primer. OpenStax Introduction to Computer Science menjelaskan asalnya: sekumpulan atribut yang mengenali baris secara unik disebut superkey, superkey yang minimal disebut kunci kandidat, dan salah satu kunci kandidat dipilih menjadi kunci primer. Contohnya, kendaraan bisa dikenali lewat nomor rangka atau lewat pasangan pelat nomor dan provinsi.

Kunci alami diambil dari fakta di dunia nyata, misalnya email atau nomor ISBN. Kunci surogat adalah angka buatan yang tidak memuat fakta apa pun. Panduan Access menyarankan kunci yang nilainya tidak akan berubah dan menyebut pengenal tanpa fakta, seperti kolom AutoNumber, cocok karena tidak perlu diubah; nama orang tidak cocok karena dua orang bisa bernama sama. Di SQLite, kolom INTEGER PRIMARY KEY terisi otomatis bila dibiarkan kosong.

CREATE TABLE buku (
  id    INTEGER PRIMARY KEY,   -- kunci surogat
  isbn  TEXT NOT NULL UNIQUE,  -- kunci kandidat alami, dijaga UNIQUE
  judul TEXT NOT NULL
);
CREATE TABLE penulis_buku (
  buku_id    INTEGER,
  penulis_id INTEGER,
  PRIMARY KEY (buku_id, penulis_id)  -- kunci komposit
);

Kunci komposit terdiri atas dua kolom atau lebih; SQLite dan PostgreSQL sama-sama mendukungnya. Memakai kunci surogat tidak menghapus kebutuhan kunci alami: tanpa batasan UNIQUE pada isbn, buku yang sama bisa tercatat dua kali dengan id berbeda. Cara menguji apakah sebuah kolom layak jadi kunci kandidat di data yang sudah ada: bandingkan COUNT(*) dengan COUNT(DISTINCT kolom).

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 2 dari 3

Mengapa tabel peserta memakai kolom id sebagai kunci primer, bukan kolom nama?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke