You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 KiB

کار با داده‌ها: پایگاه داده‌های رابطه‌ای

طرح‌نگاری توسط (@sketchthedocs)
کار با داده‌ها: پایگاه داده‌های رابطه‌ای - طرح‌نگاری توسط @nitya

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

پرسش‌نامه پیش از درس

همه چیز از جداول شروع می‌شود

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

بیایید بررسی خود را با شروع یک جدول برای ذخیره اطلاعات درباره شهرها آغاز کنیم. ممکن است با نام و کشور آن‌ها شروع کنیم. شما می‌توانید این اطلاعات را به صورت زیر در یک جدول ذخیره کنید:

شهر کشور
توکیو ژاپن
آتلانتا ایالات متحده
آوکلند نیوزیلند

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

محدودیت‌های رویکرد یک جدول

احتمالاً جدول بالا برای شما نسبتاً آشنا به نظر می‌رسد. بیایید شروع به افزودن داده‌های اضافی به پایگاه داده در حال رشد خود کنیم - بارندگی سالانه (بر حسب میلی‌متر). ما بر سال‌های ۲۰۱۸، ۲۰۱۹ و ۲۰۲۰ تمرکز خواهیم کرد. اگر بخواهیم آن را برای توکیو اضافه کنیم، ممکن است چیزی شبیه به این باشد:

شهر کشور سال مقدار
توکیو ژاپن ۲۰۲۰ ۱۶۹۰
توکیو ژاپن ۲۰۱۹ ۱۸۷۴
توکیو ژاپن ۲۰۱۸ ۱۴۴۵

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

خب، بیایید چیز دیگری را امتحان کنیم. بیایید ستون‌های جدیدی برای هر سال اضافه کنیم:

شهر کشور ۲۰۱۸ ۲۰۱۹ ۲۰۲۰
توکیو ژاپن ۱۴۴۵ ۱۸۷۴ ۱۶۹۰
آتلانتا ایالات متحده ۱۷۷۹ ۱۱۱۱ ۱۶۸۳
آوکلند نیوزیلند ۱۳۸۶ ۹۴۲ ۱۱۷۶

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

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

مفاهیم روابط

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

شهر کشور
توکیو ژاپن
آتلانتا ایالات متحده
آوکلند نیوزیلند

اما قبل از اینکه جدول بعدی را ایجاد کنیم، باید بفهمیم چگونه هر شهر را ارجاع دهیم. ما به نوعی شناسه، ID یا (در اصطلاح فنی پایگاه داده) کلید اصلی نیاز داریم. کلید اصلی مقداری است که برای شناسایی یک ردیف خاص در یک جدول استفاده می‌شود. در حالی که این می‌تواند بر اساس یک مقدار باشد (می‌توانیم از نام شهر استفاده کنیم، برای مثال)، تقریباً همیشه باید یک عدد یا شناسه دیگر باشد. نمی‌خواهیم شناسه هرگز تغییر کند زیرا این باعث شکستن رابطه می‌شود. در بیشتر موارد، کلید اصلی یا شناسه یک عدد خودکار تولید شده خواهد بود.

کلید اصلی اغلب به صورت PK خلاصه می‌شود

شهرها

شناسههر شهر کشور
۱ توکیو ژاپن
۲ آتلانتا ایالات متحده
۳ آوکلند نیوزیلند

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

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

بارندگی

شناسهارندگی شناسههر سال مقدار
۱ ۱ ۲۰۱۸ ۱۴۴۵
۲ ۱ ۲۰۱۹ ۱۸۷۴
۳ ۱ ۲۰۲۰ ۱۶۹۰
۴ ۲ ۲۰۱۸ ۱۷۷۹
۵ ۲ ۲۰۱۹ ۱۱۱۱
۶ ۲ ۲۰۲۰ ۱۶۸۳
۷ ۳ ۲۰۱۸ ۱۳۸۶
۸ ۳ ۲۰۱۹ ۹۴۲
۹ ۳ ۲۰۲۰ ۱۱۷۶

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

[!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

اتصال داده‌ها

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

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

بیایید بارندگی سال ۲۰۱۹ را برای تمام شهرهای خود بازیابی کنیم.

ما این کار را در مراحل انجام خواهیم داد. اولین مرحله اتصال داده‌ها با مشخص کردن ستون‌های پیوند - شناسههر همانطور که قبلاً برجسته شد.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.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 و پایگاه داده‌های رابطه‌ای در دسترس شما هستند:

تکلیف

عنوان تکلیف


سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما برای دقت تلاش می‌کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادقتی‌هایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه انسانی حرفه‌ای توصیه می‌شود. ما هیچ مسئولیتی در قبال سوءتفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.