طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 121 · مبادئ قواعد البيانات
الدرس 1 · الوحدة 1: مفهوم قواعد البيانات وأهميته

ما قاعدة البيانات؟ من الملفات إلى الجداول

لماذا لا يكفي ملف Excel؟ وكيف تنظّم قاعدة البيانات المعلومات؟ ⏱ نحو 20 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تفرّق بين البيانات والمعلومات.
  • تشرح مشكلات حفظ البيانات في الملفات.
  • تعرّف قاعدة البيانات وأجزاء الجدول: الصف والعمود والخلية.
  • تشغّل أول استعلام SQL وتعدّله.

١البيانات حولنا في كل مكان

حين تسجّل في الكلية، أو تطلب من متجر إلكتروني، أو تسحب من الصرّاف، تُحفظ عنك بيانات: اسمك، ورقمك، وما طلبته، ومتى طلبته.

المعنىمثال
البيانات Dataحقائق خام مفردة، لا تعني الكثير وحدها.«سعود»، «35»، «2025-01-10»
المعلومات Informationبيانات نُظّمت ورُبطت فصار لها معنى يساعد على القرار.«سعود اشترى قهوة بـ 35 ريالًا يوم 10 يناير»

قاعدة البيانات تخزّن البيانات منظَّمة، حتى نستخرج منها المعلومات بسرعة ودقة.

٢قبل قواعد البيانات: ملف واحد كبير

تخيّل متجرًا صغيرًا يسجّل طلباته في ملف Excel واحد. بعد أشهر قليلة يبدو هكذا:

رقم الطلباسم العميلجوال العميلمدينة العميلالمنتج
1سعود العتيبي0551000001المدينة المنورةقهوة عربية
2نورة القحطاني0551000002الرياضعسل سدر
3سعود العتيبي0551000011المدينة المنورةدلة قهوة
4سعود العتيبى0551000001المدينهشاي أخضر

انظر إلى الخلايا الملوّنة. هذه مشكلات حقيقية تظهر مع الملفات:

٣ما قاعدة البيانات؟

قاعدة البيانات Database: مجموعة من البيانات المترابطة، منظَّمة ومخزَّنة إلكترونيًّا بطريقة تسهّل الوصول إليها وإدارتها وتحديثها.

في قواعد البيانات العلائقية (أشهر الأنواع) تُنظَّم البيانات في جداول. ولكل جدول موضوع واحد: جدول للعملاء، وجدول للمنتجات، وجدول للطلبات.

idnamecity1234سعود العتيبيالمدينة المنورةنورة القحطانيالرياضخالد الحربيالمدينة المنورةريم الشهريجدة← صف (سجل)عمود (حقل) ↓↑ خلية: قيمة واحدة
جدول العملاء: كل صف عميل واحد، وكل عمود معلومة واحدة عنه.
المصطلحبالإنجليزيةمعناه
الجدولTableمجموعة بيانات عن موضوع واحد، مثل العملاء.
الصف أو السجلRow / Recordعنصر واحد كامل: عميل واحد بكل معلوماته.
العمود أو الحقلColumn / Fieldمعلومة واحدة تتكرر لكل الصفوف: الاسم أو المدينة.
الخليةCellقيمة واحدة: تقاطع صف مع عمود.

وهذا جدول العملاء الحقيقي في قاعدة بيانات «متجر الواحة» التي سنتدرّب عليها في المقرر:

الجدول customers · 10 صفوف
idnamecityphonejoined
1سعود العتيبيالمدينة المنورة05510000012024-01-15
2نورة القحطانيالرياض05510000022024-02-03
3خالد الحربيالمدينة المنورة05510000032024-03-20
4ريم الشهريجدة05510000042024-05-11
5فهد الدوسريالرياض05510000052024-06-01
6سارة المطيريالدمام05510000062024-08-17
7عبدالله الزهرانيجدةNULL2024-09-09
8هند السبيعيالمدينة المنورة05510000082025-01-04
9ماجد الغامديتبوك05510000092025-02-22
10لمى العنزيNULL05510000102025-03-30

لاحظ أن معلومات كل عميل مكتوبة مرة واحدة فقط. والطلبات في جدول آخر يشير إلى العميل برقمه id، فلا تكرار ولا تعارض.

٤أول سؤال لقاعدة البيانات

نسأل قاعدة البيانات بلغة اسمها SQL (تُنطق «إس كيو إل» أو «سيكوِل»). هذا أول سؤال: «اعرض كل العملاء»:

query.sql
SELECT * FROM customers;
النتيجة · 10 صفوف
idnamecityphonejoined
1سعود العتيبيالمدينة المنورة05510000012024-01-15
2نورة القحطانيالرياض05510000022024-02-03
3خالد الحربيالمدينة المنورة05510000032024-03-20
4ريم الشهريجدة05510000042024-05-11
5فهد الدوسريالرياض05510000052024-06-01
6سارة المطيريالدمام05510000062024-08-17
7عبدالله الزهرانيجدةNULL2024-09-09
8هند السبيعيالمدينة المنورة05510000082025-01-04
9ماجد الغامديتبوك05510000092025-02-22
10لمى العنزيNULL05510000102025-03-30

SELECT معناها «اختر» أو «اعرض»، و * تعني «كل الأعمدة»، و FROM customers تعني «من جدول العملاء». والفاصلة المنقوطة ; تنهي الأمر.

ويمكن أن نسأل سؤالًا أدق: «أسماء العملاء الذين من المدينة المنورة فقط»:

query.sql
SELECT name, cityFROM customersWHERE city = 'المدينة المنورة';
النتيجة · 3 صفوف
namecity
سعود العتيبيالمدينة المنورة
خالد الحربيالمدينة المنورة
هند السبيعيالمدينة المنورة

٥لماذا قواعد البيانات مهمة؟

الفائدةكيف تتحقق؟
تنظيم البياناتكل موضوع في جدول، وكل معلومة تُكتب مرة واحدة، فلا تكرار ولا تعارض.
الوصول السريعتبحث في ملايين الصفوف خلال أجزاء من الثانية، وبسؤال واحد.
صحة البياناتقواعد تمنع الأخطاء، مثل منع سعر سالب أو رقم جوال مكرر.
المشاركةمئات المستخدمين والتطبيقات يعملون على القاعدة نفسها في الوقت نفسه بلا تعارض.
الأمانلكل مستخدم صلاحيات: هذا يقرأ فقط، وذاك يعدّل.
الحفظ والاسترجاعنسخ احتياطي واسترجاع عند الأعطال.

والأهم: قاعدة البيانات تحوّل البيانات إلى معلومات تساعد على القرار. مثلًا: «كم طلبًا جاء من كل مدينة؟» سؤال يجيب عنه مدير المتجر بسطر واحد:

query.sql
SELECT city, COUNT(*) AS orders_countFROM ordersJOIN customers ON customers.id = orders.customer_idGROUP BY cityORDER BY orders_count DESC;
النتيجة · 5 صفوف
cityorders_count
المدينة المنورة6
الرياض3
جدة1
تبوك1
الدمام1

هذا الاستعلام متقدم قليلًا، وستكتب مثله بنفسك في الدرس 18. المهم الآن: سؤال واحد أعطى معلومة مفيدة من جدولين.

توقّع وتحقّق

«35» وحدها تُعد:

حقيقة خام بلا سياق.

في جدول العملاء، عميل واحد بكل معلوماته يمثّل:

الصف هو السجل الكامل.

أكبر مشكلة في تكرار اسم العميل مع كل طلب:

نسخ متعددة قد تختلف.

اللغة التي نسأل بها قاعدة البيانات:

Structured Query Language.

الخلاصة

تحدٍّ برمجي: اعرض قائمة المنتجات

سهل

مدير المتجر يريد قائمة بأسماء كل المنتجات وأسعارها فقط، بلا بقية الأعمدة.

المطلوب:
  • استخدم جدول المنتجات products.
  • اعرض العمودين name و price فقط، بهذا الترتيب.
👀 اعرض النتيجة المطلوبة
النتيجة المطلوبة
nameprice
قهوة عربية 250غ35
شاي أخضر18
تمر عجوة 1كغ90
تمر سكري 1كغ45
عسل سدر 500غ150
عسل زهور 500غ60
دلة قهوة75
فناجين (6 قطع)40
هيل 100غ28
زعفران 5غ55
ماء زمزم 5لتر12
مبخرة120
✓ التحقق الآلي من حلّك:
  • الكود يعمل بلا أخطاء
  • النتيجة فيها اسم كل منتج وسعره (12 صفًّا وعمودان)
  • لا تستخدم * بل اكتب اسمي العمودين

💡 تلميح 1
انظر إلى المثال الثاني في القسم 4: كتبنا أسماء الأعمدة بعد SELECT وبينها فاصلة.
💡 تلميح 2
SELECT name, price FROM …

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

solution.sql
SELECT name, priceFROM products;
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس