Memilih Kunci dan Tipe
Pilih kunci utama BIGSERIAL vs UUID, tentukan antara TEXT dan VARCHAR(n), serta pilih tipe yang tepat untuk setiap kolom.
Memilih Kunci dan Tipe 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.
Memilih Kunci Utama
Tiga pilihan nyata:
- BIGSERIAL — bilangan bulat 64-bit yang meningkat monoton
- UUID — unik secara global dengan panjang 128-bit
- Kunci alami — pengenal dunia nyata (email, ISBN)
Kapan BIGSERIAL Lebih Unggul
Pilihan bawaan untuk sebagian besar aplikasi:
- Kecil (8 byte), indeks cepat, ramah tembolok
- Monoton → data terbaru terkumpul di bagian akhir indeks
- Mudah dibaca dalam URL (misalnya
/posts/42)
Kapan UUID Lebih Unggul
Pilih UUID ketika:
- Anda memerlukan ID yang unik secara global (banyak pusat data, aplikasi yang mengutamakan penggunaan luring)
- Anda tidak ingin ID membocorkan volume bisnis melalui URL
- Anda ingin membuat ID di sisi klien sebelum penyisipan
Biayanya: 16 byte (dibandingkan 8 byte untuk BIGINT), dan UUID v4 mengacak operasi penyisipan dalam indeks.
Mengapa Kunci Alami Berisiko
Email dapat berubah. SKU dapat diberi nama ulang. Kode negara dapat dipecah. Gunakan kunci pengganti sebagai PK dan batasan UNIQUE pada kunci alami.
Tipe Kolom: String
Untuk sebagian besar kolom teks:
VARCHAR(n)— ketika Anda memiliki batas atas yang pasti (email, kode)TEXT— untuk konten bebas dan panjangCITEXT— ketika perbandingan harus selalu mengabaikan huruf besar-kecil (email!)
Tipe Kolom: Angka
Untuk kolom numerik:
BIGINTuntuk ID dan penghitungNUMERIC(p, s)untuk uangREAL/DOUBLE PRECISIONhanya untuk keperluan sains
Tipe Kolom: Waktu
Untuk kolom waktu:
TIMESTAMPTZuntuk peristiwa (bawaan)DATEuntuk hari kalender (tanggal lahir, hari libur)TIMEuntuk waktu dalam sehari tanpa tanggal (jam buka toko)
Boolean dibandingkan Status
Jika sebuah kolom memiliki lebih dari dua keadaan di masa mendatang, pilih teks status + CHECK daripada nilai boolean:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.Batasan yang Menyertai
Setiap kolom sebaiknya memiliki:
- Tipe paling sempit yang sesuai
NOT NULLkecuali NULL memiliki maknaDEFAULTjika kolom tersebut biasanya memiliki nilai yang samaCHECKjika ada aturan domain- Indeks jika digunakan dalam WHERE/JOIN/ORDER
Dampak Penyimpanan
Tipe yang lebih sempit = baris yang lebih kecil = lebih banyak baris per halaman = tingkat keberhasilan tembolok yang lebih baik. Mengubah TEXT menjadi VARCHAR(20) tidak menghemat ruang (penyimpanannya sama). Mengubah BIGINT menjadi INT mengurangi separuh lebar kolom.
Tipe Kunci Asing Harus Sama
Tipe kolom FK harus sama persis dengan tipe PK yang dirujuk:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)Ringkasan
Pemilihan tipe adalah bagian dari perancangan.
- BIGSERIAL atau UUID untuk PK
- NUMERIC untuk uang
- TIMESTAMPTZ untuk peristiwa
- TEXT-dengan-CHECK untuk status yang terus berkembang
- NOT NULL secara bawaan
Pemeriksaan Cepat
Anda menyimpan stempel waktu peristiwa untuk pengguna di banyak zona waktu. Tipe apa yang sebaiknya digunakan?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memilih Kunci dan Tipe” gratis?
Ya — teks lengkap “Memilih Kunci dan Tipe” 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 “Memilih Kunci dan Tipe”?
Pilih kunci utama BIGSERIAL vs UUID, tentukan antara TEXT dan VARCHAR(n), serta pilih tipe yang tepat untuk setiap kolom. 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 “Memilih Kunci dan Tipe” 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
- Memodelkan Blog: Pengguna, Kiriman, Komentar
- Memilih Kunci dan Tipe
- Indeks untuk Kueri Umum
- Mengisi Basis Data dengan Data Pengujian