فصل دوم: کار با پایگاه های داده SQL

ساختار دیتابیس ها

هدف اصلی دیتابیس این است که تنها به اندازه اطلاعات مورد نیاز کاربر، داده ها را در اختیار کاربر قرار دهد. این بدان معنی است که سیستم تمام جزئیات داده ها را فاش نمی کند، بلکه برخی از جزئیات نحوه ذخیره و نگهداری داده ها را پنهان می کند. پیچیدگی دیتابیس ها از دید آنها پنهان است که در صورت لزوم از طریق سطوح مختلف انتزاع برای تسهیل تعامل آنها با سیستم مرتب می شوند.

 سطوح مختلف دیتابیس از طریق سه لایه پیاده سازی می شوند:

    •      سطح داخلی (سطح فیزیکی) / Internal Level Physical Level: پایین ترین سطح انتزاع، سطح داخلی، نزدیکترین سطح به ذخیره سازی فیزیکی است. توضیح می دهد که چگونه داده ها به طور مشخص در رسانه ذخیره سازی ذخیره می شوند.
    •      سطح مفهومی / Conceptual Level: این سطح از انتزاع توصیف می کند که چه داده هایی به طور مشخص در دیتابیس ذخیره می شوند. همچنین روابطی را که بین داده ها وجود دارد، توصیف می کند. در این سطح، دیتابیس ها به صورت منطقی بر حسب ساختار داده های ساده توصیف می شوند. کاربران در این سطح نگران نحوه اجرای این ساختارهای داده منطقی در سطح فیزیکی نیستند.
    •    سطح خارجی (سطح مشاهده) / External Level View Level: نزدیکترین سطح به کاربران است و به نحوه مشاهده داده ها توسط کاربران فردی مربوط می شود.

از آنجایی که یک دیتابیس را می توان از طریق سه سطح انتزاعی مشاهده کرد، هر تغییری در یک سطح می تواند بر برنامه های سطوح دیگر تاثیر بگذارد. همانطور که دیتابیس ها همچنان در حال رشد هستند، ممکن است گاهی اوقات تغییرات مکرری در آن ایجاد شود. این نباید منجر به طراحی مجدد و پیاده سازی مجدد دیتابیس شود. در چنین زمینه ای، مفهوم استقلال داده سودمند است.

برای ذخیره و مدیریت موثر داده ها در دیتابیس، اجازه دهید برخی از اصطلاحات کلیدی را درک کنیم:

    1. داده / Data: این اطلاعاتی است که می خواهید ذخیره کنید، مانند هر چیزی از نام و آدرس گرفته تا جزئیات محصول یا حتی اطلاعات کتابخانه.
    1. جداول / Tables: اینها مانند پوشه های کابینت بایگانی هستند. هر جدول داده هایی را در مورد یک موضوع خاص نگه می دارد، مانند جدولی برای ذخیره اطلاعات مشتری یا جدولی دیگر برای ردیابی کتاب های کتابخانه.
    1. ردیف ها و ستون ها (Rows and Columns): جداول از سطرها و ستون ها تشکیل شده اند. ردیف ها را به عنوان ورودی های جداگانه در پوشه و ستون ها را به عنوان برچسب روی پوشه ها در نظر بگیرید. به عنوان مثال، در یک جدول مشتری، هر ردیف ممکن است نماینده یک مشتری واحد باشد و ستون‌ها حاوی جزئیاتی مانند نام، آدرس، شماره تلفن و غیره باشند.
    1.  طرحواره پایگاه داده / Database Schema: طرحی از پایگاه داده است. یا می توان گفت که اسکلتی از دیتابیس است که برای نمایش ساختار استفاده می شود، انواع داده ها در ردیف ها و ستون ها، محدودیت ها، روابط بین جداول ذخیره می شوند.
    1.  محدودیت های داده / Data Constraints: در یک دیتابیس، گاهی اوقات محدودیت هایی را روی جدول قرار می دهیم که چه نوع داده ای را می توان در یک یا چند ستون از جدول ذخیره کرد، با استفاده از محدودیت ها می توان این کار را انجام داد. زمانی که ما در حال ایجاد جدول هستیم، محدودیت ها تعریف می شوند.
    1.  دیکشنری داده یا فراداده / Data dictionary: فراداده به عنوان داده مربوط به داده ها شناخته می شود. یا می توان گفت طرحواره دیتابیس همراه با انواع محدودیت ها بر روی داده ها توسط DBMS در فرهنگ لغت ذخیره می شود که به عنوان ابرداده شناخته می شود.
    1.  نمونه پایگاه داده / Database instance: در یک دیتابیس، یک نمونه دیتابیس برای تعریف محیط کامل دیتابیس و اجزای آن استفاده می شود. یا می توان گفت مجموعه ای از ساختارهای حافظه و فرآیندهای پس زمینه است که برای دسترسی به فایل های دیتابیس استفاده می شود.
    1.  Query: در یک دیتابیس، از یک پرس و جو برای دسترسی به داده های دیتابیس استفاده می شود. بنابراین کاربران باید برای بازیابی یا دستکاری داده ها از دیتابیس کوئری بنویسند.
    1.  دستکاری داده ها / Data manipulation: در یک دیتابیس با استفاده از سه عملیات اصلی که عبارتند از Insertion، Deletion و Updation به راحتی می توانیم داده ها را دستکاری کنیم.
    1. موتور داده / Data Engine: یک جزء زیربنایی است که برای ایجاد و مدیریت پرس و جوهای مختلف دیتابیس استفاده می شود.

انواع دیتابیس ها:

انواع مختلفی از دیتابیس وجود دارد، از جمله:

    • – ** دیتابیس ها رابطه ای (Relational Databases): ** این ها از ساختار مبتنی بر جدول و   Structured Query Language یا SQL برای پرس و جو و مدیریت داده ها استفاده می کنند. به عنوان مثال می توان به MySQL، PostgreSQL و دیتابیس Oracle اشاره کرد.
    • – **دیتابیس ها NoSQL Databases:** این دیتابیس ها که برای داده های بدون ساختار و نیمه ساختار یافته طراحی شده اند، نیازی به طرحواره ثابت ندارند و از نظر مدیریت داده ها انعطاف پذیرتر هستند. به عنوان مثال می توان به MongoDB، Cassandra و Redis اشاره کرد.
    • – **پایگاه های اطلاعاتی در حافظه In-Memory Databases:** این دیتابیس ها داده ها را در حافظه اصلی (RAM) ذخیره می کنند تا زمان پاسخگویی سریع تری داشته باشند. آنها برای برنامه هایی که نیاز به دسترسی سریع به داده ها دارند، مانند سیستم های کش ایده آل هستند.
    • – **دیتابیس ها گراف Graph Databases:** بهینه شده برای ذخیره و پیمایش روابط، دیتابیس ها گراف برای شبکه های اجتماعی، موتورهای توصیه و تحلیل شبکه ایده آل هستند. به عنوان مثال می توان به Neo4j و آمازون نپتون اشاره کرد.

Relational Database 

در یک دیتابیس ها رابطه ای، هر ردیف در جدول یک رکورد با یک شناسه منحصر به فرد به نام کلید است. ستون‌های جدول ویژگی‌های داده‌ها را نگه می‌دارند و هر رکورد معمولاً مقداری برای هر ویژگی دارد که برقراری روابط بین نقاط داده را آسان می‌کند. مدل رابطه ای که برای اولین بار توسط ادگار اف. کادر پژوهشگری در IBM، در سال 1970 ارائه شد، یک روش بصری و ساده برای نمایش ساختارمند داده ها و انقلابی اساسی در نحوه مدیریت دیتابیس ها ها محسوب می شود.

کارآمدترین راه برای ذخیره داده ها با کمک دیتابیس ها است. یک دیتابیس رابطه از جداول حاوی ستون و ردیف تشکیل شده است. هر دسته جدول مخصوص به خود را ارائه می دهد. به عنوان مثال، یک شرکت ممکن است یک جدول برای اطلاعات مشتری و دیگری برای شماره فروش داشته باشد. می توانید یک جدول را تا حدودی شبیه به صفحه گسترده در نظر بگیرید. در داخل یک صفحه گسترده، ستون ها و ردیف هایی از داده ها وجود دارد. اما برای دیتابیس ها هر سطر یک رکورد و هر سلول یک فیلد نامیده می شود.

برای اینکه موضوع را حتی واضح تر کنیم، یک قیاس در نظر بگیرید:
تصور کنید یک دفترچه تلفن دارید. این یک دیتابیس ها ساده است! دفترچه تلفن اطلاعاتی در مورد افراد (داده) دارد که به ترتیب حروف الفبا سازماندهی شده است (جداول). هر ورودی در دفترچه تلفن یک ردیف است که در یک ستون نام فرد و در ستون دیگر شماره تلفن او قرار دارد. این ایده اصلی یک دیتابیس ها و یک روش ساختار یافته برای ذخیره و سازماندهی اطلاعات برای دسترسی و بازیابی آسان است.

SQL & DBSM

سیستم های مدیریت پایگاه داده ( Database Management Systems (DBMS نوعی سیستم مدیریت دیتابیس ها هستند که داده ها را در جداول سازماندهی می کنند. این جداول بر اساس ویژگی های مشترک داده ها به هم مرتبط می شوند. این ساختار بر اساس مدل رابطه ای (Relational Model) شکل گرفته است.

SQL یک زبان برنامه نویسی است که برای تسهیل کار با دیتابیس ها طراحی شده است. قدرت این ابزار را نمی توان دست کم گرفت. با درک قوی از مفاهیم اصلی آن، می توانید تقریباً هر کاری را که می خواهید با داده ها در مورد بینش انجام دهید. معمولاً از SQL برای استخراج (یا پرس و جو) داده ها از دیتابیس ها استفاده می شود. با این زبان می توانید مشخص کنید که چه داده ای می خواهید و خروجی آن چگونه باشد. به این ترتیب می توانید داده ها را از یک دیتابیس ها به Microsoft Excel یا Google Sheets ببرید.

مزایای DBMS

    • یکپارچگی داده ها: DBMS با اعمال انواع داده ها، محدودیت ها و روابط، سطوح بالایی از یکپارچگی و دقت داده ها را تضمین می کند.
    • انعطاف پذیری: SQL امکان پرس و جوهای پیچیده و دستکاری داده ها را فراهم می کند و انعطاف پذیری خوبی در نحوه بازیابی و تجزیه و تحلیل داده ها ایجاد میکند.
    • مقیاس پذیری (Scalability): بسیاری از راه حل های DBMS برای مقیاس پذیری کارآمد طراحی شده اند تا با رشد داده ها و خواسته های کاربران سازگار شوند.
    • قابلیت نگهداری: ابزارها و رابط های ارائه شده توسط فروشندگان DBMS، کارهای نگهداری دیتابیس ها مانند پشتیبان گیری، بازیابی و تنظیم کارایی را قابل مدیریت تر می کند.

نمونه های رایج DBMS

    • Oracle Database: Oracle به دلیل پلتفرم غنی از ویژگی های خود شناخته شده است و به طور گسترده در محیط های سازمانی استفاده می شود.
    • MySQL: یک DBMS منبع باز محبوب که برای برنامه های وب مناسب است. MySQL بخشی از پشته نرم افزاری LAMP (لینوکس، آپاچی، MySQL، PHP/Python/Perl) است.
    • Microsoft SQL Server: محصولی از مایکروسافت که طیف گسترده ای از تجزیه و تحلیل داده ها، یکپارچه سازی ابری و ویژگی های پیشرفته را ارائه می دهد.
    • PostgreSQL: PostgreSQL یک DBMS منبع باز پیشرفته است که با انطباق با استانداردها، قابلیت توسعه و پشتیبانی از انواع داده های پیشرفته شناخته می شود.

ویژگی های اصلی DBMS به شرح زیر است:

    1. زبان پرس و جوی ساخت یافته (Structured Query Language یا SQL): در DBMS از SQL برای ساخت، بازیابی، به روز رسانی و مدیریت اطلاعات استفاده میشود. SQL زبانی قدرتمند و استاندارد است که امکان پرس و جو های پیچیده و دستکاری داده ها را فراهم می کند.
    1. جداول / Tables: داده ها در یک DBMS در جدول هایی ذخیره می شوند که از سطرها و ستون ها تشکیل شده اند. هر سطر نشان دهنده یک رکورد منحصر به فرد است و هر ستون نشان دهنده یک فیلد در آن رکورد.
    • ستون‌ها / Columns: در یک دیتابیس ها، ستون‌ها برای جداسازی اطلاعات مربوط به هر موجودیت (مثلا اطلاعات کارمندان) استفاده می‌شوند. مثلاً ستون‌های یک جدول می‌توانند شامل نام، عنوان شغلی، شماره مدیر، تاریخ استخدام، حقوق و پورسانت باشند. هر ستون را می‌توان برای پذیرش نوع خاصی از داده (مانند اعداد برای حقوق و ایمیل برای ستون آدرس ایمیل) تنظیم کرد. این قابلیت به حفظ صحت اطلاعات کمک می‌کند. امکانات گسترده‌ای برای سفارشی کردن ستون‌ها وجود دارد.
    • سطرها / Rows: سطرهای یک جدول نشان دهنده تعداد موجودات قابل مشاهده است که ما به آنها نگاه می کنیم. به بیان ساده، اگر جدول افراد دارای 3 ردیف باشد، به این معنی است که داده های 3 فرد مختلف را دارد. هر ردیف نشان دهنده یک شخص است و ستون ها اطلاعات مربوطه خود را نشان می دهند. سطرها به ما اجازه می دهند تا ورودی های جداگانه را در جدول ببینیم. هر ردیف همچنین حاوی یک کلید اصلی است که به ما اجازه می دهد تا ورودی های فردی را به راحتی جستجو کنیم.
    1. کلیدها / Keys: کلیدها امکان شناسایی منحصر به فرد را برای همه ردیف‌های جدول فراهم می‌کنند. بدون کلید هیچ راهی برای تمایز بین ورودی هایی که اطلاعات یکسان در ستون های خود دارند وجود نخواهد داشت. دو نفر در یک میز می توانند نام ها و تولدهای یکسانی داشته باشند و بدون کلید منحصر به فرد، تشخیص آنها سخت خواهد بود و می تواند منجر به سردرگمی غیر ضروری شود.فرض کنید شما یک کارمند منابع انسانی هستید که باید نامه پایان کار را برای مردی به نام جان دو و نامه ترفیع را برای شخص دیگری با همین نام ارسال کنید. تصور کنید اگر این موضوع قاطی شود، هر دو نامه فسخ یا ترفیع را دریافت می کنند. در مورد یک کابوس شرکتی صحبت کنید، درست است؟

دو نوع کلید وجود دارد که باید بدانید: کلید اصلی و کلید خارجی.

    • کلیدهای اصلی / Primary Key: هر جدول در یک DBMS یک کلید اصلی دارد که یک شناسه منحصر به فرد برای هر رکورد در جدول است. این کلید تضمین می کند که هر رکورد به طور یکتا قابل شناسایی است.
    • کلیدهای خارجی / Foreign Key: از کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده می شود. یک کلید خارجی در یک جدول به یک کلید اصلی در جدول دیگر اشاره می کند و پیوندی بین دو رکورد ایجاد می شود.
    1. نرمال سازی (Normalization): در DBMS اغلب از فرآیندی به نام نرمال سازی استفاده می شود. این فرآیند داده ها را برای کاهش افزونگی و بهبود یکپارچگی داده ها سازماندهی می کند.
    1. ویژگی های ACID: سیستم های DBMS به گونه ای طراحی شده اند که پردازش قابل اعتماد تراکنش های دیتابیس ها را تضمین کنند. این سیستم ها از ویژگی های ACID (اتمی بودن، سازگاری، جداسازی، دوام) پیروی می کنند که در صورت بروز خطا به پردازش ایمن تراکنش‌ها و حفظ یکپارچگی داده‌ها کمک می‌کند.
    1. کنترل همزمانی / DBMS :Concurrency Control ابزارهایی برای مدیریت همزمان چند کاربر فراهم میکند. این امکان که چندین کاربر به طور همزمان به داده ها دسترسی و ویرایش داشته باشند بدون این که کار یکدیگر را دچار اختلال کنند.
    1. امنیت / DBMS :Security ویژگی های امنیتی قدرتمندی از جمله احراز هویت، مجوزدهی و رمزگذاری را برای محافظت از داده های حساس ارائه می دهد.
    1. روابط / Relationships: این قسمتی است که پیوند بین جداول مختلف شروع به توسعه می کند. روابط به تعداد زیادی جداول اجازه می دهد که حاوی انواع مختلف اما مرتبط با اطلاعات باشند و در عین حال خوانایی و بهینه سازی فضا را حفظ کنند.

مثال:

شرکت کوچکی را تصور کنید که بخش‌ها و بخش‌های مختلفی برای کارمندان خود دارد، مانند صندوق بیمه، مهدکودک، ثبت حضور الکترونیکی. اگرچه همه این اطلاعات ممکن است مفید باشد، خواندن همه آنها با هم مفید نخواهد بود. اگر بخش منابع انسانی بخواهد اطلاعات بیمه یک کارمند خاص را ببیند، نگران استفاده از مهدکودک نخواهد بود. در واقع، خواندن آن با تعداد زیادی ستون در جای خود دشوارتر خواهد شد. ذخیره سازی دیتابیس ها ها نیز یک مسئله سطحی نیست زیرا زمانی که حجم آنها شروع به افزایش می کند، می توانند فضای زیادی را طلب کنند. برای هر رایانه ای در شرکت داشتن کل دیتابیس ها از نظر ذخیره سازی و مسائل امنیتی بهینه نیست.

برای مقابله با این، روابط بین جداول مختلف پیاده سازی می شود. روابط اساساً امکان تقسیم اطلاعات به اجزای مفید را فراهم می کند که بر خوانایی و کارایی تأکید دارند. این همچنین به این معنی است که بخش‌های مختلف فقط به آنچه نیاز دارند دسترسی خواهند داشت و بقیه در رایانه‌هایشان در دسترس نخواهند بود.

این قسمتی است که پیوند بین جداول مختلف شروع به توسعه می کند. روابط به تعداد زیادی جداول اجازه می دهد که حاوی انواع مختلف اما مرتبط با اطلاعات باشند و در عین حال خوانایی و بهینه سازی فضا را حفظ کنند.

تفکیک اطلاعات مهم

در مثال شرکت کوچک بالا، بهترین راه برای ایجاد روابط، داشتن 4 جدول است. هر کدام به نمایندگی از کارمندان، صندوق بیمه، مهدکودک و ثبت نام حضور و غیاب.

اکنون، اطلاعات به خوبی تقسیم شده است. گام بعدی شناسایی اطلاعاتی است که در بیشتر مناطق وجود دارد. در این مورد، هر چیزی که ما تقسیم می کنیم توسط کارمندان استفاده می شود، بنابراین منطقی است که آن را به عنوان جدول اصلی خود در نظر بگیریم.

به این فکر کنید که یک کارمند باید چه نوع اطلاعاتی از تجربه شما از کار در دفتر داشته باشد. هر یک از کارکنان ستون های اصلی نام، آدرس، تلفن، ایمیل و سن را به همراه چیزی به نام شماره شناسایی دارد. این شماره شناسه برای هر کارمند منحصر به فرد است و همچنین به عنوان کلید اصلی جدول کارمند عمل می کند.

با استفاده از شماره شناسه می توانیم اطلاعات هر کارمندی را که بخواهیم جستجو کنیم، حتی اگر کارمندانی با همین نام داشته باشیم. اگر بر اساس معجزه ای عجیب همه کارکنان شما نام و سن یکسانی داشته باشند، هنوز هم می توانید آنها را با شماره شناسه آنها تشخیص دهید. آیا این بدان معناست که می توانیم از شناسه کارمند برای پیوند دادن به جداول دیگر استفاده کنیم؟ بله کاملا.

ایجاد روابط با سایر جداول از طریق کلیدهای خارجی

ستون Employee ID از آن جدول به عنوان کلید اصلی برای سایر جداول استفاده خواهد شد. هنگامی که جداول دیگر به این طریق پیوند داده می شوند، گفته می شود که دارای کلید خارجی هستند. به سادگی به معنای کلیدی از بیرون است. این کلید خارجی به ما امکان می دهد تمام اطلاعات دیگر را به هر کارگر مرتبط کنیم. تمام اطلاعاتی که ما در جداول دیگر داریم به افراد خاصی مرتبط است، بنابراین داشتن شناسه کارمند در هر جدول دیگر کاملا منطقی است.

در حالی که بسیاری از مسائل فنی نحوه ایجاد روابط در سیستم های پیچیده را تعیین می کنند، این یکی از ساده ترین نمونه هایی است که می توانید در هر کتاب دیتابیس ها رابطه ای پیدا کنید.

نمودار ER یک شرکت / ER Diagram of a Company

نمودار ER با نام Entity-Relationship Diagram شناخته می شود و برای تجزیه و تحلیل ساختار دیتابیس ها استفاده می شود. روابط بین موجودیت ها و ویژگی های آنها را نشان می دهد. مدل ER وسیله ارتباطی را فراهم می کند. نمودار ER شرکت دارای توضیحات زیر است:

    • این شرکت دارای چندین بخش است.
    • هر بخش ممکن است چندین مکان داشته باشد.
    • بخش ها با نام، D_no، مکان شناسایی می شوند.
    • یک مدیر بخش خاصی را کنترل می کند.
    • هر بخش با تعدادی پروژه مرتبط است.
    • کارمندان با نام، شناسه، آدرس، dob، dat و_of_joining شناسایی می شوند.
    • یک کارمند فقط در یک بخش کار می کند اما می تواند روی چندین پروژه کار کند.
    • ما همچنین تعداد ساعات کار یک کارمند در یک پروژه را پیگیری می کنیم.
    • هر کارمند وابسته ای دارد
    • وابسته دارای D_name، جنسیت و رابطه است.

نمودار ER یک شرکت:

نمودار ER یک شرکت اطلاعات کلیدی در مورد شرکت، از جمله نهادهایی مانند کارمند، بخش، پروژه و وابسته را نشان می دهد و این اجازه را می دهد تا روابط بین موجودات را درک کنید.

موجودیت ها و ویژگی ها:

    • Entity کارمند: ویژگی های Employee Entity عبارتند از: نام، شناسه، آدرس، جنسیت، Dob و Doj. شناسه کلید اصلی برای نهاد کارمند است.
    • نهاد دپارتمان: ویژگی های نهاد دپارتمان عبارتند از D_no، نام و مکان. D_no کلید اصلی برای نهاد بخش است.
    • نهاد پروژه: ویژگی های نهاد پروژه عبارتند از P_No، نام و مکان. P_No کلید اصلی برای نهاد پروژه است.
    • Dependent Entity: ویژگی های Dependent Entity عبارتند از D_no، جنسیت و رابطه.
    • روابط عبارتند از:
    • کارمندان در بخش ها کار می کنند – بسیاری از کارمندان در یک بخش کار می کنند اما یک کارمند نمی تواند در بسیاری از بخش ها کار کند.
    • مدیر یک بخش را کنترل می کند – کارمند زیر نظر مدیر بخش کار می کند و مدیر تاریخ پیوستن کارمندان به بخش را ثبت می کند.
    • بخش پروژه های زیادی دارد – یک بخش پروژه های زیادی دارد اما یک پروژه نمی تواند تحت بسیاری از بخش ها قرار گیرد.
    • کارمند روی پروژه کار می کند – یک کارمند روی چندین پروژه کار می کند و تعداد ساعات کار کارمند در یک پروژه ثبت می شود.
    • کارمند وابستگان دارد – هر کارمند وابستگانی دارد. هر کارمند فقط به یک کارمند وابسته است.
https://www.geeksforgeeks.org/er-diagram-of-a-company

موجودیت / Entity

یک چیز – مانند یک خانه، شی، مفهوم یا رویداد – که می تواند داده های مربوط به آن را ذخیره کند

مثال: مشتری، دانش آموز، خودرو یا محصول

معمولاً به صورت مستطیل نشان داده می شود

ارتباط / Relationships

چگونه موجودیت ها بر روی یکدیگر عمل می کنند یا با یکدیگر مرتبط هستند

به عنوان مثال، دانشجوی نامبرده ممکن است برای یک دوره ثبت نام کند. دو نهاد دانشجو و دوره خواهند بود، و رابطه نشان داده شده عمل ثبت نام است که این دو نهاد را به این طریق به هم متصل می کند

معمولاً به صورت الماس یا برچسب مستقیماً روی خطوط اتصال نشان داده می شود

صفت / Attribut

یک ویژگی یا ویژگی یک موجودیت

اغلب به صورت بیضی یا دایره نشان داده می شود

کاردینالیتی

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

انواع مختلف روابط اصلی عبارتند از:

    • روابط یک به یک
    • روابط یک به چند
    • روابط چند به یک
    • روابط چند به چند

عناصر یک نمودار موجودیت-رابطه /  Elements of an Entity-Relationship Diagram: 

مدل‌سازی ER به شما کمک می‌کند تا نیازهای داده‌ها را به طور سیستماتیک تجزیه و تحلیل کنید تا یک دیتابیس ها با طراحی خوب تولید کنید. تکمیل مدل‌سازی ER قبل از پیاده‌سازی دیتابیس ها، بهترین عمل در نظر گرفته می‌شود.

https://www.oracle.com/ph/database/what-is-a-relational-database

نرمال سازی پایگاه داده

نرمال سازی یک فرآیند اساسی در توسعه پایگاه داده است که هدف آن بهینه سازی ساختار یک پایگاه داده برای به حداقل رساندن افزونگی و اطمینان از یکپارچگی داده ها است. هدف ایجاد یک ساختار داده منعطف و کارآمد است که نگهداری آن آسان باشد. این امر با استفاده از فرم‌های معمولی مختلف به دست می‌آید که هر کدام الزامات خاصی را در ساختار جداول پایگاه داده قرار می‌دهند.

بیایید با یک مثال ساده شروع کنیم: فرض کنید یک جدول پایگاه داده داریم که در آن اطلاعات کتاب ها و نویسندگان آنها را ذخیره می کنیم. این جدول شامل ستون هایی برای شناسه کتاب، عنوان کتاب، نام نویسنده و ایمیل نویسنده است. مشکلات متعددی در این ساختار اولیه ممکن است ایجاد شود، مانند تکرار اطلاعات نویسنده زمانی که نویسنده چندین کتاب نوشته است.

اولین فرم طبیعی (1NF)

اولین شکل نرمال مستلزم آن است که هر ستون در هر جدول حاوی مقادیر اتمی باشد، یعنی مقادیری که نمی توان بیشتر به واحدهای کوچکتر تقسیم کرد. علاوه بر این، هر مقدار در یک ستون باید از یک نوع باشد و هر ستون باید منحصراً قابل شناسایی باشد.

در مثال ما، این بدان معناست که اگر یک کتاب چندین نویسنده داشته باشد، ساختار داده باید تغییر کند تا هر ردیف دارای یک ترکیب کتاب و نویسنده منحصر به فرد باشد. این را می توان با افزودن خطوط اضافی برای هر جفت نویسنده-کتاب به دست آورد.

فرم طبیعی دوم (2NF)

برای تبدیل یک پایگاه داده به فرم دوم عادی، ابتدا باید فرم اول عادی را برآورده کند. علاوه بر این، هر ستون غیر کلیدی باید به طور کامل به کلید اصلی وابسته باشد. این بدان معنی است که تمام اطلاعات یک خط باید مستقیماً با کلید خط مرتبط باشد.

در مثال ما، این بدان معناست که اگر اطلاعات نویسندگان به طور مستقیم به کتاب وابسته نباشد (از آنجایی که یک نویسنده می تواند چندین کتاب بنویسد)، این اطلاعات باید در یک جدول جداگانه جدا شود. بنابراین می‌توانیم یک جدول نویسنده‌ها و یک جدول کتاب‌ها ایجاد کنیم که از طریق یک جدول سوم به نام جدول پیوند به هم مرتبط شده‌اند تا روابط بین کتاب‌ها و نویسندگان را نشان دهند.

فرم سوم عادی (3NF)

یک پایگاه داده در حالت سوم عادی است اگر فرم عادی دوم را برآورده کند و علاوه بر این هیچ وابستگی گذرای ستون های غیر کلیدی روی کلید اصلی وجود نداشته باشد. یک وابستگی گذرا زمانی رخ می دهد که یک ستون غیر کلیدی به ستون غیر کلیدی دیگری وابسته باشد.

به عنوان مثال، اگر جدول نویسندگان شامل ستونی برای کشور نویسنده باشد و هر بار که نویسنده اضافه می شود، کشور تکرار می شود، این اطلاعات می تواند به یک جدول جداگانه منتقل شود. بنابراین می توانید یک جدول کشور ایجاد کنید و سپس جدول نویسندگان از طریق شناسه کشور به جدول کشور مرتبط می شود.

فرم های معمولی تر

همچنین فرم چهارم (4NF) و پنجمین فرم طبیعی (5NF) وجود دارد که برای جلوگیری از انواع پیچیده‌تر افزونگی‌ها و ناهنجاری‌ها، الزامات خاص تری نیز دارند. چهارمین فرم عادی وابستگی‌های چند ارزشی را مدیریت می‌کند، و پنجمین فرم عادی با هدف از بین بردن هرگونه ناهنجاری باقی‌مانده با اطمینان از شکسته شدن داده‌ها به قطعات کوچک‌تر و قابل ترکیب بدون از دست دادن هیچ اطلاعاتی، انجام می‌شود.

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

مروری بر دستورات مختلف SQL

SQL یک زبان برای برقراری ارتباط با پایگاه داده است. این زبان در برقراری ارتباط با پایگاه داده‌های رابطه‌ای برای بازیابی و مدیریت اطلاعات کاربردهای زیادی دارد. دستورات SQL به دسته‌های مختلفی تقسیم می‌شوند که در ادامه به شرح آن‌ها می‌پردازیم.

در اینجا پنج نوع پرس و جوی پرکاربرد آورده شده است / five types of widely used SQL queries:

    •      زبان تعریف داده (DDL)
    •      زبان دستکاری داده ها (DML)
    •      زبان کنترل داده (DCL)
    •      زبان کنترل تراکنش (TCL)
    •      زبان جستجوی داده (DQL)

DDL – زبان تعریف داده

زبان تعریف داده (DDL) به شما کمک می کند تا ساختار بانک اطلاعاتی یا طرحواره (schema) را تعریف کنید. بیایید نگاهی به دستورات DDL و نحوه استفاده از آن ها بیاندازیم. مهم‌ترین دستورات DDL عبارتند از:

CREATE (ایجاد کردن) : از این دستور برای تعریف و ساخت ساختار پایگاه داده استفاده می‌شود.

نحو (Syntax):

SQL
CREATE TABLE table_name (column_name datatype[,….]);

مثال:

SQL
CREATE DATABASE university;
CREATE TABLE students;
CREATE VIEW for_students;

DROP (حذف کردن) : این دستور برای حذف جداول و پایگاه داده از سیستم مدیریت پایگاه داده رابطه‌ای (DBMS) استفاده می شود.

نحو:

SQL
DROP TABLE table_name;

مثال:

SQL
DROP DATABASE university;
DROP TABLE students;

ALTER (تغییر دادن) : برای تغییر ساختار یک دیتابیس می توانید از این دستور استفاده کنید. نحو:

برای اضافه کردن یک ستون جدید به جدول:

SQL
ALTER TABLE table_name ADD column_name column_definition;

برای تغییر دادن یک ستون:

SQL
ALTER TABLE table_name MODIFY (column_definition, … );

مثال:

SQL
ALTER TABLE guru99 ADD subject varchar;

TRUNCATE (خالی کردن) : با این دستور می‌توانید تمام سطرهای یک جدول را حذف کنید و فضای آن جدول را آزاد نمایید.

نحو:

SQL
TRUNCATE TABLE table_name;

مثال:

SQL

;TRUNCATE TABLE students

DML – زبان دستکاری داده‌ها

زبان دستکاری داده ها (DML) به شما این امکان را می دهد که محتوای پایگاه داده را با اضافه کردن، تغییر یا حذف داده‌ها، دستکاری کنید. دستورات اصلی DML عبارتند از:

INSERT (درج کردن) : این دستور برای اضافه کردن ردیف‌های جدید به یک جدول استفاده می‌شود.

نحو:

SQL
INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …);

مثال:

SQL
INSERT INTO students (RollNo, FirstName, LastName) VALUES (’60’, ‘Tom’, ‘Erichsen’);

UPDATE (بروزرسانی کردن) : از این دستور زمانی استفاده می شود که می‌خواهید داده‌های موجود در جدول را تغییر دهید.

نحو:

SQL
UPDATE table_name SET [column_name1 = value1, … ] [WHERE condition];

مثال:

SQL
UPDATE students SET FirstName = ‘John’, LastName = ‘Wick’ WHERE StudID = 3;

    • DELETE (حذف کردن) : برای حذف یک یا چند سطر از جدول استفاده می‌شود.
    • نحو:

SQL
DELETE FROM table_name [WHERE condition];

    • مثال:

SQL

‘DELETE FROM students WHERE FirstName = ‘Joh’;

DCL – زبان کنترل داده

زبان کنترل داده‌ها (DCL) برای کنترل دسترسی به داده‌ها بکار می‌رود و شامل دستوراتی مانند GRANT و REVOKE است. دستورات DCL عبارتند از:

    • GRANT (اعطا کردن) : برای اعطای دسترسی کاربر به بانک اطلاعاتی از این دستور استفاده می شود.
    • REVOKE (باطل کردن) : برای پس گرفتن دسترسی کاربر استفاده می‌شود.

TCL – زبان کنترل تراکنش

زبان کنترل تراکنش (TCL) با تراکنش‌های مربوط به پایگاه داده سروکار دارد. از مهم‌ترین دستورات TCL می‌توانیم به موارد زیر اشاره کنیم:

    • COMMIT (ثبت کردن) : این دستور تمام تراکنش ها را در پایگاه داده ذخیره می کند.
    • ROLLBACK (برگرداندن) : این دستور برای لغو تراکنش ها قبل از ذخیره شدن در پایگاه داده استفاده می شود.
    • SAVEPOINT (ذخیره کردن بخشی از تراکنش): این دستور مشخص می کند تا چه قسمتی از تراکنش را میخواهید ذخیره کنید.
    • DQL – زبان پرس و جو
    • زبان پرس و جو (DQL) برای بازیابی داده از پایگاه داده استفاده می شود. تنها دستور DQL دستور SELECT است:
    • SELECT (انتخاب) : از این دستور برای انتخاب ویژگی ها بر اساس شرطی که با عبارت WHERE مشخص می‌شود، استفاده می‌شود.