Thuta Learning
ရှာဖွေရန်
ProjectsData & Databasesbeginner

Project 2 — Seed Data နှင့် Reporting

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Project 2 — Seed Data နှင့် Reporting concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • နမူနာ SQL/command ကို ကိုယ်တိုင် run ပြီး output စစ်နိုင်ရန်
  • Tutorial Platform project နှင့် production scenario တွင် အသုံးချနိုင်ရန်

နားလည်ထားရမယ့် အချက်

Seed script က developer/test environment ကို repeatable ဖြစ်စေပြီး random IDs ကိုခန့်မှန်းမည့်အစား natural unique keys နှင့် `RETURNING`/CTE ကိုသုံးသင့်ပါတယ်။ `ON CONFLICT` upsert သုံးရာမှာ overwrite ခွင့်ရှိသော columns ကိုတိတိကျကျသတ်မှတ်ပါ။ Report query က zero-count groups မပျောက်အောင် LEFT JOIN ကိုသုံးရနိုင်ပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

PostgreSQL course၊ lessons နှင့် demo learner များကို upsert လုပ်ပြီး completion percentage report ထုတ်မယ်။ Percentage တွက်ရာမှာ integer division နဲ့ divide-by-zero ကို `100.0` နှင့် `NULLIF` ဖြင့်ကိုင်တွယ်ပါ။

အတူတူ စမ်းရေးကြည့်မယ်

sql
INSERT INTO app.tutorials (title, slug, is_published, published_at)
VALUES ('PostgreSQL', 'postgresql', true, now())
ON CONFLICT (slug) DO UPDATE
SET title = EXCLUDED.title
RETURNING tutorial_id;

SELECT e.enrollment_id, u.display_name, t.title,
       round(100.0 * count(*) FILTER (WHERE p.completed)
             / NULLIF(count(p.lesson_id), 0), 1) AS completion_percent
FROM app.enrollments e
JOIN app.users u USING (user_id)
JOIN app.tutorials t USING (tutorial_id)
LEFT JOIN app.lesson_progress p USING (enrollment_id, tutorial_id)
GROUP BY e.enrollment_id, u.display_name, t.title;
You should see
ပြန်run လို့ရသော seed နှင့် learner completion report ရမည်။

၅ မိနစ် စမ်းကြည့်

Lesson မစသေး၊ အလယ်ရောက်နှင့်ပြီးဆုံး learner သုံးမျိုး seed လုပ်ပြီး report output ကိုစစ်ပါ။

သတိလေးတစ်ချက်

Seed upsert က production user-edited fields ကို overwrite မလုပ်စေရန် environment နဲ့ column ownership ကိုရှင်းပါ။

PostgreSQL — INSERTPostgreSQL Global Development Group

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Seed upsert က production user-edited fields ကို overwrite မလုပ်စေရန် environment နဲ့ column ownership ကိုရှင်းပါ။
  • နမူနာ code ကို production data ပေါ် တိုက်ရိုက်မစမ်းဘဲ local/test database နှင့် recoverable backup ပေါ်တွင် အရင်အတည်ပြုပါ။

လေ့ကျင့်ခန်း

Lesson မစသေး၊ အလယ်ရောက်နှင့်ပြီးဆုံး learner သုံးမျိုး seed လုပ်ပြီး report output ကိုစစ်ပါ။

You'll know it worked when: ပြန်run လို့ရသော seed နှင့် learner completion report ရမည်။

Project 2 — Seed Data နှင့် Reporting | Thuta Learning