Kunci Utama dan Keunikan
Pahami kunci utama, kunci pengganti vs kunci alami, kunci gabungan, serta alasan setiap baris memerlukan pengenal unik yang dapat dipercaya.
Kunci Utama dan Keunikan adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Mengapa Setiap Baris Membutuhkan ID Unik
Untuk memperbarui atau menghapus baris tertentu dengan aman, Anda harus dapat menunjuknya tanpa ambiguitas.
- Dua pengguna bernama "Alice Adams" dapat ada
- Namun, dua pengguna dengan
id = 42harus NOT ada - Pengenal unik tersebut disebut kunci utama
Mendeklarasikan Kunci Utama
Anda menandai sebuah kolom sebagai kunci utama saat membuat tabel:
CREATE TABLE products (
id BIGSERIAL PRIMARY KEY,
sku VARCHAR(50) NOT NULL,
name VARCHAR(200) NOT NULL,
price NUMERIC(10,2) NOT NULL
);Kunci Utama = NOT NULL + UNIQUE
PRIMARY KEY secara otomatis menegakkan:
- NOT NULL — nilai kunci utama tidak boleh kosong
- UNIQUE — tidak ada dua baris yang dapat berbagi nilai kunci utama yang sama
Basis data juga membuat indeks unik pada kunci utama, sehingga pencarian berdasarkan id berlangsung cepat.
Kunci Pengganti vs Kunci Alami
Anda memiliki dua pilihan untuk kunci utama:
- Pengganti — ID sintetis yang dibuat oleh basis data (BIGSERIAL, UUID). Paling umum digunakan dalam aplikasi modern.
- Alami — pengenal dari dunia nyata (email, ISBN). Berisiko karena orang dapat mengganti alamat email.
Praktik terbaik: gunakan ID pengganti dan tambahkan batasan UNIQUE pada kunci alami.
BIGSERIAL: Bilangan Bulat yang Bertambah Otomatis
Di PostgreSQL, BIGSERIAL membuat kolom 64-bit yang bertambah otomatis dan didukung oleh sebuah urutan.
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
total NUMERIC(10,2) NOT NULL
);
-- You omit id on insert and the DB fills it in:
INSERT INTO orders (user_id, total) VALUES (7, 99.50);Kunci Utama UUID
Alternatifnya adalah UUID 128-bit, yang berguna ketika ID harus unik di berbagai sistem atau dibuat di sisi klien.
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE sessions (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id BIGINT NOT NULL,
ip INET
);Kunci Utama Gabungan
Terkadang pengenal alami merupakan gabungan beberapa kolom:
CREATE TABLE order_items (
order_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
quantity INT NOT NULL,
PRIMARY KEY (order_id, product_id)
);
-- The pair (order_id, product_id) must be unique
-- A product can appear at most once per orderBatasan UNIQUE vs Kunci Utama
Anda dapat mendeklarasikan kolom lain sebagai unik tanpa menjadikannya kunci utama:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
username VARCHAR(50) UNIQUE
);
-- INSERT below fails on the second row:
INSERT INTO users (email, username) VALUES ('a@x.com', 'alice');
INSERT INTO users (email, username) VALUES ('a@x.com', 'bob'); -- ERRORYang Terjadi saat Penyisipan Duplikat
Jika Anda mencoba menyisipkan kunci utama duplikat, basis data menolak seluruh pernyataan:
ERROR: duplicate key value violates unique constraint "users_pkey" DETAIL: Key (id)=(42) already exists.
Ini baik karena mencegah kerusakan data yang tidak terdeteksi.
Pencarian Baris berdasarkan Kunci Utama Berlangsung Cepat
Indeks unik pada kunci utama memberikan pencarian O(log n) bahkan pada skala miliaran baris.
-- Index Scan using users_pkey on users (cost=0.43..8.45 rows=1)
SELECT email FROM users WHERE id = 42;Jangan Gunakan Kembali ID
Bahkan setelah Anda menghapus sebuah baris, jangan gunakan kembali kunci utamanya. Tabel lain atau sistem eksternal mungkin masih merujuknya. Biarkan urutan terus bertambah — ID tidak mahal.
Ringkasan
Kunci utama memberikan setiap baris pegangan yang stabil dan unik.
- Utamakan kunci pengganti (BIGSERIAL atau UUID)
- Gunakan UNIQUE untuk kunci alami yang tidak boleh memiliki duplikat
- Kunci utama gabungan memodelkan "pasangan ini harus unik"
Pemeriksaan Singkat
Apa yang secara implisit ditegakkan oleh PRIMARY KEY?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kunci Utama dan Keunikan” gratis?
Ya — teks lengkap “Kunci Utama dan Keunikan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Kunci Utama dan Keunikan”?
Pahami kunci utama, kunci pengganti vs kunci alami, kunci gabungan, serta alasan setiap baris memerlukan pengenal unik yang dapat dipercaya. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Kunci Utama dan Keunikan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Apa Itu RDBMS dan Mengapa Tabel Penting
- Kunci Utama dan Keunikan
- NULL: Nilai Kebenaran Ketiga
- Ikhtisar Tipe Data: INT VARCHAR DATE BOOLEAN