تعلم قواعد بيانات SQL Database
1.76K subscribers
75 photos
3 videos
24 files
32 links
تعلم وعلم غيرك في قواعد بيانات SQL Database
تحليل وتصميم قواعد بيانات
وبرمجه مواقع اخبارية
Download Telegram
--4. جدول الطلبات (Orders)



CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATETIME NOT NULL,
TotalAmount DECIMAL(10, 2) NOT NULL,
Status VARCHAR(50),
PaymentStatus VARCHAR(50),
ShippingStatus VARCHAR(50),
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
--5. جدول تفاصيل الطلب (OrderDetails)



CREATE TABLE OrderDetails (
OrderItemID INT PRIMARY KEY,
OrderID INT,
ProductID INT,
Quantity INT NOT NULL,
Subtotal DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (OrderID) REFERENCES Orders(OrderID),
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
--6. جدول المستخدمين (Users)



CREATE TABLE Users (
UserID INT PRIMARY KEY,
Username VARCHAR(50) NOT NULL UNIQUE,
Password VARCHAR(255) NOT NULL,
Role VARCHAR(50) NOT NULL
);
👍21
--7. جدول الموردين (Suppliers)
CREATE TABLE Suppliers (
SupplierID INT PRIMARY KEY,
SupplierName VARCHAR(100) NOT NULL,
ContactNumber VARCHAR(15),
Email VARCHAR(100) NOT NULL UNIQUE,
Address VARCHAR(255)
);
--8. جدول ربط المنتجات بالموردين (Product_Suppliers)
CREATE TABLE Product_Suppliers (
ProductSupplierID INT PRIMARY KEY,
ProductID INT,
SupplierID INT,
PurchasePrice DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID),
FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)
);
--9. جدول المشتريات (Purchases)
CREATE TABLE Purchases (
PurchaseID INT PRIMARY KEY,
SupplierID INT,
PurchaseDate DATETIME NOT NULL,
TotalAmount DECIMAL(10, 2) NOT NULL,
Status VARCHAR(50),
FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)
);
--10. جدول تفاصيل الشراء (Purchase_Items)
CREATE TABLE Purchase_Items (
PurchaseItemID INT PRIMARY KEY,
PurchaseID INT,
ProductID INT,
Quantity INT NOT NULL,
UnitPrice DECIMAL(10, 2) NOT NULL,
TotalPrice DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (PurchaseID) REFERENCES Purchases(PurchaseID),
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
--11. جدول الحسابات (Accounts)
CREATE TABLE Accounts (
AccountID INT PRIMARY KEY,
AccountName VARCHAR(100) NOT NULL,
AccountType VARCHAR(50) NOT NULL,
Description TEXT
);
--12. جدول المعاملات المالية (Transactions)
CREATE TABLE Transactions (
TransactionID INT PRIMARY KEY,
TransactionDate DATETIME NOT NULL,
AccountID INT,
Amount DECIMAL(10, 2) NOT NULL,
TransactionType VARCHAR(50) NOT NULL,
Description TEXT,
RelatedOrderID INT,
RelatedPurchaseID INT,
FOREIGN KEY (AccountID) REFERENCES Accounts(AccountID),
FOREIGN KEY (RelatedOrderID) REFERENCES Orders(OrderID),
FOREIGN KEY (RelatedPurchaseID) REFERENCES Purchases(PurchaseID)

);
1
--13. جدول تقييمات المنتجات (Product Reviews)

CREATE TABLE ProductReviews (
ReviewID INT PRIMARY KEY,
ProductID INT,
CustomerID INT,
Rating INT CHECK (Rating >= 1 AND Rating <= 5),
Comment TEXT,
ReviewDate DATETIME NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID),
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
--14. جدول العروض الترويجية (Promotions)

CREATE TABLE Promotions (
PromotionID INT PRIMARY KEY,
ProductID INT,
DiscountPercentage DECIMAL(5, 2) CHECK (DiscountPercentage >= 0 AND DiscountPercentage <= 100),
StartDate DATETIME NOT NULL,
EndDate DATETIME NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
--15. جدول تقارير المخزون (Inventory Reports)



CREATE TABLE InventoryReports (
ReportID INT PRIMARY KEY,
ReportDate DATETIME NOT NULL,
TotalProducts INT NOT NULL,
TotalStockValue DECIMAL(10, 2) NOT NULL
);
--16. جدول تنبيهات المخزون (Inventory Alerts)

CREATE TABLE InventoryAlerts (
AlertID INT PRIMARY KEY,
ProductID INT,
ThresholdQuantity INT NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
--17. جدول شحن الطلبات (Shipping)

CREATE TABLE Shipping (
ShippingID INT PRIMARY KEY,
OrderID INT,
ShippingAddress VARCHAR(255) NOT NULL,
ShippingDate DATETIME,
TrackingNumber VARCHAR(100),
FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
);
--18. جدول أدوار المستخدمين (User Roles)
CREATE TABLE UserRoles (
RoleID INT PRIMARY KEY,
RoleName VARCHAR(50) NOT NULL,
Permissions TEXT
);
--19. جدول تقارير المبيعات (Sales Reports)

CREATE TABLE SalesReports (
ReportID INT PRIMARY KEY,
ReportDate DATETIME NOT NULL,
TotalSales DECIMAL(10, 2) NOT NULL,
TotalOrders INT NOT NULL
);
2
ممكن الذي لديه اضافات او تعديلات يرسلها او يعلق في المجموعه الخاصه بالمناقشه
https://t.me/DBLearningCommunity
بعد ان تخلص انشاء الجداول وتضيف بيانات افتراضيه ننتقل الى جانب التطبيق الاستعلامات
قوم بعمل استعلام عن جميع الفئات
SELECT * FROM Categories;
لو طلب منك استعلام عن جميع المنتجات
SELECT * FROM Products;
استعلام عن جميع العملاء
SELECT * FROM Customers;

-استعلام عن جميع الطلبات
SELECT * FROM Orders;
هذه الاستعلامات للجداول منفرده
لو اردنا عمل استعلامات متداخله للربط بين اكثر من جدول
لو طلب منك عمل استعلام لجلب جميع المنتجات مع فئاتها

SELECT p.ProductID, p.ProductName, c.CategoryName, p.Price, p.StockQuantity
FROM Products p
JOIN Categories c ON p.CategoryID = c.CategoryID;
كيف ارجع بيانات الطلبات مع حالة الدفع
SELECT o.OrderID, o.OrderDate, c.FirstName, c.LastName, o.TotalAmount, o.PaymentStatus
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
WHERE o.PaymentStatus = 'Pending';
1
في طريق الدفع لو طلب منك عرض الطلبات مع حالة الدفع
SELECT o.OrderID, o.OrderDate, c.FirstName, c.LastName, o.TotalAmount, o.PaymentStatus
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
WHERE o.PaymentStatus = 'Pending';
1
استعلامات الدوال
قوم بعمل استعلام لحساب متوسط تقييمات كل منتج

SELECT p.ProductName, AVG(r.Rating) AS AverageRating
FROM ProductReviews r
JOIN Products p ON r.ProductID = p.ProductID
GROUP BY p.ProductName;
1
--6. استعلام لجلب تقارير المبيعات الشهرية
SELECT ReportDate, TotalSales, TotalOrders
FROM SalesReports
ORDER BY ReportDate DESC;
--7. استعلام لجلب تنبيهات المخزون للمنتجات
SELECT p.ProductName, a.ThresholdQuantity
FROM InventoryAlerts a
JOIN Products p ON a.ProductID = p.ProductID;
الهدف: توضيح كيفية الربط بين تنبيهات المخزون والمنتجات.

--. استعلام لجلب تفاصيل الشحن لكل طلب

SELECT s.ShippingID, o.OrderID, s.ShippingAddress, s.TrackingNumber
FROM Shipping s
JOIN Orders o ON s.OrderID = o.OrderID;
الهدف: فهم كيفية ربط جداول الشحن والطلبات للحصول على معلومات الشحن.

--. استعلام لجلب جميع الموردين مع المنتجات الموردة

SELECT s.SupplierName, p.ProductName, ps.PurchasePrice
FROM Product_Suppliers ps
JOIN Suppliers s ON ps.SupplierID = s.SupplierID
JOIN Products p ON ps.ProductID = p.ProductID;
: كيفية استعلام البيانات من جداول الموردين والمنتجات.
5
--. استعلام لحساب إجمالي المبيعات لكل منتج

SELECT p.ProductName, SUM(pi.Quantity) AS TotalSold
FROM Purchase_Items pi
JOIN Products p ON pi.ProductID = p.ProductID
GROUP BY p.ProductName;
2
ممكن الكل يشارك بعمل اسئلة لعمل استعلامات ونحلها مع بعض في القناه الخاصة بالاستفسارات
https://t.me/DBLearningCommunity
سلام الله عليكم ان شاء الله نظع اسئله على شكل تمارين واتمنى من الجميع المشاركه لكي نعرف مستوى الفهم والتقدم لكي نشرح في المراحل القادمه بنا على هذا
2👍1
السؤال 2:
كيف يمكنك استعلام تفاصيل طلب معين مع عرض أسماء المنتجات والكميات والأسعار وجميع البيانات للطلب؟
Anonymous Quiz
22%
SELECT * FROM OrderDetails WHERE OrderID = X
37%
SELECT P.*,O.* FROM OrderDetails O JOIN Products p ON O.ProductID=P.ProductID WHERE O.OrderID=X
10%
SELECT * FROM Orders WHERE OrderID = X
32%
SELECT Name, Quantity, Price FROM OrderDetails WHERE OrderID = X
1👍1🔥1
تأخرنا عليكم قاعد اجمع افكار ومقترحات لكي نحسن من الشروحات وطريقه الشرح
الذي لديه أفكار او روابط نشرح مثلها يرسله وان شاء الله نقدم كل ما نستطيع بدعمكم ومساعدتكم
👍7🔥1