|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
کار با دادهها: پایگاه دادههای رابطهای
![]() |
---|
کار با دادهها: پایگاه دادههای رابطهای - طرحنگاری توسط @nitya |
احتمالاً در گذشته از یک صفحه گسترده برای ذخیره اطلاعات استفاده کردهاید. شما مجموعهای از ردیفها و ستونها داشتید، که ردیفها شامل اطلاعات (یا دادهها) بودند و ستونها اطلاعات را توصیف میکردند (گاهی اوقات به آنها متاداده گفته میشود). یک پایگاه داده رابطهای بر اساس این اصل اصلی ستونها و ردیفها در جداول ساخته شده است، که به شما امکان میدهد اطلاعات را در چندین جدول پخش کنید. این به شما اجازه میدهد با دادههای پیچیدهتر کار کنید، از تکرار جلوگیری کنید و انعطافپذیری بیشتری در نحوه بررسی دادهها داشته باشید. بیایید مفاهیم پایگاه داده رابطهای را بررسی کنیم.
پیشازدرس: آزمون
همه چیز از جداول شروع میشود
یک پایگاه داده رابطهای در هسته خود جداول دارد. درست مانند صفحه گسترده، یک جدول مجموعهای از ستونها و ردیفها است. ردیف شامل دادهها یا اطلاعاتی است که میخواهیم با آنها کار کنیم، مانند نام یک شهر یا میزان بارندگی. ستونها دادههایی را که ذخیره میکنند توصیف میکنند.
بیایید بررسی خود را با شروع یک جدول برای ذخیره اطلاعات درباره شهرها آغاز کنیم. ممکن است با نام و کشور آنها شروع کنیم. شما میتوانید این اطلاعات را به صورت زیر در یک جدول ذخیره کنید:
شهر | کشور |
---|---|
توکیو | ژاپن |
آتلانتا | ایالات متحده |
آوکلند | نیوزیلند |
توجه کنید که نام ستونهای شهر، کشور و جمعیت دادههای ذخیرهشده را توصیف میکنند و هر ردیف اطلاعات مربوط به یک شهر را دارد.
محدودیتهای رویکرد تکجدولی
احتمالاً جدول بالا برای شما نسبتاً آشنا به نظر میرسد. بیایید شروع به افزودن دادههای اضافی به پایگاه داده در حال رشد خود کنیم - بارندگی سالانه (بر حسب میلیمتر). ما بر سالهای ۲۰۱۸، ۲۰۱۹ و ۲۰۲۰ تمرکز خواهیم کرد. اگر بخواهیم آن را برای توکیو اضافه کنیم، ممکن است چیزی شبیه به این باشد:
شهر | کشور | سال | مقدار |
---|---|---|---|
توکیو | ژاپن | ۲۰۲۰ | ۱۶۹۰ |
توکیو | ژاپن | ۲۰۱۹ | ۱۸۷۴ |
توکیو | ژاپن | ۲۰۱۸ | ۱۴۴۵ |
چه چیزی در مورد جدول ما متوجه میشوید؟ ممکن است متوجه شوید که نام و کشور شهر را بارها و بارها تکرار میکنیم. این میتواند فضای ذخیرهسازی زیادی را اشغال کند و تا حد زیادی غیرضروری است که چندین نسخه از آن داشته باشیم. به هر حال، توکیو فقط یک نام دارد که ما به آن علاقهمندیم.
خب، بیایید چیز دیگری را امتحان کنیم. بیایید ستونهای جدیدی برای هر سال اضافه کنیم:
شهر | کشور | ۲۰۱۸ | ۲۰۱۹ | ۲۰۲۰ |
---|---|---|---|---|
توکیو | ژاپن | ۱۴۴۵ | ۱۸۷۴ | ۱۶۹۰ |
آتلانتا | ایالات متحده | ۱۷۷۹ | ۱۱۱۱ | ۱۶۸۳ |
آوکلند | نیوزیلند | ۱۳۸۶ | ۹۴۲ | ۱۱۷۶ |
در حالی که این روش از تکرار ردیفها جلوگیری میکند، چند چالش دیگر را اضافه میکند. ما باید هر بار که سال جدیدی وجود دارد، ساختار جدول خود را تغییر دهیم. علاوه بر این، با رشد دادههای ما، داشتن سالها به عنوان ستونها باعث میشود که بازیابی و محاسبه مقادیر دشوارتر شود.
به همین دلیل است که ما به جداول متعدد و روابط نیاز داریم. با تقسیم دادههای خود، میتوانیم از تکرار جلوگیری کنیم و انعطافپذیری بیشتری در نحوه کار با دادهها داشته باشیم.
مفاهیم روابط
بیایید به دادههای خود بازگردیم و تعیین کنیم که چگونه میخواهیم آنها را تقسیم کنیم. میدانیم که میخواهیم نام و کشور شهرهای خود را ذخیره کنیم، بنابراین این احتمالاً در یک جدول بهتر عمل میکند.
شهر | کشور |
---|---|
توکیو | ژاپن |
آتلانتا | ایالات متحده |
آوکلند | نیوزیلند |
اما قبل از اینکه جدول بعدی را ایجاد کنیم، باید بفهمیم چگونه هر شهر را ارجاع دهیم. ما به نوعی شناسه، ID یا (در اصطلاح فنی پایگاه داده) کلید اصلی نیاز داریم. کلید اصلی مقداری است که برای شناسایی یک ردیف خاص در جدول استفاده میشود. در حالی که این میتواند بر اساس یک مقدار باشد (میتوانیم از نام شهر استفاده کنیم، برای مثال)، تقریباً همیشه باید یک عدد یا شناسه دیگر باشد. نمیخواهیم شناسه هرگز تغییر کند زیرا این باعث شکستن رابطه میشود. در بیشتر موارد، کلید اصلی یا شناسه یک عدد خودکار تولید شده خواهد بود.
✅ کلید اصلی اغلب به صورت PK خلاصه میشود
شهرها
city_id | شهر | کشور |
---|---|---|
۱ | توکیو | ژاپن |
۲ | آتلانتا | ایالات متحده |
۳ | آوکلند | نیوزیلند |
✅ شما متوجه خواهید شد که ما از اصطلاحات "شناسه" و "کلید اصلی" به صورت متناوب در طول این درس استفاده میکنیم. مفاهیم اینجا به DataFrames نیز اعمال میشوند، که بعداً آنها را بررسی خواهید کرد. DataFrames از اصطلاح "کلید اصلی" استفاده نمیکنند، اما شما متوجه خواهید شد که آنها تقریباً به همان شیوه عمل میکنند.
با ایجاد جدول شهرها، بیایید بارندگی را ذخیره کنیم. به جای تکرار اطلاعات کامل درباره شهر، میتوانیم از شناسه استفاده کنیم. همچنین باید اطمینان حاصل کنیم که جدول تازه ایجاد شده دارای یک ستون شناسه نیز باشد، زیرا همه جداول باید یک شناسه یا کلید اصلی داشته باشند.
بارندگی
rainfall_id | city_id | سال | مقدار |
---|---|---|---|
۱ | ۱ | ۲۰۱۸ | ۱۴۴۵ |
۲ | ۱ | ۲۰۱۹ | ۱۸۷۴ |
۳ | ۱ | ۲۰۲۰ | ۱۶۹۰ |
۴ | ۲ | ۲۰۱۸ | ۱۷۷۹ |
۵ | ۲ | ۲۰۱۹ | ۱۱۱۱ |
۶ | ۲ | ۲۰۲۰ | ۱۶۸۳ |
۷ | ۳ | ۲۰۱۸ | ۱۳۸۶ |
۸ | ۳ | ۲۰۱۹ | ۹۴۲ |
۹ | ۳ | ۲۰۲۰ | ۱۱۷۶ |
توجه کنید به ستون city_id در جدول تازه ایجاد شده بارندگی. این ستون شامل مقادیری است که به شناسههای جدول شهرها اشاره میکنند. در اصطلاح فنی دادههای رابطهای، این به عنوان کلید خارجی شناخته میشود؛ این یک کلید اصلی از جدول دیگر است. شما میتوانید به سادگی آن را به عنوان یک مرجع یا اشارهگر در نظر بگیرید. city_id ۱ به توکیو اشاره میکند.
[!NOTE] کلید خارجی اغلب به صورت FK خلاصه میشود
بازیابی دادهها
با جدا کردن دادههای خود به دو جدول، ممکن است از خود بپرسید چگونه آنها را بازیابی کنیم. اگر از یک پایگاه داده رابطهای مانند MySQL، SQL Server یا Oracle استفاده کنیم، میتوانیم از زبانی به نام زبان پرسوجوی ساختاریافته یا SQL استفاده کنیم. SQL (گاهی اوقات به صورت "سیکوئل" تلفظ میشود) یک زبان استاندارد است که برای بازیابی و اصلاح دادهها در یک پایگاه داده رابطهای استفاده میشود.
برای بازیابی دادهها از دستور SELECT
استفاده میکنید. در هسته خود، شما ستونهایی را که میخواهید ببینید انتخاب میکنید و از جدولی که در آن قرار دارند. اگر بخواهید فقط نام شهرها را نمایش دهید، میتوانید از دستور زیر استفاده کنید:
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- Auckland
SELECT
جایی است که ستونها را لیست میکنید و FROM
جایی است که جداول را لیست میکنید.
[NOTE] نحو SQL حساس به حروف بزرگ و کوچک نیست، به این معنی که
select
وSELECT
یکسان هستند. با این حال، بسته به نوع پایگاه دادهای که استفاده میکنید، ستونها و جداول ممکن است حساس به حروف بزرگ و کوچک باشند. به همین دلیل، بهترین روش این است که همیشه همه چیز را در برنامهنویسی حساس به حروف بزرگ و کوچک در نظر بگیرید. هنگام نوشتن پرسوجوهای SQL، عرف رایج این است که کلمات کلیدی را با حروف بزرگ بنویسید.
پرسوجوی بالا تمام شهرها را نمایش خواهد داد. بیایید تصور کنیم که فقط میخواهیم شهرهای نیوزیلند را نمایش دهیم. ما به نوعی فیلتر نیاز داریم. کلمه کلیدی SQL برای این کار WHERE
است، یا "جایی که چیزی درست است".
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Auckland
اتصال دادهها
تا کنون دادهها را از یک جدول بازیابی کردهایم. اکنون میخواهیم دادهها را از هر دو جدول شهرها و بارندگی با هم ترکیب کنیم. این کار با اتصال آنها انجام میشود. شما اساساً یک پیوند بین دو جدول ایجاد میکنید و مقادیر یک ستون از هر جدول را با هم تطبیق میدهید.
در مثال ما، ستون city_id در بارندگی را با ستون city_id در شهرها تطبیق خواهیم داد. این کار مقدار بارندگی را با شهر مربوطه تطبیق میدهد. نوع اتصالی که انجام خواهیم داد چیزی است که به عنوان اتصال داخلی شناخته میشود، به این معنی که اگر هر ردیفی با چیزی از جدول دیگر مطابقت نداشته باشد، نمایش داده نمیشود. در مورد ما، هر شهر بارندگی دارد، بنابراین همه چیز نمایش داده خواهد شد.
بیایید بارندگی سال ۲۰۱۹ را برای تمام شهرهای خود بازیابی کنیم.
ما این کار را در مراحل انجام خواهیم داد. اولین مرحله اتصال دادهها با مشخص کردن ستونهای پیوند - city_id همانطور که قبلاً برجسته شد.
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
ما دو ستون مورد نظر را برجسته کردهایم و این واقعیت که میخواهیم جداول را با city_id به هم متصل کنیم. اکنون میتوانیم عبارت WHERE
را اضافه کنیم تا فقط سال ۲۰۱۹ را فیلتر کنیم.
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942
خلاصه
پایگاه دادههای رابطهای بر تقسیم اطلاعات بین چندین جدول متمرکز هستند که سپس برای نمایش و تحلیل دوباره با هم ترکیب میشوند. این انعطافپذیری بالایی برای انجام محاسبات و دستکاری دادهها فراهم میکند. شما مفاهیم اصلی یک پایگاه داده رابطهای و نحوه انجام اتصال بین دو جدول را مشاهده کردهاید.
🚀 چالش
پایگاه دادههای رابطهای متعددی در اینترنت موجود هستند. شما میتوانید با استفاده از مهارتهایی که در بالا آموختهاید، دادهها را بررسی کنید.
آزمون پس از درس
آزمون پس از درس
مرور و مطالعه شخصی
منابع متعددی در Microsoft Learn برای ادامه بررسی مفاهیم SQL و پایگاه دادههای رابطهای در دسترس شما هستند:
- توصیف مفاهیم دادههای رابطهای
- شروع کار با پرسوجوهای Transact-SQL (Transact-SQL نسخهای از SQL است)
- محتوای SQL در Microsoft Learn
تکلیف
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نادرستیهایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفهای انسانی توصیه میشود. ما هیچ مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.