feat: add chapter 07-database-and-backend specs

This commit is contained in:
2026-09-05 22:15:28 +08:00
parent 405cab3828
commit d6c371f485
8 changed files with 858 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
# مشخصات درس‌نامه: داده و دیتابیس چیست (Database Fundamentals)
- **شناسه در سیلابس:** `L7.2`
- **فصل:** فصل ۷: داده و بک‌اند (Ch 7)
- **نوع محتوا:** 📘 درس‌نامه متنی
- **زمان تقریبی مطالعه:** ۱۲ دقیقه
- **پیش‌نیازهای مستقیم:** `L7.1` (اهداف فصل هفتم)
---
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درس‌نامه باید بتواند:
- [ ] **درک کند (Understand):** پایگاه داده (Database) چیست و استعاره «اکسل ابرقدرت و بدون کرش» چگونه ماهیت جداول، سطرها و ستون‌ها را تبیین می‌کند.
- [ ] **درک کند (Understand):** مفاهیم ساختاری جدول: **ستون (Column)، سطر یا رکورد (Row/Record)، کلید اصلی (Primary Key)، و انواع داده (Data Types: متن، عدد، تاریخ، بولین)** را توضیح دهد.
- [ ] **تحلیل/ارزیابی کند (Evaluate):** تفاوت پایگاه‌های داده رابطه‌ای (SQL نظیر PostgreSQL) را با پایگاه‌های داده سندرومحور (NoSQL) مقایسه کرده و چرایی برتری PostgreSQL را درک کند.
- [ ] **به‌کار ببندد (Apply):** ساختار دو جدول اصلی پروژه محوری (جدول `projects` و جدول `site_settings`) را روی کاغذ یا بوم معماری داده رسم و فیلدهای آن‌ها را مشخص کند.
---
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
### آنچه باید پوشش داده شود (In-Scope):
1. **استعاره فایل اکسل ابرقدرت (Superpowered Excel):**
* پایگاه داده در ساده‌ترین تعریف، مانند یک دفترچه اکسل بسیار سریع، امن و آنلاین است که میلیون‌ها کاربر می‌توانند هم‌زمان و بدون کرش کردن، اطلاعات را در آن بخوانند یا ذخیره کنند.
2. **کالبدشکافی ارکان پایگاه داده:**
* **جدول (Table):** یک برگه اختصاصی برای یک موجودیت مشخص (مثل جدول پروژه‌ها یا جدول کاربران).
* **ستون یا فیلد (Column / Field):** یک ویژگی مشخص از موجودیت (مثل ستون عنوان، ستون عکس، ستون تاریخ ایجاد).
* **سطر یا رکورد (Row / Record):** یک نمونه واقعی ثبت‌شده در جدول (مثلاً سطر مربوط به پروژه «دستیار عادات هوشمند»).
* **کلید اصلی (Primary Key):** کد ملی یا شناسه یکتای هر سطر که هیچ دو سطری نمی‌توانند شناسه مشابه داشته باشند (معرفی شناسه جهانی UUID).
3. **انواع داده‌های پرکاربرد در دیتابیس:**
* `text` / `varchar`: برای رشته‌های متنی (عنوان، توضیحات).
* `boolean`: برای فیلدهای دوحالته درست/غلط (مثل فیلد `featured` برای پروژه‌های ویژه).
* `timestamp`: برای تاریخ و ساعت ایجاد (`created_at`).
* `text[]` (آرایه متنی): برای ذخیره تگ‌های تکنولوژی (`['React', 'Next.js']`).
4. **تفاوت SQL در برابر NoSQL:**
* دیتابیس‌های رابطه‌ای (SQL): ساختار منظم، جدول‌بندی مهندسی، داده‌های یکدست و امن (چرا PostgreSQL پادشاه دیتابیس‌های جهان است؟).
* دیتابیس‌های NoSQL: ذخیره آزاد اسناد به شکل JSON.
5. **نقشه داده‌های پروژه محوری (پورتفولیوی پویا):**
* **جدول ۱ (`projects`):** فیلدهای `id` (UUID), `title`, `description`, `image_url`, `tags`, `live_url`, `github_url`, `created_at`.
* **جدول ۲ (`site_settings`):** فیلدهای `id`, `site_title`, `meta_description`, `og_image_url`, `author_name`, `bio`.
6. **کال‌اوت‌های Quera:**
* `<details class="violet">`: چرا شناسه‌های تصادفی و طولانی (UUID) در وب مدرن بر شناسه‌های عددی ساده (`1, 2, 3`) ارجحیت دارند؟
* `<details class="red">`: تله انتخاب نوع داده اشتباه؛ ذخیره کردن تاریخ یا اعداد در قالب متن خام (`text`) و مصیبت‌های بعدی در جستجو و مرتب‌سازی.
### آنچه نباید وارد آن شویم (Out-of-Scope):
- نوشتن کوئری‌های پیچیده SQL با دستورات `JOIN`های چندگانه تو در تو.
- ثبت‌نام و ساخت عملی پروژه در داشبورد Supabase (درس‌های ۷.۴ و ۷.۵).
---
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یک‌خطی ساده |
| :--- | :--- | :--- |
| Relational Database (RDBMS) | پایگاه داده رابطه‌ای | سیستمی برای ذخیره و سازماندهی داده‌ها در قالب جداول دارای سطر و ستون منظم |
| Primary Key (PK) | کلید اصلی | فیلد منحصربه‌فردی که هویت یکتا و تمایز قطعی هر سطر در جدول را تضمین می‌کند |
| UUID (Universally Unique ID) | شناسه جهانی یکتا | رشته متنی تصادفی و ۳۶ کاراکتری که احتمال تکرار آن در کل جهان نزدیک به صفر است |
| Data Types | انواع داده | فرمت‌های معین برای مقادیر مجاز هر ستون (نظیر متن، عدد، تاریخ و منطقی) |
| PostgreSQL | پستگرس‌کیو‌ال | پیشرفته‌ترین، پایدارترین و محبوب‌ترین موتور پایگاه داده متن‌باز رابطه‌ای در جهان |
---
## ۴. جایگاه‌های تصاویر و نمودارها (Visual & Diagram Placeholders)
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` قرار گرفته و در قالب جدول تک‌خانه‌ای وسط‌چین با کپشن تفصیلی درج شوند:
1. **تصویر کاور درس:** `images/cover.png`
* **موضوع:** کاور مدرن با تم تیره و یک استوانه بلورین دیتابیس با طبقه‌های نوری منظم سطرها و ستون‌های داده که در فضا شناور است.
2. **استعاره اکسل در برابر پایگاه داده:** `images/excel-vs-database-analogy.png`
* **موضوع:** تصویر مقایسه‌ای: شیت ساده اکسل در برابر پایگاه داده رابطه‌ای با هزاران رکورد سریع و ایمن.
3. **آناتومی یک جدول پایگاه داده:** `images/database-table-anatomy.png`
* **موضوع:** اینفوگرافیک برچسب‌گذاری‌شده جدول: ستون‌ها، ردیف‌ها، کلید اصلی UUID و نوع داده هر ستون.
4. **مقایسه ساختار SQL و NoSQL:** `images/sql-vs-nosql-comparison.png`
* **موضوع:** دیاگرام مقایسه جداول ساخت‌یافته رابطه‌ای PostgreSQL در برابر اسناد انعطاف‌پذیر JSON.
5. **نقشه جداول پورتفولیوی پویا:** `images/portfolio-tables-schema.png`
* **موضوع:** تصویر شماتیک دو جدول `projects` و `site_settings` با نام ستون‌ها و انواع داده مجاز.
---
## ۵. بخش‌بندی و ساختار محتوایی پیشنهادی درس‌نامه (`README.md`)
1. **تیتر اصلی:** `# داده و دیتابیس چیست: راز ماندگاری اطلاعات در دنیای دیجیتال`
2. **مقدمه:** چرا بدون پایگاه داده، بهترین وب‌سایت‌ها با بستن تب مرورگر همه چیز را فراموش می‌کنند؟
3. **جدول کاور درس**
4. **استعاره فایل اکسل ابرقدرت:** کالبدشکافی مفهوم پایگاه داده به زبان ساده.
5. **چهار رکن اساسی هر دیتابیس:**
* جدول (Table)، ستون (Column)، سطر (Row) و کلید اصلی (Primary Key).
6. **باکس نکته Quera (`<details class="violet">`):** چرا در پروژه‌های نوین از شناسه UUID استفاده می‌کنیم؟
7. **انواع داده‌های پرکاربرد: متن، عدد، تاریخ و بولین:** جلوگیری از خطاهای رایج.
8. **پایگاه‌های داده رابطه‌ای (SQL) در برابر NoSQL:** چرا PostgreSQL انتخاب استاندارد است؟
9. **طراحی نقشه داده‌های پورتفولیوی پویا:** کالبدشکافی جداول پروژه‌ها و تنظیمات سئو.
10. **باکس هشدار Quera (`<details class="red">`):** عواقب انتخاب اشتباه نوع داده ستون‌ها.
11. **جمع‌بندی درس‌نامه:** تسلط بر مفاهیم بنیادین داده و ورود به شاهراه ارتباطی فرانت‌اند با بک‌اند (APIها).
---
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- [ ] مفاهیم جدول، سطر، ستون و کلید اصلی با زبان ملموس و روان شرح داده شده باشند.
- [ ] انواع داده‌های اصلی به همراه دلیل نیاز به نوع‌های معین تدریس شوند.
- [ ] ساختار جداول پروژه پورتفولیو (`projects` و `site_settings`) در متن مشخص گردند.
- [ ] تفاوت SQL و NoSQL با تاکید بر جایگاه PostgreSQL تبیین شده باشد.