تعلم قواعد بيانات SQL Database
1.76K subscribers
75 photos
3 videos
24 files
32 links
تعلم وعلم غيرك في قواعد بيانات SQL Database
تحليل وتصميم قواعد بيانات
وبرمجه مواقع اخبارية
Download Telegram
مشروع إدارة المنتجات الإلكترونية يهدف إلى إنشاء نظام بسيط لإدارة
بيانات المنتجات والمخزون والطلبات، مما يساعد على تتبع العمليات التجارية بسهولة ودقة.
المشروع يركز على تسجيل تفاصيل المنتجات، تصنيفها، وإدارة الطلبات المتعلقة بها مع تحديث الكميات المتوفرة بشكل تلقائي.
هذا تحليل للجداول في هذا النظام بحيث ان النظام قابل للتوسعة والتحليل

1. الفئات Categories يحتوي على معلومات الفئات المختلفة للمنتجات.
2. المنتجات Products يحتوي على معلومات المنتجات، بما في ذلك الفئة والسعر والمخزون.
3. العملاء Customers يحتوي على معلومات العملاء، مثل الاسم والبريد الإلكتروني والعنوان.
4. الطلبات Orders يحتوي على معلومات الطلبات المقدمة من العملاء، بما في ذلك التاريخ والمبلغ الإجمالي.
5. تفاصيل الطلب OrderDetails يحتوي على تفاصيل كل طلب، بما في ذلك المنتجات والكميات والأسعار.
6. المستخدمون Users يحتوي على معلومات المستخدمين، مثل اسم المستخدم وكلمة المرور والدور.
7. الموردون Suppliers يحتوي على معلومات الموردين، بما في ذلك الاسم ووسائل الاتصال.
8. ربط المنتجات بالموردين Product_Suppliers يربط بين المنتجات والموردين، مع معلومات عن سعر الشراء.
9. المشتريات Purchases يحتوي على معلومات المشتريات من الموردين، بما في ذلك التاريخ والمبلغ الإجمالي.
10. تفاصيل الشراء Purchase_Items يحتوي على تفاصيل كل عملية شراء، بما في ذلك المنتجات والكميات والأسعار.
11. الحسابات Accounts يحتوي على معلومات حول الحسابات المالية.
12. المعاملات المالية Transactions يحتوي على معلومات المعاملات المالية المرتبطة بالحسابات والطلبات والمشتريات.
13. تقييمات المنتجات ProductReviews يحتوي على تقييمات العملاء للمنتجات، بما في ذلك التقييمات والتعليقات.
14. العروض الترويجية Promotions يحتوي على معلومات العروض الترويجية المتعلقة بالمنتجات.
15. تقارير المخزون InventoryReports يحتوي على تقارير المخزون، بما في ذلك إجمالي المنتجات وقيمة المخزون.
16. تنبيهات المخزون InventoryAlerts يحتوي على تنبيهات بشأن المخزون المنخفض.
17. شحن الطلبات Shipping يحتوي على معلومات شحن الطلبات، بما في ذلك عنوان الشحن وتاريخ الشحن.
18. أدوار المستخدمين UserRoles يحتوي على معلومات حول أدوار المستخدمين والصلاحيات.
19. تقارير المبيعات SalesReports يحتوي على تقارير المبيعات، بما في ذلك إجمالي المبيعات وعدد الطلبات.
2
نبدأ بأنشاء قاعده البيانات ونسميها مثلا ElectronicProduct ManagementS ystem
امر انشاء قاعده بيانات نظام إدارة المنتجات
MS_= ManagementS ystem
create database MS_ElectronicProduct
1
نبدأ في انشاء الجداول
بحيث تتأكد انك تشتغل على القاعدة التي تم بنائها
use MS_ElectronicProduct
👍1
use MS_ElectronicProduct
--1. جدول الفئات (Categories)
CREATE TABLE Categories (
CategoryID INT PRIMARY KEY,
CategoryName VARCHAR(100) NOT NULL
);
1. إضافة فئة جديدة

INSERT INTO Categories (CategoryID, CategoryName)
VALUES (1, 'Electronics'); --
--2. جدول المنتجات (Products)
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100) NOT NULL,
CategoryID INT,
Price DECIMAL(10, 2) NOT NULL,
StockQuantity INT NOT NULL,
Description TEXT,
FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID)
);
--3. جدول العملاء (Customers)

CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Email VARCHAR(100) NOT NULL UNIQUE,
PhoneNumber VARCHAR(15),
Address VARCHAR(255)
);
1
--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