PostgreSQL Basics
Memahami relasi, primary key, foreign key, constraint, dan index secara high level agar model UI dapat dibicarakan bersama backend dengan tepat.
Tujuan belajar
- Menjelaskan PostgreSQL sebagai relational database untuk data aplikasi
- Membedakan primary key dan foreign key pada hubungan sederhana
- Memahami constraint sebagai aturan data dan index sebagai bantuan akses data pada level konsep
- Menyebut data relationship yang perlu dikonfirmasi sebelum membangun UI
Isi lesson
6 blok- 1.Relasi membuat data product tidak perlu diulangBelum selesaiWajib
- 2.Satu course dan banyak noteBelum selesaiWajib
- 3.Coding practiceBelum selesaiWajib
- 4.Cek pemahamanBelum selesaiWajib
- 5.Jangan memakai denormalisasi atau index sebagai solusi pertamaBelum selesaiWajib
- 6.RingkasanBelum selesaiWajib
Relasi membuat data product tidak perlu diulang
WajibPostgreSQL adalah relational database: data aplikasi biasanya dimodelkan dalam table yang saling terkait. Dalam Course Admin, table courses dapat memiliki id sebagai primary key, yaitu identifier unik bagi satu course. Table course_notes dapat menyimpan course_id sebagai foreign key yang merujuk ke courses.id. Dengan begitu, satu course dapat memiliki banyak note tanpa menyalin title course ke setiap row note.
Constraint adalah aturan yang membantu menjaga data tetap masuk akal, misalnya id unik, title tidak boleh kosong, atau course_id harus merujuk course yang ada. Index membantu database menemukan data tertentu lebih efisien pada pola query tertentu. Frontend perlu tahu mengapa relation dan constraint memengaruhi response atau error, tetapi belum perlu merancang migration, memilih index, atau melakukan query planning.
Bagian ini memengaruhi progres lesson.
Satu course dan banyak note
Wajibcourses
id (primary key)
title
course_notes
id (primary key)
course_id (foreign key -> courses.id)
bodycourse_notes.course_id membuat setiap note dapat dikaitkan ke satu course. UI course detail dapat meminta note untuk course aktif melalui backend contract. Bila user mencoba membuat note untuk course yang tidak ada, constraint atau service validation dapat menolak action. Jangan memakai nama field relation sebagai bukti bahwa user berhak membaca atau menulis semua row; authorization dan Row Level Security bila ada tetap menjadi boundary tersendiri.
Bagian ini memengaruhi progres lesson.
Coding practice
WajibDibuka di workspace khususMap course note relation
Petakan primary key dan foreign key pada relationship Course Admin secara deklaratif.
Tujuan awal: Fokus di tab TS.
Practice ini dibuka di workspace khusus. Buka practice untuk memakai editor, preview, dan cek otomatis.
Tombol selesai aktif setelah semua validasi wajib lolos.
Cek pemahaman
WajibJawab duluCek pemahaman singkat
Apa peran course_notes.course_id pada contoh ini?
Progres lesson naik setelah jawaban benar.
Kesalahan umum
WajibJangan memakai denormalisasi atau index sebagai solusi pertama
UI lambat, response kosong, atau relation hilang belum otomatis berarti database harus diberi index atau data harus disalin ke table lain. Cek dahulu API request, filter, policy, response shape, loading state, dan error evidence. Perubahan schema, constraint, serta index adalah keputusan backend/data yang perlu context nyata serta owner yang tepat.
Bagian ini memengaruhi progres lesson.
Ringkasan
Wajib- PostgreSQL menyimpan data relational dalam table yang dapat saling terkait.
- Primary key mengidentifikasi satu row; foreign key menghubungkan row dengan table lain.
- Constraint menjaga aturan data; index membantu akses data pada pola tertentu.
- Frontend perlu membaca relationship untuk memahami contract, bukan mendesain database sendiri.
- Berikutnya, kita membandingkan Supabase sebagai backend platform dan Prisma sebagai ORM layer.
Bagian ini memengaruhi progres lesson.
Langkah berikutnya
Selesaikan bagian penting lesson ini
Lanjutkan blok wajib berikutnya: Relasi membuat data product tidak perlu diulang.