Skip to content

Latest commit

 

History

History
190 lines (128 loc) · 14.4 KB

File metadata and controls

190 lines (128 loc) · 14.4 KB

العمل مع البيانات: قواعد البيانات العلائقية

 ملاحظة مرسومة بواسطة (@sketchthedocs)
العمل مع البيانات: قواعد البيانات العلائقية - ملاحظة مرسومة بواسطة @nitya

من المحتمل أنك قد استخدمت جدول بيانات في الماضي لتخزين المعلومات. كان لديك مجموعة من الصفوف والأعمدة، حيث تحتوي الصفوف على المعلومات (أو البيانات)، وتصف الأعمدة المعلومات (تسمى أحيانًا بيانات وصفية). تُبنى قاعدة البيانات العلائقية على هذا المبدأ الأساسي للأعمدة والصفوف في الجداول، مما يسمح لك بانتشار المعلومات عبر جداول متعددة. هذا يتيح لك العمل مع بيانات أكثر تعقيدًا، وتجنب التكرار، والحصول على مرونة في طريقة استكشاف البيانات. دعونا نستكشف مفاهيم قاعدة البيانات العلائقية.

كل شيء يبدأ بالجداول

تحتوي قاعدة البيانات العلائقية في جوهرها على جداول. تمامًا كما هو الحال مع جدول البيانات، الجدول هو مجموعة من الأعمدة والصفوف. يحتوي الصف على البيانات أو المعلومات التي نرغب في العمل معها، مثل اسم مدينة أو كمية هطول الأمطار. تصف الأعمدة البيانات التي تخزنها.

لنبدأ استكشافنا ببدء جدول لتخزين معلومات عن المدن. قد نبدأ بأسمائها وبلدانها. يمكنك تخزين هذا في جدول كما يلي:

المدينة البلد
طوكيو اليابان
أتلانتا الولايات المتحدة
أوكلاند نيوزيلندا

لاحظ أن أسماء الأعمدة المدينة، البلد والسكان تصف البيانات المخزنة، ولكل صف معلومات عن مدينة واحدة.

عيوب نهج الجدول الواحد

من المحتمل أن الجدول أعلاه يبدو مألوفًا نسبيًا لك. دعونا نبدأ بإضافة بعض البيانات الإضافية إلى قاعدة البيانات الناشئة لدينا - هطول الأمطار السنوي (بالمليمترات). سنركز على السنوات 2018، 2019 و2020. إذا أردنا إضافتها لطوكيو، فقد تبدو هكذا:

المدينة البلد السنة الكمية
طوكيو اليابان 2020 1690
طوكيو اليابان 2019 1874
طوكيو اليابان 2018 1445

ماذا تلاحظ عن جدولنا؟ قد تلاحظ أننا نكرر اسم وبلد المدينة مرارًا وتكرارًا. قد يشغل ذلك مساحة تخزين كبيرة، وهو غير ضروري إلى حد كبير أن يكون هناك نسخ متعددة منه. بعد كل شيء، طوكيو لها اسم واحد فقط نهتم به.

حسنًا، دعونا نجرب شيئًا آخر. دعونا نضيف أعمدة جديدة لكل سنة:

المدينة البلد 2018 2019 2020
طوكيو اليابان 1445 1874 1690
أتلانتا الولايات المتحدة 1779 1111 1683
أوكلاند نيوزيلندا 1386 942 1176

بينما يتجنب هذا تكرار الصفوف، فإنه يضيف بعض التحديات الأخرى. سنحتاج إلى تعديل هيكل جدولنا في كل مرة يظهر فيها عام جديد. بالإضافة إلى ذلك، مع نمو بياناتنا، وجود السنوات كأعمدة سيجعل من الصعب استرجاع القيم وحسابها.

لهذا السبب نحتاج إلى جداول متعددة وعلاقات. من خلال تقسيم بياناتنا، يمكننا تجنب التكرار والحصول على مزيد من المرونة في كيفية العمل مع بياناتنا.

مفاهيم العلاقات

لنعد إلى بياناتنا ونحدد كيف نريد تقسيم الأشياء. نعلم أننا نريد تخزين الاسم والبلد لمدننا، لذا من المحتمل أن يعمل هذا بشكل أفضل في جدول واحد.

المدينة البلد
طوكيو اليابان
أتلانتا الولايات المتحدة
أوكلاند نيوزيلندا

ولكن قبل إنشاء الجدول التالي، نحتاج إلى معرفة كيفية الإشارة إلى كل مدينة. نحتاج إلى شكل من أشكال المعرف، أو رقم تعريف أو (بمصطلحات قواعد البيانات التقنية) مفتاح أساسي. المفتاح الأساسي هو قيمة تُستخدم لتحديد صف معين في جدول. بينما يمكن أن يكون هذا مستندًا إلى قيمة بحد ذاتها (يمكننا استخدام اسم المدينة، على سبيل المثال)، يجب أن يكون دائمًا تقريبًا رقمًا أو معرفًا آخر. لا نريد أن يتغير المعرف أبدًا لأنه سيكسر العلاقة. ستجد في معظم الحالات أن المفتاح الأساسي أو المعرف سيكون رقمًا يتم إنشاؤه تلقائيًا.

✅ يُختصر المفتاح الأساسي غالبًا بـ PK

المدن

city_id المدينة البلد
1 طوكيو اليابان
2 أتلانتا الولايات المتحدة
3 أوكلاند نيوزيلندا

✅ ستلاحظ أننا نستخدم مصطلحي "id" و"المفتاح الأساسي" بالتبادل خلال هذا الدرس. المفاهيم هنا تنطبق على DataFrames، التي ستستكشفها لاحقًا. لا تستخدم DataFrames مصطلح "المفتاح الأساسي"، لكنك ستلاحظ أنها تتصرف بطريقة مشابهة.

مع إنشاء جدول المدن، دعونا نخزن هطول الأمطار. بدلاً من تكرار المعلومات الكاملة عن المدينة، يمكننا استخدام المعرف. يجب علينا أيضًا التأكد من أن الجدول الجديد يحتوي على عمود id أيضًا، حيث يجب أن تحتوي جميع الجداول على معرف أو مفتاح أساسي.

هطول الأمطار

rainfall_id city_id السنة الكمية
1 1 2018 1445
2 1 2019 1874
3 1 2020 1690
4 2 2018 1779
5 2 2019 1111
6 2 2020 1683
7 3 2018 1386
8 3 2019 942
9 3 2020 1176

لاحظ عمود city_id داخل جدول هطول الأمطار الجديد. يحتوي هذا العمود على قيم تشير إلى المعرفات في جدول المدن. بمصطلحات البيانات العلائقية التقنية، يُسمى هذا مفتاحًا أجنبيًا؛ إنه مفتاح أساسي من جدول آخر. يمكنك التفكير فيه فقط كمرجع أو مؤشر. city_id 1 تشير إلى طوكيو.

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 في المدن. هذا سيطابق قيمة هطول الأمطار مع مدينتها المقابلة. نوع الدمج الذي سنقوم به يسمى الدمج الداخلي، مما يعني إذا لم تتطابق أي صفوف مع أي شيء من الجدول الآخر فلن يتم عرضها. في حالتنا، كل مدينة لها بيانات هطول أمطار، لذا سيتم عرض كل شيء.

دعونا نسترجع هطول الأمطار لعام 2019 لكل مدننا.

سنقوم بذلك على مراحل. الخطوة الأولى هي دمج البيانات معًا عن طريق تحديد الأعمدة للوصلة - city_id كما تم تمييزه سابقًا.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

لقد قمنا بتمييز العمودين اللذين نريدهما، وحقيقة أننا نريد دمج الجداول معًا بواسطة city_id. الآن يمكننا إضافة جملة WHERE لتصفية السنة 2019 فقط.

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. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.