Memodelkan Blog: Pengguna, Catatan, Komen
Lukis gambar rajah ER, kenal pasti entiti dan hubungan, kemudian terjemahkannya kepada skema SQL ternormal.
Memodelkan Blog: Pengguna, Catatan, Komen ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Konteks
Sebuah blog ringkas: pengguna menulis siaran dan pengguna lain memberikan komen pada siaran. Mari tukarkan perkara itu menjadi skema.
Entiti
Tiga kata nama teras:
- Pengguna — id, e-mel, nama
- Siaran — id, pengarang, tajuk, kandungan, cap masa penerbitan
- Komen — id, pengarang, siaran yang dikomen, kandungan
Hubungan
Kardinaliti:
- Pengguna 1 ── ∞ Siaran (seorang pengguna menulis banyak siaran)
- Pengguna 1 ── ∞ Komen
- Siaran 1 ── ∞ Komen
Jadual Pengguna
Mulakan dengan pengguna — entiti lain merujuk kepadanya:
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()
);Jadual Siaran
FK kepada 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()
);Jadual Komen
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 Komen?
Jika sesuatu siaran dipadamkan, komen padanya tidak lagi bermakna — biarkan DB membersihkannya secara automatik.
Mengapa ON DELETE RESTRICT pada Pengarang?
Jangan padamkan kandungan secara senyap apabila seseorang pengguna hilang. Paksa aplikasi memadamkan pengguna secara logik atau menetapkan semula kandungan itu terlebih dahulu.
Melanjutkan kepada Teg (Banyak-ke-Banyak)
Tambahkan teg melalui jadual gabungan:
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)
);Komen Berantai
Komen yang merujuk kepada komen sendiri untuk membolehkan balasan:
ALTER TABLE comments
ADD COLUMN parent_id BIGINT REFERENCES comments(id) ON DELETE CASCADE;Pemadaman Logik berbanding Pemadaman Kekal
Untuk blog, memadamkan siaran secara logik selalunya lebih baik — pautan yang rosak tidak gagal dalam sejarah pengguna. Tambahkan deleted_at TIMESTAMPTZ dan tapis dengan WHERE deleted_at IS NULL dalam setiap kueri.
Gambar Rajah ER dalam Perkataan
users (1) -< (∞) posts (1) -< (∞) comments
Tambahan: users (1) -< (∞) comments, posts (∞) >-< (∞) tags.
Imbas Kembali
Mereka bentuk skema bermula dengan entiti, hubungan dan kardinaliti.
- PK pengganti pada setiap jadual
- FK mengisytiharkan hubungan
- Cascade berbanding Restrict sepadan dengan tujuan perniagaan
- Banyak-ke-banyak = jadual gabungan
Semakan Pantas
Di manakah kunci asing diletakkan dalam hubungan satu-ke-banyak antara siaran dan komen?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “Memodelkan Blog: Pengguna, Catatan, Komen” percuma?
Ya — teks penuh “Memodelkan Blog: Pengguna, Catatan, Komen” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Memodelkan Blog: Pengguna, Catatan, Komen”?
Lukis gambar rajah ER, kenal pasti entiti dan hubungan, kemudian terjemahkannya kepada skema SQL ternormal. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Memodelkan Blog: Pengguna, Catatan, Komen” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memodelkan Blog: Pengguna, Catatan, Komen
- Memilih Kunci dan Jenis
- Indeks untuk Pertanyaan Biasa
- Mengisi Pangkalan Data dengan Data Ujian