15 KiB
العمل مع البيانات: قواعد البيانات العلائقية
![]() |
---|
العمل مع البيانات: قواعد البيانات العلائقية - رسم توضيحي بواسطة @nitya |
من المحتمل أنك استخدمت جدول بيانات في الماضي لتخزين المعلومات. كان لديك مجموعة من الصفوف والأعمدة، حيث تحتوي الصفوف على المعلومات (أو البيانات)، وتصف الأعمدة هذه المعلومات (تُعرف أحيانًا بالبيانات الوصفية). قاعدة البيانات العلائقية تعتمد على هذا المبدأ الأساسي للأعمدة والصفوف في الجداول، مما يتيح لك توزيع المعلومات عبر جداول متعددة. هذا يسمح لك بالعمل مع بيانات أكثر تعقيدًا، وتجنب التكرار، والحصول على مرونة في طريقة استكشاف البيانات. دعونا نستكشف مفاهيم قاعدة البيانات العلائقية.
اختبار ما قبل المحاضرة
كل شيء يبدأ بالجداول
تحتوي قاعدة البيانات العلائقية في جوهرها على جداول. تمامًا مثل جدول البيانات، الجدول هو مجموعة من الأعمدة والصفوف. يحتوي الصف على البيانات أو المعلومات التي نرغب في العمل معها، مثل اسم مدينة أو كمية الأمطار. تصف الأعمدة البيانات التي تخزنها.
لنبدأ استكشافنا بإنشاء جدول لتخزين معلومات حول المدن. قد نبدأ باسم المدينة والدولة. يمكنك تخزين ذلك في جدول كما يلي:
المدينة | الدولة |
---|---|
طوكيو | اليابان |
أتلانتا | الولايات المتحدة |
أوكلاند | نيوزيلندا |
لاحظ أن أسماء الأعمدة المدينة، الدولة وعدد السكان تصف البيانات المخزنة، وكل صف يحتوي على معلومات عن مدينة واحدة.
عيوب نهج الجدول الواحد
من المحتمل أن يبدو الجدول أعلاه مألوفًا بالنسبة لك. دعونا نبدأ بإضافة بعض البيانات الإضافية إلى قاعدة البيانات الناشئة - كمية الأمطار السنوية (بالمليمترات). سنركز على السنوات 2018، 2019 و2020. إذا أردنا إضافتها لطوكيو، فقد يبدو الأمر كما يلي:
المدينة | الدولة | السنة | الكمية |
---|---|---|---|
طوكيو | اليابان | 2020 | 1690 |
طوكيو | اليابان | 2019 | 1874 |
طوكيو | اليابان | 2018 | 1445 |
ماذا تلاحظ في جدولنا؟ قد تلاحظ أننا نكرر اسم المدينة والدولة مرارًا وتكرارًا. هذا قد يستهلك مساحة تخزين كبيرة، وهو غير ضروري إلى حد كبير. بعد كل شيء، طوكيو لها اسم واحد فقط نهتم به.
حسنًا، دعونا نجرب شيئًا آخر. لنضيف أعمدة جديدة لكل سنة:
المدينة | الدولة | 2018 | 2019 | 2020 |
---|---|---|---|---|
طوكيو | اليابان | 1445 | 1874 | 1690 |
أتلانتا | الولايات المتحدة | 1779 | 1111 | 1683 |
أوكلاند | نيوزيلندا | 1386 | 942 | 1176 |
بينما نتجنب تكرار الصفوف، فإننا نضيف تحديات أخرى. سنحتاج إلى تعديل هيكل الجدول في كل مرة توجد فيها سنة جديدة. بالإضافة إلى ذلك، مع نمو بياناتنا، وجود السنوات كأعمدة سيجعل من الصعب استرجاع القيم وحسابها.
لهذا السبب نحتاج إلى جداول متعددة وعلاقات. من خلال تقسيم بياناتنا يمكننا تجنب التكرار والحصول على مرونة أكبر في كيفية العمل مع البيانات.
مفاهيم العلاقات
دعونا نعود إلى بياناتنا ونحدد كيف نريد تقسيمها. نعلم أننا نريد تخزين الاسم والدولة للمدن، لذا من المحتمل أن يعمل هذا بشكل أفضل في جدول واحد.
المدينة | الدولة |
---|---|
طوكيو | اليابان |
أتلانتا | الولايات المتحدة |
أوكلاند | نيوزيلندا |
لكن قبل أن ننشئ الجدول التالي، نحتاج إلى معرفة كيفية الإشارة إلى كل مدينة. نحتاج إلى نوع من المعرف، ID أو (في مصطلحات قواعد البيانات التقنية) مفتاح أساسي. المفتاح الأساسي هو قيمة تُستخدم لتحديد صف معين في الجدول. بينما يمكن أن يكون ذلك بناءً على قيمة نفسها (يمكننا استخدام اسم المدينة، على سبيل المثال)، يجب أن يكون دائمًا تقريبًا رقمًا أو معرفًا آخر. لا نريد أن يتغير المعرف أبدًا لأنه سيؤدي إلى كسر العلاقة. ستجد في معظم الحالات أن المفتاح الأساسي أو المعرف سيكون رقمًا يتم إنشاؤه تلقائيًا.
✅ المفتاح الأساسي يُختصر غالبًا بـ PK
المدن
city_id | المدينة | الدولة |
---|---|---|
1 | طوكيو | اليابان |
2 | أتلانتا | الولايات المتحدة |
3 | أوكلاند | نيوزيلندا |
✅ ستلاحظ أننا نستخدم المصطلحين "المعرف" و"المفتاح الأساسي" بالتبادل خلال هذا الدرس. تنطبق المفاهيم هنا على DataFrames، والتي ستستكشفها لاحقًا. لا تستخدم DataFrames مصطلح "المفتاح الأساسي"، ولكن ستلاحظ أنها تتصرف بنفس الطريقة تقريبًا.
مع إنشاء جدول المدن، دعونا نخزن بيانات الأمطار. بدلاً من تكرار المعلومات الكاملة عن المدينة، يمكننا استخدام المعرف. يجب أيضًا التأكد من أن الجدول الذي تم إنشاؤه حديثًا يحتوي على عمود معرف أيضًا، حيث يجب أن تحتوي جميع الجداول على معرف أو مفتاح أساسي.
الأمطار
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 وقواعد البيانات العلائقية
- وصف مفاهيم البيانات العلائقية
- ابدأ الاستعلام باستخدام Transact-SQL (Transact-SQL هو إصدار من SQL)
- محتوى SQL على Microsoft Learn
الواجب
إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.