การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น
วาดแผนภาพ ER ระบุเอนทิตีและความสัมพันธ์ แล้วแปลงเป็นสคีมา SQL ที่ทำให้เป็นบรรทัดฐาน
การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
โดเมน
บล็อกอย่างง่าย: ผู้ใช้เขียนโพสต์ และผู้ใช้อื่นแสดงความคิดเห็นในโพสต์ ลองเปลี่ยนแนวคิดนี้ให้เป็นสคีมากัน
เอนทิตี
คำนามหลักสามคำ:
- ผู้ใช้ — รหัส อีเมล ชื่อ
- โพสต์ — รหัส ผู้เขียน ชื่อเรื่อง เนื้อหา เวลาประทับการเผยแพร่
- ความคิดเห็น — รหัส ผู้เขียน โพสต์ที่แสดงความคิดเห็น เนื้อหา
ความสัมพันธ์
คาร์ดินัลลิตี:
- ผู้ใช้ 1 ── ∞ โพสต์ (ผู้ใช้หนึ่งคนเขียนโพสต์ได้หลายรายการ)
- ผู้ใช้ 1 ── ∞ ความคิดเห็น
- โพสต์ 1 ── ∞ ความคิดเห็น
ตารางผู้ใช้
เริ่มจากผู้ใช้ เพราะตารางอื่นอ้างอิงตารางนี้:
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()
);ตารางโพสต์
FK ไปยังผู้ใช้:
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()
);ตารางความคิดเห็น
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()
);เหตุใดจึงใช้ ON DELETE CASCADE กับความคิดเห็น
หากลบโพสต์ ความคิดเห็นของโพสต์นั้นก็ไม่มีความหมายอีกต่อไป — ให้ฐานข้อมูลจัดการลบโดยอัตโนมัติ
เหตุใดจึงใช้ ON DELETE RESTRICT กับผู้เขียน
อย่าลบเนื้อหาอย่างเงียบ ๆ เมื่อผู้ใช้หายไป ให้บังคับแอปทำเครื่องหมายผู้ใช้ว่าถูกลบแบบไม่ลบข้อมูลจริง หรือเปลี่ยนผู้รับผิดชอบเนื้อหาก่อน
การเพิ่มแท็ก (หลายต่อหลาย)
เพิ่มแท็กผ่านตารางเชื่อม:
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)
);ความคิดเห็นแบบลำดับชั้น
ใช้ความคิดเห็นที่อ้างอิงตัวเองเพื่อรองรับการตอบกลับ:
ALTER TABLE comments
ADD COLUMN parent_id BIGINT REFERENCES comments(id) ON DELETE CASCADE;การลบแบบไม่ลบข้อมูลจริงเทียบกับการลบถาวร
สำหรับบล็อก การทำเครื่องหมายโพสต์ว่าถูกลบโดยไม่ลบข้อมูลจริงมักเหมาะกว่า — ลิงก์ที่เสียจะไม่ทำให้ประวัติผู้ใช้ใช้งานไม่ได้ เพิ่ม deleted_at TIMESTAMPTZ และกรองด้วย WHERE deleted_at IS NULL ในทุกคำค้น
แผนภาพ ER ในรูปคำบรรยาย
users (1) -< (∞) posts (1) -< (∞) comments
นอกจากนี้: users (1) -< (∞) comments, posts (∞) >-< (∞) tags
สรุปทบทวน
การออกแบบสคีมาเริ่มจากเอนทิตี ความสัมพันธ์ และคาร์ดินัลลิตี
- ใช้ PK แบบตัวแทนในทุกตาราง
- FK ใช้ประกาศความสัมพันธ์
- เลือก Cascade หรือ Restrict ให้ตรงกับเจตนาทางธุรกิจ
- ความสัมพันธ์หลายต่อหลาย = ตารางเชื่อม
ตรวจสอบความเข้าใจ
ในความสัมพันธ์แบบหนึ่งต่อหลายระหว่างโพสต์กับความคิดเห็น คีย์นอกอยู่ที่ใด
คำถามที่พบบ่อย
บทเรียน “การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น”
วาดแผนภาพ ER ระบุเอนทิตีและความสัมพันธ์ แล้วแปลงเป็นสคีมา SQL ที่ทำให้เป็นบรรทัดฐาน คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น
- การเลือกคีย์และชนิดข้อมูล
- ดัชนีสำหรับคำค้นที่พบบ่อย
- การเติมข้อมูลทดสอบลงฐานข้อมูล