تعلم قواعد بيانات SQL Database
1.79K subscribers
84 photos
3 videos
26 files
38 links
📘 تعلم قواعد بيانات SQL بأسلوب مبسط
🛠 شرح عملي + أمثلة وتمارين
🎯 للمبتدئين وطلاب IT
📅 دروس منتظمة
تعلم اليوم وطبّق غداً
Download Telegram
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY IDENTITY,
Name NVARCHAR(100) NOT NULL
);
🎯 ماذا تعلمنا؟
- كل جدول يمثل كيان (Entity)
- كل علاقة تمثل ارتباط منطقي

🔥 Challenge:

كيف تتوقع شكل جدول Orders؟

فكر في:
- ما هي الأعمدة؟
- كيف نربطه بـ Customers؟

💬 اكتب تصميمك في التعليقات
Live stream scheduled for
📌 Lesson 3: كيف نفكر في تصميم Orders؟
#Day4 #ERP_Project
🎯 قبل ما نكتب أي كود…
لازم نسأل:
ما هو "Order" داخل النظام؟
---
🧠 تخيل هذا السيناريو:
عميل دخل واشترى منتجات 👇
النظام لازم يسجل:
* من هو العميل؟
* متى تم الطلب؟
* ما هو رقم الطلب؟
---
💡 إذًا جدول Orders يجب أن يحتوي على:

✔️ OrderID
✔️ CustomerID
✔️ OrderDate
---
❗️ سؤال مهم:
هل نضع المنتجات داخل Orders؟ 🤔
---
🚫 الجواب: لا
ليش؟
لأن:
الطلب الواحد يحتوي على أكثر من منتج
---
🔥 Challenge:
برأيك:
ما هو الحل الصحيح لتخزين المنتجات؟
💬 اكتب فكرتك
1
# 🟢 Day 4 — (فهم Orders قبل الكود)

هذا المنشور هدفه “ترتيب التفكير” وليس كتابة كود

:::writing{variant="social_post" id="58213"}
📌 Lesson 3: كيف نفكر في تصميم Orders؟
#Day4 #ERP_Project

---

🎯 قبل ما نكتب أي كود…

لازم نسأل:
ما هو "Order" داخل النظام؟

---

🧠 تخيل هذا السيناريو:

عميل دخل واشترى منتجات 👇

النظام لازم يسجل:

- من هو العميل؟
- متى تم الطلب؟
- ما هو رقم الطلب؟

---

💡 إذًا جدول Orders يجب أن يحتوي على:

✔️ OrderID
✔️ CustomerID
✔️ OrderDate

---

❗️ سؤال مهم:

هل نضع المنتجات داخل Orders؟ 🤔

---

🚫 الجواب: لا

ليش؟

لأن:
الطلب الواحد يحتوي على أكثر من منتج

---

🔥 Challenge:

برأيك:
ما هو الحل الصحيح لتخزين المنتجات؟

💬 اكتب فكرتك
# 🟢 Day 5 — (إنشاء Orders Table + أول ربط حقيقي)

📌 Lesson 4: إنشاء جدول Orders وربطه بـ Customers
#Day5 #ERP_Project

---

🎯 الآن نحول التفكير إلى كود 👇

---

🔥 الكود:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY IDENTITY,
CustomerID INT,
OrderDate DATETIME DEFAULT GETDATE(),
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
---

💡 ماذا فعلنا هنا؟

✔️ أنشأنا جدول Orders
✔️ ربطناه بجدول Customers
✔️ كل طلب أصبح مرتبط بعميل

---

📊 هذا يسمى:
Relationship (ربط بين الجداول)

---

❗️ سيناريو مهم:

إذا حذفنا Customer مرتبط بطلب…

ماذا سيحدث؟ 🤔

---

🔥 Challenge:

جاوب:
هل يسمح النظام بالحذف أم يمنعه؟ ولماذا؟

💬 اكتب إجابتك
1
# 🟢 Day 6 — (حل المشكلة الحقيقية: OrderDetails)
📌 Lesson 5: حل مشكلة المنتجات داخل الطلب (OrderDetails)
#Day6 #ERP_Project

---

🎯 المشكلة:

الطلب يحتوي على عدة منتجات ❗️

---

لا يمكن تخزينها داخل Orders

---

💡 الحل الاحترافي:

إنشاء جدول جديد:
OrderDetails

---

🔥 الكود:
CREATE TABLE OrderDetails (
    ID INT PRIMARY KEY IDENTITY,
    OrderID INT,
    ProductID INT,
    Quantity INT,
    FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
);
---

📊 ماذا حللنا؟

✔️ فصلنا الطلب عن التفاصيل 
✔️ أصبح كل طلب يحتوي على عدة منتجات 
✔️ حللنا مشكلة Many-to-Many

---

🎯 أصبح النظام كالتالي:

Orders → معلومات عامة 
OrderDetails → تفاصيل المنتجات 

---

🔥 Challenge:

ما نوع العلاقة بين:

Orders و OrderDetails ؟

💬 اكتب الإجابة
:::
🔥 تحدي :
اكتب استعلام يعرض:
اسم العميل + تاريخ الطلب
💬 اكتب الحل في التعليقات
1
سؤال احترافي
💣 إذا استخدمت JOIN غلط…
ممكن تطلع بيانات مضروبة
كيف تتأكد أن النتائج صحيحة؟
#ERP_Project
🎯 Lesson 7 — Foreign Keys
ليست مجرد سطر SQL... إنها حارس بيانات النظام
📌 Lesson 7 — هل يمكن إنشاء طلب لعميل غير موجود؟ 🤔
تخيل أنك تعمل على نظام مبيعات...
وأحد المبرمجين نفذ هذا الأمر:
INSERT INTO Orders(CustomerID)
VALUES(999);

لكن...
❗️العميل رقم 999 غير موجود أصلاً!
هل يجب أن يسمح النظام بهذا؟
لو سمح بذلك...
سيصبح لدينا طلب بدون صاحب!
وهنا تبدأ مشاكل التقارير والفواتير والأنظمة المالية.
💡 لهذا السبب نستخدم Foreign Key.
هو لا يربط الجداول فقط...
بل يحمي البيانات من الأخطاء.
🎯 بدون Foreign Key:
Orders قد تشير إلى Customer غير موجود.
أما مع Foreign Key:
النظام يمنع الخطأ قبل تخزين البيانات.
4
Lesson 8
INNER JOIN
كيف يجمع SQL البيانات من أكثر من جدول؟
تخيل أن مدير الشركة طلب منك تقريرًا يحتوي على:
رقم الطلب
اسم العميل
تاريخ الطلب
لكن...
اسم العميل موجود في جدول Customers.
ورقم الطلب موجود في Orders.
كيف نجمعهما؟
هنا يأتي دور INNER JOIN.
🎯 Challenge
قبل رؤية الكود...
توقع النتيجة.
هل سيظهر كل العملاء؟
أم فقط العملاء الذين لديهم طلبات؟
اكتب توقعك.
الكود
SELECT
O.OrderID,
C.CustomerName,
O.OrderDate
FROM Orders O
INNER JOIN Customers C
ON O.CustomerID = C.CustomerID;
💡 الآن شغّل الكود بنفسك.
هل كانت النتيجة كما توقعت؟
🚨 تحدي اليوم
لدينا:
Customers
Ahmed
Sara
Ali

Orders
Ahmed
Sara

السؤال:
بعد تنفيذ INNER JOIN...
هل سيظهر Ali؟
ولماذا؟
💬 ممنوع تشغيل SQL.
أجب بالتفكير فقط.
ملخص الدرس الثامن
Lesson 9
First ERP Report
📌 Lesson 9 | أول تقرير احترافي في SQL Server
تخيل أنك انتهيت من تصميم قاعدة البيانات...
لكن مدير الشركة قال لك:
"أريد تقريرًا يعرض الطلبات."

هنا تبدأ وظيفة SQL الحقيقية.
ليست إنشاء الجداول...
بل استخراج المعلومات منها.
اليوم سنبني أول تقرير يشبه ما تراه داخل أنظمة ERP.
💬 سؤال اليوم:
برأيك...
ما المعلومات التي يجب أن تظهر داخل تقرير الطلبات؟
اكتب اقتراحك قبل أن نبدأ.
🧠 سيناريو ERP
شركة تبيع أجهزة إلكترونية.
في نهاية اليوم، مدير المبيعات طلب تقريرًا يحتوي على:
رقم الطلب.
اسم العميل.
تاريخ الطلب.
ولا يريد أن يفتح ثلاثة جداول مختلفة.
المطلوب تقرير واحد فقط.
SELECT
O.OrderID,
C.CustomerName,
O.OrderDate
FROM Orders AS O
INNER JOIN Customers AS C
ON O.CustomerID = C.CustomerID
ORDER BY O.OrderDate DESC;
🧠 لا نحفظ اسم العميل داخل Orders...
بل نجلبه وقت إنشاء التقرير.
🚨 تحدي اليوم
يريد المدير إضافة عمود جديد داخل التقرير:
عدد المنتجات داخل كل طلب

لدينا الآن:
Customers
Orders
OrderDetails
السؤال:
هل يكفي استخدام INNER JOIN بين جدولين؟
أم سنحتاج إلى ربط جدول ثالث؟
💬 اكتب إجابتك...
ولا تكتب الكود.
فكر كمطور نظام.
Lesson 10 LEFT JOIN
كيف نعرض جميع العملاء...
حتى الذين لم يطلبوا أي شيء؟

#SQLServer #ERP_Project
تخيل أنك مدير المبيعات...
وطلبت من المبرمج تقريرًا يحتوي على:
جميع العملاء
حتى العملاء الذين لم يشتروا أي شيء حتى الآن.
لكن...
عندما استخدمنا INNER JOIN
اختفى بعض العملاء!
😨
لماذا؟
لأن INNER JOIN يعرض فقط البيانات المتطابقة.
لكن المدير يريد الجميع.
حتى العملاء الذين لم ينفذوا أي طلب.
هنا يأتي دور...
🔥 LEFT JOIN