feat: add chapter 07-database-and-backend specs
This commit is contained in:
@@ -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 تبیین شده باشد.
|
||||
Reference in New Issue
Block a user