0Pricing
SQL Academy · Pelajaran

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

  1. Memodelkan Blog: Pengguna, Kiriman, Komentar
  2. Memilih Kunci dan Tipe
  3. Indeks untuk Kueri Umum
  4. Mengisi Basis Data dengan Data Pengujian
← Kembali ke SQL Academy