Forwarded from Ninja Learn | نینجا لرن
💎 اصول Normalisation در طراحی دیتابیس 💎
امروز میخوام در مورد یکی از مهمترین اصول طراحی دیتابیس یعنی "نرمالسازی" صحبت کنم. اگه میخواین دیتابیستون پر سرعت و بدون مشکل کار کنه، باید با این سه فرم اصلی نرمالسازی آشنا بشین.
1⃣ فرم اول نرمال (1NF)
تو فرم اول نرمال، باید همهی ستونهای دیتابیستون "اتمی" باشن. یعنی هر سلول از جدول باید فقط یه مقدار داشته باشه، نه چندتا مقدار!
📌 مثال:
فرض کن یه جدول داری که توش شماره تلفنهای چند نفر رو ذخیره کردی. اگه تو یه سلول چند تا شماره تلفن ذخیره کنی، دیتابیست تو فرم اول نرمال نیست باید هر شماره تلفن توی یه ردیف جدا باشه.
2⃣ فرم دوم نرمال (2NF)
وقتی فرم اول رو رعایت کردی، میرسی به فرم دوم. تو این فرم، باید مطمئن بشی که همهی ستونهای غیرکلیدی، وابسته به کلید اصلی (Primary Key) باشن.
📌 مثال:
فرض کن یه جدول داری که اطلاعات دانشآموزان و درسهایی که میخونن رو ذخیره میکنه. اگه یه ستون مربوط به اطلاعات کلاس (مثل شماره کلاس) باشه که وابسته به دانشآموز نباشه، دیتابیست تو فرم دوم نرمال نیست. باید اون اطلاعات رو تو یه جدول جدا ذخیره کنی.
3⃣ فرم سوم نرمال (3NF)
حالا که فرم دوم رو رعایت کردی، میرسیم به فرم سوم. اینجا باید مطمئن بشی که هیچ ستون غیرکلیدی به یه ستون غیرکلیدی دیگه وابسته نباشه
📌 مثال:
اگه تو جدول دانشآموزان، هم اسم شهر و هم اسم استان رو ذخیره کنی و استان وابسته به شهر باشه، دیتابیس تو فرم سوم نرمال نیست. باید شهر و استان رو تو یه جدول دیگه ذخیره کنی.
جمع بندی 🎯
این سه فرم نرمالسازی باعث میشن دیتابیستون بهینهتر باشه، خطاهای کمتری داشته باشه و به راحتی قابل توسعه باشه. پس اگه میخواین دیتابیستون تو پروژههای بزرگ دچار مشکل نشه، حتما این اصول رو رعایت کنین 😉
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوام در مورد یکی از مهمترین اصول طراحی دیتابیس یعنی "نرمالسازی" صحبت کنم. اگه میخواین دیتابیستون پر سرعت و بدون مشکل کار کنه، باید با این سه فرم اصلی نرمالسازی آشنا بشین.
1⃣ فرم اول نرمال (1NF)
تو فرم اول نرمال، باید همهی ستونهای دیتابیستون "اتمی" باشن. یعنی هر سلول از جدول باید فقط یه مقدار داشته باشه، نه چندتا مقدار!
📌 مثال:
فرض کن یه جدول داری که توش شماره تلفنهای چند نفر رو ذخیره کردی. اگه تو یه سلول چند تا شماره تلفن ذخیره کنی، دیتابیست تو فرم اول نرمال نیست باید هر شماره تلفن توی یه ردیف جدا باشه.
2⃣ فرم دوم نرمال (2NF)
وقتی فرم اول رو رعایت کردی، میرسی به فرم دوم. تو این فرم، باید مطمئن بشی که همهی ستونهای غیرکلیدی، وابسته به کلید اصلی (Primary Key) باشن.
📌 مثال:
فرض کن یه جدول داری که اطلاعات دانشآموزان و درسهایی که میخونن رو ذخیره میکنه. اگه یه ستون مربوط به اطلاعات کلاس (مثل شماره کلاس) باشه که وابسته به دانشآموز نباشه، دیتابیست تو فرم دوم نرمال نیست. باید اون اطلاعات رو تو یه جدول جدا ذخیره کنی.
3⃣ فرم سوم نرمال (3NF)
حالا که فرم دوم رو رعایت کردی، میرسیم به فرم سوم. اینجا باید مطمئن بشی که هیچ ستون غیرکلیدی به یه ستون غیرکلیدی دیگه وابسته نباشه
📌 مثال:
اگه تو جدول دانشآموزان، هم اسم شهر و هم اسم استان رو ذخیره کنی و استان وابسته به شهر باشه، دیتابیس تو فرم سوم نرمال نیست. باید شهر و استان رو تو یه جدول دیگه ذخیره کنی.
جمع بندی 🎯
این سه فرم نرمالسازی باعث میشن دیتابیستون بهینهتر باشه، خطاهای کمتری داشته باشه و به راحتی قابل توسعه باشه. پس اگه میخواین دیتابیستون تو پروژههای بزرگ دچار مشکل نشه، حتما این اصول رو رعایت کنین 😉
#sql #database #db #nf
🔥10👍8
Forwarded from Ninja Learn | نینجا لرن
💎معرفی دیتابیس MongoDB 💎
دیتابیس MongoDB یکی از محبوبترین دیتابیسهای NoSQL تو دنیای امروزه.
به جای اینکه مثل دیتابیسهای رابطهای (مثل MySQL یا PostgreSQL) از جداول و ردیفها استفاده کنه، اطلاعات رو به شکل Document ذخیره میکنه که ساختارش خیلی شبیه به JSON هست.
هر داکیومنت میتونه شامل انواع مختلفی از دادهها باشه، و مهمتر از همه، هیچ محدودیتی هم روی ساختار دادهها وجود نداره.
حالا چرا MongoDB انقدر محبوبه؟
1⃣ انعطافپذیری بالا :
توی MongoDB، نیازی نیست برای همه رکوردها یک ساختار ثابت داشته باشی.
مثلاً توی یه دیتابیس سنتی اگه یک فیلد جدید اضافه کنی باید اون فیلد رو به همه رکوردها اضافه کنی.
اما توی Mongo، هر Document میتونه فیلدهای خاص خودش رو داشته باشه. یعنی اگه توی یک داکویمنت مثلاً فیلد "address" داشته باشی و توی داکیومنت دیگه نداشته باشی، هیچ مشکلی پیش نمیاد.
مثال:
2⃣ مقیاسپذیری بالا
اگه یه پروژه خیلی بزرگ داشته باشی که نیاز به مقیاسپذیری بالا داره (مثلاً یه فروشگاه اینترنتی با میلیونها کاربر)، MongoDB میتونه راحت با افزایش حجم دادهها سازگار بشه. Sharding توی Mongo بهت کمک میکنه که دیتابیس رو روی چندین سرور تقسیم کنی و عملکرد رو بالا ببری.
3⃣ سرعت بالا در خوندن و نوشتن دادهها:
چون MongoDB داکیومنت ها رو به صورت ساده و با ساختار JSON-گونه ذخیره میکنه، خوندن و نوشتن دادهها خیلی سریعتر از بعضی دیتابیسهای سنتی انجام میشه. این ویژگی به خصوص برای اپلیکیشنهایی که دادههای زیاد و پویا دارن خیلی مفیده.
4⃣ مناسب برای دادههای پیچیده و پویا
تو برنامههایی که دادههاشون خیلی سریع تغییر میکنه و یا نوع دادهها ممکنه پیچیده باشه (مثل پروژههای اینترنت اشیا، شبکههای اجتماعی یا اپلیکیشنهای موبایل)، MongoDB انتخاب بهتریه. چون لازم نیست هر دفعه که ساختار دادت عوض میشه، کل دیتابیس رو دوباره طراحی کنی.
حالا MongoDB چطور کار میکنه؟🤔
دادهها توی MongoDB به شکل مجموعهای از اسناد ذخیره میشن. هر سند مثل یک فایل JSON عمل میکنه. برای کار با Mongo، نیازی نیست اول دیتابیس و جداول رو مثل سیستمهای رابطهای تعریف کنی. هر وقت داکیومنتی رو به Mongo اضافه کنی، خودش به صورت خودکار دیتابیس و کالکشنها (معادل جدول توی دیتابیسهای رابطهای) رو ایجاد میکنه.
مثال از یک داکویمنت در MongoDB:
این داکیومنت شامل یه _id یکتا است که MongoDB خودش به طور خودکار تولید میکنه
❓چرا MongoDB؟
1⃣ انعطافپذیری توی ساختار داده (Schema less)
2⃣ مقیاس پذیری:
مناسب برای پروژههای بزرگ
3⃣ سرعت بالا:
سادگی استفاده و خواندن دادههای حجیم
4⃣ سادگی استفاده:
راحت و بدون درد
جمع بندی 🎯
فهمیدیمMongoDB انتخاب خوبیه برای وقتی که پروژهت نیاز به تغییرات سریع داره، دادهها ساختار پیچیدهای دارن، یا حجم بالایی از دادهها رو باید ذخیره کنی. به همین خاطر کمپانی های بزرگ مثل Uber ،Lyft، eBay از MongoDB استفاده میکنن.
امیدوارم مفید بود باشه :)
@ninja_learn_ir
دیتابیس MongoDB یکی از محبوبترین دیتابیسهای NoSQL تو دنیای امروزه.
به جای اینکه مثل دیتابیسهای رابطهای (مثل MySQL یا PostgreSQL) از جداول و ردیفها استفاده کنه، اطلاعات رو به شکل Document ذخیره میکنه که ساختارش خیلی شبیه به JSON هست.
هر داکیومنت میتونه شامل انواع مختلفی از دادهها باشه، و مهمتر از همه، هیچ محدودیتی هم روی ساختار دادهها وجود نداره.
حالا چرا MongoDB انقدر محبوبه؟
1⃣ انعطافپذیری بالا :
توی MongoDB، نیازی نیست برای همه رکوردها یک ساختار ثابت داشته باشی.
مثلاً توی یه دیتابیس سنتی اگه یک فیلد جدید اضافه کنی باید اون فیلد رو به همه رکوردها اضافه کنی.
اما توی Mongo، هر Document میتونه فیلدهای خاص خودش رو داشته باشه. یعنی اگه توی یک داکویمنت مثلاً فیلد "address" داشته باشی و توی داکیومنت دیگه نداشته باشی، هیچ مشکلی پیش نمیاد.
مثال:
{
"name": "Ali",
"age": 25,
"email": "ali@example.com"
}
{
"name": "Sara",
"age": 30
}
2⃣ مقیاسپذیری بالا
اگه یه پروژه خیلی بزرگ داشته باشی که نیاز به مقیاسپذیری بالا داره (مثلاً یه فروشگاه اینترنتی با میلیونها کاربر)، MongoDB میتونه راحت با افزایش حجم دادهها سازگار بشه. Sharding توی Mongo بهت کمک میکنه که دیتابیس رو روی چندین سرور تقسیم کنی و عملکرد رو بالا ببری.
3⃣ سرعت بالا در خوندن و نوشتن دادهها:
چون MongoDB داکیومنت ها رو به صورت ساده و با ساختار JSON-گونه ذخیره میکنه، خوندن و نوشتن دادهها خیلی سریعتر از بعضی دیتابیسهای سنتی انجام میشه. این ویژگی به خصوص برای اپلیکیشنهایی که دادههای زیاد و پویا دارن خیلی مفیده.
4⃣ مناسب برای دادههای پیچیده و پویا
تو برنامههایی که دادههاشون خیلی سریع تغییر میکنه و یا نوع دادهها ممکنه پیچیده باشه (مثل پروژههای اینترنت اشیا، شبکههای اجتماعی یا اپلیکیشنهای موبایل)، MongoDB انتخاب بهتریه. چون لازم نیست هر دفعه که ساختار دادت عوض میشه، کل دیتابیس رو دوباره طراحی کنی.
حالا MongoDB چطور کار میکنه؟🤔
دادهها توی MongoDB به شکل مجموعهای از اسناد ذخیره میشن. هر سند مثل یک فایل JSON عمل میکنه. برای کار با Mongo، نیازی نیست اول دیتابیس و جداول رو مثل سیستمهای رابطهای تعریف کنی. هر وقت داکیومنتی رو به Mongo اضافه کنی، خودش به صورت خودکار دیتابیس و کالکشنها (معادل جدول توی دیتابیسهای رابطهای) رو ایجاد میکنه.
مثال از یک داکویمنت در MongoDB:
{
"_id": "60c72b2f9b1e8e0015cfd31a",
"name": "Product1",
"price": 100,
"catego_idlectronics"
}
این داکیومنت شامل یه _id یکتا است که MongoDB خودش به طور خودکار تولید میکنه
❓چرا MongoDB؟
1⃣ انعطافپذیری توی ساختار داده (Schema less)
2⃣ مقیاس پذیری:
مناسب برای پروژههای بزرگ
3⃣ سرعت بالا:
سادگی استفاده و خواندن دادههای حجیم
4⃣ سادگی استفاده:
راحت و بدون درد
جمع بندی 🎯
فهمیدیمMongoDB انتخاب خوبیه برای وقتی که پروژهت نیاز به تغییرات سریع داره، دادهها ساختار پیچیدهای دارن، یا حجم بالایی از دادهها رو باید ذخیره کنی. به همین خاطر کمپانی های بزرگ مثل Uber ،Lyft، eBay از MongoDB استفاده میکنن.
#mongodb #db #nosql
❤6👍4🔥1