آموزش ویدیویی پایگاه داده، SQL و NoSQL و ...
2.09K subscribers
228 photos
116 videos
1.85K links
* پیشنهادات، تبلیغات و تبادل و ... : @ma_limbs

* تعرفه تبلیغات:
https://t.me/+w-o6dHW5O31jMWNk
Download Telegram
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏تمرین عملی با INNER JOIN

‏یادت نره، INNER JOIN فقط ردیف‌هایی رو برمی‌گردونه که تو هر دو جدول مقدار داشته باشن! مثل پیدا کردن جفت جوراب‌ها 🧦🧦

‏قبل از نوشتن کوئری، یه نگاه به دیاگرام ER بنداز. اینجوری می‌فهمی کدوم فیلدها کلید مشترک دارن! 🔑💡

‏وقتی INNER JOIN می‌زنی، حتماً اسم جدول رو قبل از اسم فیلد بیار. اینجوری کوئری‌هات خواناتر می‌شن! 👌

‏برای تمرین، دوتا جدول ساده بساز و باهاشون بازی کن. اینجوری قشنگ دستت راه می‌افته! 🔥

‏یه مثال ساده بزن! مثلاً جدول دانشجوها و جدول نمره‌ها. بعد ببین کی‌ها نمره گرفتن! 🎓📝

‏اگه یه جدول، چندتا کلید خارجی داشته باشه، می‌تونی چندتا INNER JOIN پشت سر هم بزنی!🤯

‏بعد از نوشتن کوئری، حتماً با چندتا داده‌ی مختلف تستش کن. اینجوری خیالت راحت می‌شه!

‏توی WHERE شرط بذار تا فقط داده‌های مورد نظرت رو فیلتر کنی. اینجوری کوئری‌هات سریع‌تر می‌شن! ⚡️

‏از alias استفاده کن! اسم‌های مستعار برای جدول‌هات انتخاب کن تا کوئری‌هات کوتاه‌تر بشن! 😎

‏یادت باشه که ترتیب جدول‌ها توی INNER JOIN مهم نیست. نتیجه یکی‌ئه! 😉


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏کاربرد SQLite در IoT

نکته 1:
‏SQLite به دلیل حجم کم کد، ردپای حافظه کوچک (Small Memory Footprint) و عدم نیاز به سرور، به عنوان یک راهکار ایده‌آل برای ذخیره‌سازی داده‌ها در دستگاه‌های اینترنت اشیا (IoT) شناخته می‌شود.

نکته 2:
‏در محیط‌های IoT با منابع محاسباتی محدود، معماری تعبیه‌شده (Embedded) SQLite امکان پردازش داده‌های محلی را بدون تحمیل سربار عملیاتی یک RDBMS کامل فراهم می‌سازد.

نکته 3:
‏قابلیت حفظ یکپارچگی داده‌ها از طریق تراکنش‌های ACID در SQLite، برای ذخیره‌سازی امن و قابل اطمینان داده‌های حسگرها و رخدادها در دستگاه‌های IoT حیاتی است.

نکته 4:
‏SQLite امکان ذخیره‌سازی موقت داده‌ها (Buffering) را در دستگاه‌های IoT که اتصال شبکه ناپایدار دارند، فراهم می‌آورد تا داده‌ها قبل از ارسال به ابر (Cloud) یا سرور، به صورت محلی حفظ شوند.

نکته 5:
‏پایگاه داده SQLite در دستگاه‌های IoT برای ذخیره‌سازی تنظیمات پیکربندی، تاریخچه رخدادها، و فراداده‌های حسگرها در یک ساختار رابطه‌ای سازمان‌یافته به کار می‌رود.

نکته 6:
‏قابلیت حمل فایل-محور SQLite، فرآیندهایی نظیر به‌روزرسانی سیستم‌عامل (Firmware Updates) یا بازیابی داده‌ها را در دستگاه‌های IoT با سادگی کپی یا جایگزینی فایل تسهیل می‌کند.

نکته 7:
‏استفاده از SQLite در IoT به دلیل ماهیت تک‌فرآیندی و عدم نیاز به مدیریت همزمان چند کاربر، به خوبی با الگوی عملیاتی اکثر گره‌های (Nodes) حسگر منفرد تطابق دارد.

نکته 8:
‏SQLite از عملکرد بالایی در عملیات خواندن (Read-Heavy Operations) برخوردار است که برای تحلیل سریع و محلی داده‌های حسگر در زمان جمع‌آوری آن‌ها مورد نیاز است.

نکته 9:
‏API‌های توسعه SQLite در محیط‌های برنامه‌نویسی مختلف، پشتیبانی لازم برای ادغام آسان و کم‌هزینه موتور پایگاه داده را در سیستم‌عامل‌های سبک IoT فراهم می‌کنند.

نکته 10:
‏قابلیت استفاده از عملکرد SQL استاندارد امکان فیلتر، تجمیع و تحلیل داده‌های جمع‌آوری شده از حسگرها را به صورت محلی در خود دستگاه IoT، پیش از انتقال، فراهم می‌سازد.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQL

🟣 موضوع : ‏مزایا و معایب ایندکس‌گذاری

نکته :

‏بهترین حالت اینه که بین حجم دیتابیس و سرعت جستجو یه تعادل پیدا کنی. ⚖️


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #یادگیری_ماشین

🟣 موضوع : ‏مدل‌های پیش‌بینی (Predictive Models)

🟢 سوال :

‏کدام یک از موارد زیر یک روش یادگیری نظارت شده (Supervised Learning) است؟

گزینه 1:
‏خوشه‌بندی
گزینه 2:
‏کاهش ابعاد
گزینه 3:
‏رگرسیون
گزینه 4:
‏تقویت یادگیری

🔵 گزینه صحیح: 3

🟢 توضیح :

‏رگرسیون یک روش یادگیری نظارت شده است که در آن مدل با استفاده از داده‌های برچسب‌دار آموزش داده می‌شود.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQL

🟣 موضوع : ‏دستور COMMIT و ROLLBACK

نکته :

‏مثلاً تو سیستم بانکی! انتقال پول یا کامل انجام می‌شه (COMMIT) یا اصلا انجام نمی‌شه (ROLLBACK). منطقیه، نه؟ 🏦💰


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQL

🟣 موضوع : ‏محدودیت‌های داده (Constraints): NOT NULL, UNIQUE

نکته :

‏اگه خواستی بعداً محدودیت اضافه کنی، از دستور ALTER TABLE استفاده کن. انعطاف‌پذیر باش 🤸‍♀️.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏استفاده از json_each

نکته 1:
‏json_each یه تابع جادوییه که بهت اجازه می‌ده داده‌های JSON (مثل آرایه‌ها و آبجکت‌ها) رو به صورت موقت به ردیف‌های جدول تبدیل کنی. 🤯💡

نکته 2:
‏کاربرد اصلیش اینه که بتونی روی هر عنصر از یه آرایه JSON حلقه‌ بزنی و باهاشون مثل ردیف‌های معمولی جدول رفتار کنی. 🔄🔥

نکته 3:
‏وقتی از json_each استفاده می‌کنی، یه جدول موقت بهت می‌ده که ستون‌های خاصی مثل key (برای آبجکت‌ها)، value (مقدار هر عنصر) و fullkey داره. 📝

نکته 4:
‏برای آبجکت‌های JSON (اونایی که با شروع می‌شن)، ستون key اسم کلید رو بهت می‌ده و ستون value مقدار متناظر رو. 🔑

نکته 5:
‏برای آرایه‌های JSON (اونایی که با [] شروع می‌شن)، ستون key اندیس عنصر رو (از صفر شروع می‌شه) و value خود عنصر رو بهت می‌ده. 🔢

نکته 6:
‏تو می‌تونی از json_each تو قسمت FROM کوئری استفاده کنی، انگار که یه جدول معمولیه. این کار بهت اجازه می‌ده از قدرت JOIN و WHERE استفاده کنی. 🔗

نکته 7:
‏مثال: اگه یه آرایه از محصولات تو JSON داری، با json_each می‌تونی اونها رو باز کنی و محصولاتی رو که قیمتشون بالای ۱۰۰ تومنه، فیلتر کنی. 💰🔍

نکته 8:
‏می‌تونی از json_each برای flatten کردن (مسطح کردن) داده‌های تو در توی JSON استفاده کنی تا تحلیل و گزارش‌گیری خیلی راحت‌تر بشه. 📈

نکته 9:
‏اگه تو JSONت یه آرایه داری و می‌خوای فقط ببینی چندتا عضو داره، می‌تونی از SELECT COUNT(*) FROM jsoneach(jsoncolumn, '$.array_path') استفاده کنی. 📊

نکته 10:
‏نکته پیشرفته: ستون parent و root هم تو خروجی هستن که برای کار کردن با ساختارهای JSON خیلی تو در تو به دردت می‌خورن. 🌳😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏محدودیت DEFAULT

نکته 1:
‏محدودیت DEFAULT یک قید مهم در تعریف ستون است که برای تخصیص یک مقدار از پیش تعیین شده به آن ستون، در صورتی که در حین عملیات درج (INSERT) مقداری به صورت صریح ارائه نشود، به کار می‌رود.

نکته 2:
‏هدف اصلی از DEFAULT، تضمین این است که ستون‌های خاصی هرگز دارای مقدار NULL نباشند و همیشه با یک مقدار معتبر و منطقی پر شوند.

نکته 3:
‏مقدار پیش‌فرض می‌تواند یک مقدار ثابت (مانند یک عدد، رشته یا تاریخ)، یک عبارت محاسباتی ساده، یا یک تابع اسکالر داخلی SQLite (نظیر CURRENTDATE، CURRENTTIME یا CURRENT_TIMESTAMP) باشد.

نکته 4:
‏اگر ستونی با قید DEFAULT نیز دارای قید NOT NULL باشد، سیستم تضمین می‌کند که در صورت عدم ارائه مقدار توسط کاربر، مقدار پیش‌فرض جایگزین شده و خطای نقض قید رخ ندهد.

نکته 5:
‏مقدار پیش‌فرض صرفاً زمانی فعال می‌شود که سطر جدیدی درج شود و ستون مربوطه در لیست ستون‌های دستور INSERT به طور کامل حذف شده باشد یا از کلمه کلیدی DEFAULT استفاده شده باشد.

نکته 6:
‏اگر در دستور INSERT، مقدار NULL صراحتاً برای ستونی با قید DEFAULT ارائه شود، آنگاه مقدار NULL ذخیره خواهد شد (به شرطی که قید NOT NULL بر روی ستون اعمال نشده باشد).

نکته 7:
‏در SQLite، مقدار یا عبارت پیش‌فرض در زمان تعریف جدول ارزیابی می‌شود و در فراداده‌های پایگاه داده ذخیره می‌گردد.

نکته 8:
‏استفاده از توابعی مانند datetime('now') یا سایر توابع زمانی به عنوان مقدار DEFAULT، تاریخ و زمان لحظه درج سطر را به صورت پویا ثبت می‌کند و خاصیت زمانی داده را حفظ می‌نماید.

نکته 9:
‏اگر یک ستون در جدول موجود، قید DEFAULT نداشته باشد و بعداً این قید از طریق دستور ALTER TABLE اضافه شود، این قید صرفاً بر روی سطرهای جدید اعمال می‌شود و بر داده‌های موجود تأثیری ندارد.

نکته 10:
‏محدودیت DEFAULT ابزاری کارآمد برای ساده‌سازی عملیات درج و کاهش نیاز به تعیین صریح مقادیر برای ستون‌هایی است که دارای مقادیر متداول و تکراری هستند.

نکته 11:
`


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏اتصال بر اساس چندین ستون (Multi-column JOIN)

‏وقتی می‌خوای دو تا جدول رو با هم وصل کنی و فقط یه ستون کافی نیست، نگران نباش! 🤔 می‌تونی از چند تا ستون برای JOIN کردن استفاده کنی. خیلی کاربردیه!

‏فرمولش اینه: ON (table1.col1 = table2.col1 AND table1.col2 = table2.col2). هر چقدر شرط دقیق‌تر باشه، نتیجه بهتره! 🎯

‏حواست باشه که نوع داده (Data Type) ستون‌هایی که داری JOIN می‌کنی با هم یکی باشه. مثلاً اگه یکی INT و اون یکی VARCHAR باشه، ممکنه به مشکل بخوری! 🚫💡

‏برای اینکه کوئری‌هات مثل موشک پرواز کنن 🚀، روی ستون‌هایی که تو شرط JOIN استفاده می‌کنی، ایندکس (Index) بذار. معجزه می‌کنه!

‏اگه حس کردی JOIN با چند ستون کد رو پیچیده می‌کنه، می‌تونی از JOINهای پشت سر هم (Nested JOINs) استفاده کنی. ولی معمولاً Multi-column JOIN خوانایی بیشتری داره. 😉

‏وقتی از چندین ستون برای JOIN استفاده می‌کنی، در واقع داری یه کلید ترکیبی (Composite Key) رو شبیه‌سازی می‌کنی. اینجوری دقت داده‌هات خیلی بالا می‌ره. 📈

‏برای اینکه کد خوانا‌تر بشه و گیج نشی، همیشه برای جدول‌هات اسم مستعار (Alias) بذار. مثلاً FROM Customers AS A JOIN Orders AS B. خیلی کمکت می‌کنه! 👍

‏یادت باشه اگه یکی از ستون‌های JOINت NULL باشه، اون ردیف‌ها مچ نمیشن! 🙅‍♀️ اگه NULL برات مهمه، باید با دقت ازش استفاده کنی یا یه راه دیگه پیدا کنی.

‏یه مثال عملی: فرض کن می‌خوای سفارش‌های یه مشتری خاص رو ببینی، با userid و orderdate یا customername و customeremail با هم JOIN کن تا دقیقاً اون چیزی که می‌خوای رو پیدا کنی! 🕵️‍♂️

‏از JOIN با چند ستون نترس، ولی زیاده‌روی هم نکن! ⚠️ اگه تعداد ستون‌ها خیلی زیاد بشه، هم کوئری پیچیده میشه و هم ممکنه کارایی بیاد پایین. تعادل رو حفظ کن! ⚖️


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏مبانی پایگاه داده رابطه‌ای

نکته 1:
‏SQLite یه نسخه کوچیک و سبک از پایگاه داده‌های رابطه‌ایه؛ یعنی بدون سرویس جداگونه هم کار می‌کنه و راحت همه‌جا میاد بالا 😄

نکته 2:
‏تو SQLite لازم نیست از قبل سرور نصب کنی؛ فقط فایل دیتابیسه و همین باعث می‌شه خیلی سریع پروژه‌تو راه بندازی 🔥

نکته 3:
‏ساختار جدول‌ها در SQLite تماما رابطه‌ایه، پس با همون مفاهیم کلاسیک مثل سطر، ستون، Primary Key سروکار داری 💡📊

نکته 4:
‏برای پروژه‌های موبایل عالیه چون هم کم‌حجمه و هم خیلی سریع کار می‌کنه 📱

نکته 5:
‏SQLite امکان استفاده از JOIN رو می‌ده پس می‌تونی چندتا جدول رو به‌صورت حرفه‌ای به هم وصل کنی 🔗💥

نکته 6:
‏فقط یه فایل دیتابیس ذخیره می‌شه؛ یعنی خیلی راحت می‌تونی بک‌آپ بگیری یا جا‌به‌جاش کنی 🎒📁

نکته 7:
‏به خاطر رابطه‌ای بودنش می‌تونی داده‌هارو نرمال‌سازی کنی و از تکرار جلوگیری کنی 📐

نکته 8:
‏SQLite تراکنش‌ها رو پشتیبانی می‌کنه؛ یعنی عملیاتت یا کامل انجام می‌شن یا کامل لغو می‌شن 🔒✔️

نکته 9:
‏برای پروژه‌های کوچک و متوسط واقعا بهترین انتخابه و حتی تو برنامه‌های بزرگ هم برای کش و ذخیره موقت فوق‌العاده‌ست 💡🔥

نکته 10:
‏با وجود سبک بودن، انواع داده‌ها و محدودیت‌ها (Constraints) رو خوب پشتیبانی می‌کنه؛ پس مدل‌سازی دیتابیس همچنان اصولی می‌مونه 🧩


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏معماری SQLite

نکته 1:
‏معماری SQLite طوری طراحی شده که کل دیتابیس فقط یه فایل روی دیسکه؛ ساده و جمع‌وجور 💡

نکته 2:
‏هسته SQLite یه موتور SQL کامل داره که بدون نیاز به سرویس جداگانه اجرا می‌شه 🔥

نکته 3:
‏پردازش کوئری‌ها توی خود برنامه انجام می‌شه چون SQLite کتابخونه‌ست نه سرور مستقل 📚

نکته 4:
‏لایه ذخیره‌سازی SQLite از ساختار صفحات (Pages) استفاده می‌کنه تا سریع و کارآمد داده‌ها رو بخونه 📄

نکته 5:
‏کل معماریش روی اصول ACID بنا شده، یعنی تراکنش‌ها امن و قابل اعتمادن 🔒💡

نکته 6:
‏SQLite از B-Tree برای ذخیره‌سازی جداول و ایندکس‌ها استفاده می‌کنه؛ سریع و دقیق 📊

نکته 7:
‏مدل قفل‌گذاریش مبتنی بر فایل‌ـه، پس برای هم‌زمانی سبک خوبه ولی برای کاربرهای زیاد محدود می‌شه ⚠️🔥

نکته 8:
‏به خاطر معماری کتابخانه‌ای، می‌تونی SQLite رو داخل هر برنامه‌ای جاسازی کنی بدون نیاز به تنظیمات اضافه 🧩💡

نکته 9:
‏SQLite حافظه رو هوشمندانه مصرف می‌کنه و حتی روی سیستم‌های ضعیف هم خیلی خوب اجرا می‌شه 🚀

نکته 10:
‏معماری ساده ولی حرفه‌ایش باعث شده بیش از ۳ میلیارد دستگاه ازش استفاده کنن؛ قابل‌اعتماد و امتحان‌پس‌داده 🙌🔥


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQL

🟣 موضوع : ‏Database Migration و ابزارها (Flyway, Liquibase)

نکته :

‏کی کدومو انتخاب کنم؟ 🧐 اگه تیمت با SQL راحته و دنبال سادگی هستی، Flyway عالیه. اما اگه نیاز به قابلیت‌های پیچیده‌تر مثل Rollback خودکار یا پشتیبانی از دیتابیس‌های مختلف با یک کد داری، Liquibase شاید گزینه بهتری باشه. هر دو عالین، فقط بستگی به نیازت داره! 👍


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏مدیریت فایل پایگاه داده

نکته 1:
‏دیتابیس SQLite فقط یه فایل تکی (با پسوند .db یا هر چی) هست. مدیریت فایل دیتابیس، یعنی مدیریت همین یه دونه فایل! 📦💾💡

نکته 2:
‏برای بک‌آپ گرفتن، کافیه این فایل رو کپی کنی. البته مطمئن شو که موقع کپی، هیچ برنامه‌ای ازش استفاده نکنه، وگرنه فایل ممکنه خراب بشه. ✂️

نکته 3:
‏اگه از حالت WAL (Write-Ahead Logging) استفاده می‌کنی، دیتابیس تو یه فایل اصلی و دو تا فایل کمکی .wal و .shm داره. برای جابجایی یا بک‌آپ باید هر سه تا رو منتقل کنی. ⚠️🔥

نکته 4:
‏برای کاهش حجم فایل دیتابیس (بعد از حذف و آپدیت زیاد)، حتماً از دستور VACUUM استفاده کن. این جاروبرقی دیتابیسه! 🧹

نکته 5:
‏اگه می‌خوای دیتابیس رو رمزگذاری کنی، چون SQLite خودش ابزار داخلی نداره، باید از افزونه‌هایی مثل SQLCipher استفاده کنی تا فایل رو قفل کنه. 🔒

نکته 6:
‏برای انتقال دیتابیس به یه کامپیوتر دیگه، فقط کافیه فایل .db رو کپی کنی. نیازی به export یا import پیچیده نیست. 🚀

نکته 7:
‏وقتی دیتابیس رو باز می‌کنی و اون فایل وجود نداره، SQLite به صورت خودکار یه فایل جدید برات می‌سازه. نیازی به CREATE DATABASE نیست. 🛠️

نکته 8:
‏اگه برنامه‌های زیادی همزمان می‌خوان از فایل دیتابیس استفاده کنن، حتماً WAL Mode رو فعال کن تا مشکل قفل شدن (Locking) برای خواندن‌ها پیش نیاد. 👥

نکته 9:
‏برای حذف کامل دیتابیس، فقط کافیه فایل .db (و اگه WAL فعاله، فایل‌های .wal و .shm) رو پاک کنی. به همین سادگی! 🗑️

نکته 10:
‏اگر دیتابیس تو آسیب دیده (Corrupted شده)، تنها راه مطمئن، جایگزینی فایل خراب با یه فایل پشتیبان سالم هست. مدیریت فایل یعنی داشتن بک‌آپ خوب! 💯😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏ایجاد پایگاه داده در حافظه

نکته 1:
‏ایجاد یک پایگاه داده در حافظه (In-Memory Database) در SQLite با تعیین نام فایل ویژه :memory: در زمان برقراری اتصال توسط API، محقق می‌شود.

نکته 2:
‏زمانی که اتصال با نام :memory: برقرار می‌شود، ساختار پایگاه داده به جای تخصیص فضای دیسک، در حافظه اصلی (RAM) سیستم میزبان ایجاد و نگهداری می‌گردد.

نکته 3:
‏این نوع پایگاه داده به صورت پیش‌فرض غیرمشترک (Unshared) است؛ یعنی به محض بسته شدن اتصال ایجادکننده، تمام داده‌های ذخیره‌شده و ساختار شمای آن از حافظه پاک می‌شوند.

نکته 4:
‏برای ایجاد یک پایگاه داده حافظه که قابلیت اشتراک‌گذاری بین چندین اتصال را داشته باشد، باید از URI File Names با فرمت file::memory:?cache=shared استفاده شود.

نکته 5:
‏پایگاه داده‌های حافظه برای تست‌های عملکردی (Performance Testing) و تست‌های واحد (Unit Testing) بسیار مناسب هستند، زیرا فرآیند ایجاد و تخریب محیط (Teardown) با سرعت بالا انجام می‌گیرد.

نکته 6:
‏پس از ایجاد، می‌توان با اجرای دستورات DDL (مانند CREATE TABLE) و DML (مانند INSERT)، ساختار و داده‌های مورد نیاز را به پایگاه داده موجود در حافظه اضافه کرد.

نکته 7:
‏حجم داده‌هایی که می‌توانند در پایگاه داده حافظه ذخیره شوند، مستقیماً توسط فضای RAM آزاد سیستم عامل محدود می‌شود و با افزایش حجم، خطر خطای تخصیص حافظه وجود دارد.

نکته 8:
‏به دلیل حذف کامل عملیات ورودی/خروجی دیسک، پایگاه داده ایجاد شده در حافظه، حداکثر سرعت و کارایی را در اجرای پرس‌وجوهای پردازشی (CPU-Bound) ارائه می‌دهد.

نکته 9:
‏برای انتقال داده‌ها از یک پایگاه داده دیسکی به پایگاه داده حافظه، می‌توان از API پشتیبان‌گیری داخلی SQLite استفاده کرد تا فرآیند کپی به صورت کارآمد انجام شود.

نکته 10:
‏پایگاه داده حافظه فاقد ویژگی پایداری (Durability) است؛ لذا برای نگهداری داده‌های حیاتی و طولانی‌مدت که نیاز به بازیابی پس از قطع برق یا خاموشی سیستم دارند، مناسب نیست.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #یادگیری_ماشین

🟣 موضوع : ‏یادگیری ماشین: کاهش ابعاد - تفسیرپذیری پایین در برخی روش‌ها (مثل t-SNE, Autoencoders)

نکته :

‏برای اینکه بفهمی کدوم ویژگی‌ها مهم‌ترن، به واریانس توضیح داده شده توسط PCA نگاه کن! 🔥


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
📚 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏استفاده از json_each

نکته 1:
‏تابع json_each به عنوان یک تابع جدول‌ساز (Table-Valued Function) در SQLite عمل می‌کند که برای تجزیه یک سند JSON و استخراج عناصر آن به صورت ردیف‌های مجزا به کار می‌رود.

نکته 2:
‏این تابع برای تکرار (Iteration) بر روی عناصر یک آرایه JSON یا جفت‌های کلید-مقدار یک شیء JSON و تبدیل آن‌ها به یک ساختار رابطه‌ای موقت مورد استفاده قرار می‌گیرد.

نکته 3:
‏نحو استفاده از jsoneach به این صورت است که به عنوان بخشی از عبارت FROM در یک پرس‌وجوی SELECT به کار می‌رود، نظیر SELECT * FROM jsoneach(json_document).

نکته 4:
‏خروجی json_each شامل مجموعه‌ای از ستون‌های ثابت است که اطلاعاتی نظیر key (کلید برای اشیاء)، value (مقدار عنصر) و type (نوع داده JSON) را ارائه می‌دهد.

نکته 5:
‏ستون fullkey در خروجی این تابع، مسیر کامل JSON (JSON Path) را از ریشه تا عنصر جاری نمایش می‌دهد که برای بازیابی زمینه‌ای (Contextual Retrieval) مفید است.

نکته 6:
‏ستون parent حاوی مسیر JSON به عنصر والد است که امکان بازیابی ساختار سلسله‌مراتبی داده‌های JSON را در حین پیمایش فراهم می‌سازد.

نکته 7:
‏تکرار بر روی آرایه‌ها در json_each منجر به تولید ردیف‌هایی می‌شود که ستون key آن‌ها حاوی اندیس عددی عناصر آرایه (از صفر به بالا) خواهد بود.

نکته 8:
‏استفاده از json_each برای بسط داده‌های JSON (JSON Data Expansion) در پرس‌وجوهای پیچیده، به ویژه در ترکیب با عبارت JOIN، برای تحلیل‌های پیشرفته ضروری است.

نکته 9:
‏تابع jsoneach این قابلیت را دارد که با ارائه مسیر JSON به عنوان آرگومان دوم، پیمایش را از یک زیربخش مشخص از سند JSON آغاز کند، نظیر jsoneach(jsondocument, '$.arrayname').

نکته 10:
‏با استفاده از این تابع می‌توان به راحتی محتویات تودرتو (Nested Content) در سند JSON را به صورت سطوح مسطح شده (Flattened) بازیابی کرد و شرایط فیلترسازی SQL را بر روی آن‌ها اعمال نمود.


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏تراکنش‌ها در SQLite

نکته 1:
‏تراکنش (Transaction) چیه؟ 🤔 مثل یه سبد خریده که توش چند تا کار رو می‌ذاری و می‌خوای همه‌شون با هم انجام بشن یا هیچ‌کدوم انجام نشن! 🛒

نکته 2:
‏هدف تراکنش اینه که همه عملیات‌ها رو به صورت یه واحد غیرقابل تفکیک اجرا کنه. اگه یکی از کارها خراب شد، بقیه هم لغو می‌شن (Rollback). 🛑

نکته 3:
‏برای شروع یه تراکنش از دستور BEGIN TRANSACTION یا فقط BEGIN استفاده می‌کنی. از اینجا به بعد، دیگه هر کاری کنی موقتیه. 🎬

نکته 4:
‏اگه همه چیز خوب پیش رفت، باید با دستور COMMIT تراکنش رو نهایی کنی. اینجوری تغییراتت به طور دائمی توی دیتابیس ذخیره می‌شن. 💾

نکته 5:
‏اگه وسط کار یه مشکلی پیش اومد یا پشیمون شدی، از دستور ROLLBACK استفاده کن. دیتابیس برمی‌گرده به قبل از BEGIN. انگار هیچ اتفاقی نیفتاده!

نکته 6:
‏یکی از مهم‌ترین ویژگی‌های تراکنش‌ها، ACID بودنه. به‌خصوص Atomicity (تجزیه‌ناپذیری) که می‌گه یا همه یا هیچ! Consistency هم مهمه. ⚛️💡

نکته 7:
‏تو SQLite، اگه یه دستور INSERT, UPDATE یا DELETE رو بدون BEGIN اجرا کنی، SQLite به صورت خودکار یه تراکنش کوچیک دورش می‌سازه و COMMIT می‌کنه. 🤓

نکته 8:
‏استفاده از تراکنش‌ها، به‌خصوص وقتی تعداد زیادی INSERT داری، می‌تونه سرعت عملیات نوشتن رو به شدت افزایش بده. به جای ۱۰۰۰ تراکنش، فقط ۱ تراکنش داری! 🚀🔥

نکته 9:
‏برای مدیریت تراکنش‌های پیچیده، می‌تونی از Savepoints استفاده کنی. اینا مثل یه سری نقطه عطف تو دل تراکنش هستن که می‌تونی بهشون برگردی. 🚩

نکته 10:
‏وقتی دو نفر همزمان سعی می‌کنن یه جدول رو تغییر بدن، تراکنش‌ها کمک می‌کنن تا دیتابیس قفل نشه یا اطلاعات خراب نشن (Concurrency Control). امنیت داده‌ها رو تضمین می‌کنه! 🔒😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #SQLite

🟣 موضوع : ‏بررسی و مقایسه انواع ذخیره‌سازی داده‌ها در SQLite
📖 سرفصل : ‏پشتیبان‌گیری و بازیابی (Backup and Restore)

نکته 1:
‏ساده‌ترین راه برای پشتیبان‌گیری (Backup)، اینه که کل فایل دیتابیس (.db یا .sqlite) رو کپی کنی و بذاری یه جای امن! چون SQLite فقط یه فایله. 📦💾

نکته 2:
‏قبل از اینکه فایل رو کپی کنی، مطمئن شو که هیچ فرآیندی مشغول نوشتن یا تغییر دادن دیتابیس نیست. اگه هست، فایل رو قفل می‌کنه. 🚫✍️

نکته 3:
‏برای بک‌آپ گرفتن مطمئن‌تر، می‌تونی از دستور VACUUM INTO 'backup_path.db'; استفاده کنی. این دستور یه کپی فشرده و تمیز می‌گیره. 🧹

نکته 4:
‏اگه حالت WAL (Write-Ahead Logging) فعال باشه، برای بک‌آپ باید علاوه بر فایل اصلی، فایل‌های کمکی .wal و .shm رو هم کپی کنی. ⚠️🔥

نکته 5:
‏برای بازیابی (Restore)، کافیه فایل بک‌آپ رو برگردونی به جای فایل اصلی. اما اول برنامه رو ببند تا تداخل پیش نیاد.

نکته 6:
‏یکی از بهترین راه‌های بک‌آپ گرفتن، استفاده از API بک‌آپ خود SQLite هست که بهت اجازه می‌ده موقعی که برنامه داره از دیتابیس استفاده می‌کنه هم، بک‌آپ بگیری. 🛠️

نکته 7:
‏با استفاده از دستور ATTACH DATABASE می‌تونی فایل بک‌آپ رو به دیتابیس فعال وصل کنی و با دستورات SQL داده‌ها رو بینشون کپی کنی. 🔗💡

نکته 8:
‏هیچ‌وقت فایل‌های بک‌آپت رو تو همون مسیر فایل اصلی نگه ندار! اگه هاردت بسوزه، هر دو با هم از دست می‌رن. بک‌آپ رو یه جای دیگه بذار. 📍

نکته 9:
‏یه روش دستی بازیابی اینه که با sqlite3 یه فایل SQL از Schema و داده‌ها بگیری (با دستور .dump) و بعد اون رو تو یه فایل جدید RESTORE کنی. 📝

نکته 10:
‏بهترین کار اینه که بک‌آپ گرفتن رو به صورت منظم و خودکار تنظیم کنی تا همیشه یه نسخه امن از داده‌هات داشته باشی. این یه اصل طلاییه! 💯😎


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین


داده‌های پرت (Outliers) می‌تونن مدل رو به شدت خراب کنن.

🔹 داده پرت یا Outlier یعنی داده‌ای که خیلی از بقیه فاصله داره (مثلاً حقوق ۵ میلیاردی وسط یه دیتاست با میانگین ۱۰ میلیون 😅).
🔹 بعضی الگوریتم‌ها مثل Linear Regression یا KNN خیلی حساسن به داده‌های پرت، در حالی که مدل‌هایی مثل Random Forest کمتر آسیب می‌بینن.

🔹 روش‌های برخورد:

شناسایی و حذف: با استفاده از Z-score، IQR یا روش‌های آماری.

ترنسفورم داده: مثل استفاده از log یا sqrt برای کاهش اثر مقادیر خیلی بزرگ.

مدل‌های مقاوم (Robust): مثل Robust Regression یا استفاده از الگوریتم‌هایی که به outlier حساس نیستن.

به زبان ساده: Outlier مثل “نویز خیلی بلند” توی یک موسیقیه؛ اگه کنترل نشه کل آهنگ رو خراب می‌کنه. 🎵

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏آماده‌سازی محیط کار: نصب MySQL و ابزارهای لازم

‏رفیق، وقتی می‌خوای MySQL رو نصب کنی، حواست باشه که همیشه جدیدترین نسخه بهترین نیست! 🧐 گاهی اوقات نسخه‌های پایدارتر یا سازگار با پروژه‌ات، خیلی بهترن. قبل نصب یه چک کوچولو بزن! 👍

‏برای شروع و کارای اولیه، نیازی نیست خیلی خودتو درگیر کنی! 🚀 بسته‌هایی مثل XAMPP یا WAMP یه راه خیلی آسونن که MySQL رو با PHP و Apache یکجا نصب می‌کنن. برای شروع کارآموزی محشره!

‏بعد از اینکه نصب کردی، چطوری مطمئن بشی که MySQL داره کار می‌کنه؟ 🤔 برو تو سرویس‌های ویندوز یا با دستور sudo systemctl status mysql تو لینوکس وضعیتش رو چک کن. اگه سبز بود، یعنی اوکیه!

‏مهم‌ترین قدم امنیتی! 🛡️ بعد از نصب، حتماً یه رمز عبور قوی برای کاربر root ست کن. هیچ وقت بدون رمز عبور رهاش نکن، وگرنه ممکنه هکرها به راحتی وارد شن! 🚨

‏کار کردن با خط فرمان اوکیه، ولی برای دید بصری بهتر، حتماً یه ابزار گرافیکی مثل MySQL Workbench یا phpMyAdmin نصب کن. 🎨 کلی کارت رو راحت‌تر می‌کنه و جذاب‌تره! 🤩

‏اگه می‌خوای از یه کامپیوتر دیگه به MySQL وصل بشی، حواست به فایروال سیستم باشه! 🔥 باید پورت 3306 رو باز کنی تا اتصال برقرار بشه. اگه نه، ممکنه کلی سرش گیج شی! 😵‍💫

‏وقتی MySQL رو نصب کردی و رمز root رو گذاشتی، وقتشه اولین اتصال رو برقرار کنی! 💪 کافیه تو خط فرمان بزنی mysql -u root -p و بعد رمزتو وارد کنی. یه دنیای جدید به روت باز میشه! 🚀

‏هر چیزی یه فایل تنظیمات داره، MySQL هم همینطور! 💡 تو ویندوز معمولاً my.ini و تو لینوکس my.cnf هست. گاهی اوقات برای تغییر پورت یا تنظیمات پیشرفته، باید سراغ این فایل بری! 🕵️‍♂️

‏کار کردن همیشه با کاربر root مثل اینه که با کلید گاوصندوق بری خرید! 🔑 همیشه یه کاربر جدید برای هر پروژه بساز و بهش فقط دسترسی‌های لازم رو بده. اینطوری امن‌تره! 🔐

‏گاهی اوقات ممکنه MySQL روشن نشه! 😩 نگران نباش، معمولاً یا یه سرویس دیگه پورت 3306 رو اشغال کرده (مثل اسکایپ قدیمی) یا فایل تنظیمات ایراد داره. لاگ‌ها رو چک کن! 📜 خیلی کمک می‌کنه. 😉


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #MySQL

🟣 موضوع : ‏کار با انواع JOIN در MySQL به صورت عملی
📖 سرفصل : ‏انواع دیگر JOIN

‏برای اینکه بتونی تمام ردیف‌های دو تا جدول رو حتی اگه نقطه مشترکی نداشتن ببینی، از FULL OUTER JOIN استفاده کن. انگار داری می‌گی: "همه رو بیار، چه با هم جور بشن چه نشن!" 😉

‏وقتی می‌خوای فقط ردیف‌هایی رو ببینی که توی جدول چپ هستن ولی توی جدول راست نیستن، LEFT JOIN (یا LEFT OUTER JOIN) بهترین دوستته. مثل این می‌مونه که می‌گی: "اول مال خودم، بعد اگه چیزی اضافه بود از تو هم بگیر!" 😎

‏اگه برعکس حالت قبل، یعنی فقط ردیف‌هایی که توی جدول راست هستن ولی توی جدول چپ نیستن رو خواستی، RIGHT JOIN (یا RIGHT OUTER JOIN) کارتو راه میندازه. یه جورایی دیگه از اون ور بوم افتادی! 🙃

‏وقتی فقط دنبال ردیف‌هایی هستی که هم توی جدول چپ باشن هم توی جدول راست (یعنی نقاط مشترک)، INNER JOIN همون چیزیه که لازم داری. ساده و سرراست! 👍

‏CROSS JOIN یه گزینه‌ی باحاله که تمام ترکیبات ممکن از ردیف‌های دو جدول رو بهت نشون میده. خیلی وقتا ممکنه زیاد به درد نخوره، ولی برای تست کردن یا تولید داده‌های اولیه می‌تونه مفید باشه. 🚀

‏اگه خواستی فقط یه سری ردیف از جدول اول رو با ردیف‌های منطبق از جدول دوم ترکیب کنی و اگه منطبق نبود، فقط ستون‌های جدول اول رو نشون بدی، LEFT JOIN رو فراموش نکن. 🌟

‏به طور پیش‌فرض، JOIN توی MySQL معادل INNER JOIN هست. پس اگه نخواستی از INNER JOIN استفاده کنی، بهتره صراحتاً نوع JOIN رو مشخص کنی. 💡

‏گاهی وقت‌ها، استفاده از LEFT JOIN با شرط WHERE می‌تونه به اندازه‌ی NOT EXISTS یا LEFT JOIN IS NULL سریع باشه. حتماً امتحان کن! 💨

‏برای اینکه بفهمی کدوم ردیف‌ها در یک جدول وجود دارن ولی در جدول دیگه نه، ترکیب LEFT JOIN با چک کردن IS NULL در ستون جدول دوم خیلی کاربردیه. یه راه سریع و باحال!

‏یادت باشه که OUTER توی LEFT OUTER JOIN و RIGHT OUTER JOIN اختیاریه. یعنی LEFT JOIN و RIGHT JOIN همون کار رو انجام میدن. پس سخت نگیر! 😄


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir