Memodelkan Blog: Pengguna, Kiriman, Komentar
Gambar diagram ER, identifikasi entitas dan hubungan, lalu terjemahkan semuanya menjadi skema SQL ternormalisasi.
Memodelkan Blog: Pengguna, Kiriman, Komentar adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Domain
Sebuah blog sederhana: pengguna menulis postingan, dan pengguna lain mengomentari postingan tersebut. Mari ubahnya menjadi sebuah skema.
Entitas
Tiga kata benda utama:
- Pengguna — id, email, nama
- Postingan — id, penulis, judul, isi, stempel waktu publikasi
- Komentar — id, penulis, postingan yang dikomentari, isi
Relasi
Kardinalitas:
- Pengguna 1 ── ∞ Postingan (seorang pengguna menulis banyak postingan)
- Pengguna 1 ── ∞ Komentar
- Postingan 1 ── ∞ Komentar
Tabel Pengguna
Mulailah dengan pengguna — tabel lain merujuk ke tabel ini:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
full_name VARCHAR(100) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Tabel Postingan
FK ke pengguna:
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
title VARCHAR(200) NOT NULL,
body TEXT NOT NULL,
published_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Tabel Komentar
Dua FK:
CREATE TABLE comments (
id BIGSERIAL PRIMARY KEY,
post_id BIGINT NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
body TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Mengapa ON DELETE CASCADE pada Komentar?
Jika sebuah postingan dihapus, komentarnya tidak lagi bermakna — biarkan DB membersihkannya secara otomatis.
Mengapa ON DELETE RESTRICT pada Penulis?
Jangan menghapus konten secara diam-diam ketika seorang pengguna menghilang. Paksa aplikasi untuk menghapus pengguna secara lunak atau menetapkan ulang konten tersebut terlebih dahulu.
Memperluas hingga Tag (Banyak-ke-Banyak)
Tambahkan tag melalui tabel penggabung:
CREATE TABLE tags (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);
CREATE TABLE post_tags (
post_id BIGINT REFERENCES posts(id) ON DELETE CASCADE,
tag_id BIGINT REFERENCES tags(id) ON DELETE CASCADE,
PRIMARY KEY (post_id, tag_id)
);Komentar Bertingkat
Komentar yang merujuk ke komentar lain untuk balasan:
ALTER TABLE comments
ADD COLUMN parent_id BIGINT REFERENCES comments(id) ON DELETE CASCADE;Penghapusan Lunak vs Penghapusan Permanen
Untuk blog, menghapus postingan secara lunak sering kali lebih baik — tautan yang rusak tidak gagal di riwayat pengguna. Tambahkan deleted_at TIMESTAMPTZ dan gunakan filter WHERE deleted_at IS NULL dalam setiap kueri.
Diagram ER dalam Kata-Kata
users (1) -< (∞) posts (1) -< (∞) comments
Ditambah: users (1) -< (∞) comments, posts (∞) >-< (∞) tags.
Ringkasan
Perancangan skema dimulai dari entitas, relasi, dan kardinalitas.
- PK pengganti pada setiap tabel
- FK menyatakan relasi
- Cascade vs Restrict harus sesuai dengan maksud bisnis
- Banyak-ke-banyak = tabel penggabung
Pemeriksaan Cepat
Di mana kunci asing berada dalam relasi satu-ke-banyak antara postingan dan komentar?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memodelkan Blog: Pengguna, Kiriman, Komentar” gratis?
Ya — teks lengkap “Memodelkan Blog: Pengguna, Kiriman, Komentar” 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 “Memodelkan Blog: Pengguna, Kiriman, Komentar”?
Gambar diagram ER, identifikasi entitas dan hubungan, lalu terjemahkan semuanya menjadi skema SQL ternormalisasi. 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 1 dari 4.
Berapa lama pelajaran “Memodelkan Blog: Pengguna, Kiriman, Komentar” 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