0Pricing
SQL Academy · บทเรียน

การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น

วาดแผนภาพ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น
  2. การเลือกคีย์และชนิดข้อมูล
  3. ดัชนีสำหรับคำค้นที่พบบ่อย
  4. การเติมข้อมูลทดสอบลงฐานข้อมูล
← กลับไปที่ SQL Academy