# مشخصات درس‌نامه: داده و دیتابیس چیست (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:** * `
`: چرا شناسه‌های تصادفی و طولانی (UUID) در وب مدرن بر شناسه‌های عددی ساده (`1, 2, 3`) ارجحیت دارند؟ * `
`: تله انتخاب نوع داده اشتباه؛ ذخیره کردن تاریخ یا اعداد در قالب متن خام (`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 (`
`):** چرا در پروژه‌های نوین از شناسه UUID استفاده می‌کنیم؟ 7. **انواع داده‌های پرکاربرد: متن، عدد، تاریخ و بولین:** جلوگیری از خطاهای رایج. 8. **پایگاه‌های داده رابطه‌ای (SQL) در برابر NoSQL:** چرا PostgreSQL انتخاب استاندارد است؟ 9. **طراحی نقشه داده‌های پورتفولیوی پویا:** کالبدشکافی جداول پروژه‌ها و تنظیمات سئو. 10. **باکس هشدار Quera (`
`):** عواقب انتخاب اشتباه نوع داده ستون‌ها. 11. **جمع‌بندی درس‌نامه:** تسلط بر مفاهیم بنیادین داده و ورود به شاهراه ارتباطی فرانت‌اند با بک‌اند (APIها). --- ## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer) - [ ] مفاهیم جدول، سطر، ستون و کلید اصلی با زبان ملموس و روان شرح داده شده باشند. - [ ] انواع داده‌های اصلی به همراه دلیل نیاز به نوع‌های معین تدریس شوند. - [ ] ساختار جداول پروژه پورتفولیو (`projects` و `site_settings`) در متن مشخص گردند. - [ ] تفاوت SQL و NoSQL با تاکید بر جایگاه PostgreSQL تبیین شده باشد.