پروژه پایگاه داده انبار
انجام پروژه پایگاه داده
برای طراحی یک برنامه انبار در SQL Server که شامل ۵ جدول با روابط، کلیدهای اصلی و ثانویه، تریگرها، فانکشنها، پروسیجرها و ویوها است، مراحل زیر را دنبال میکنیم.
۱. ایجاد جداول
جدول Products
CREATE TABLE Products (
ProductID INT PRIMARY KEY IDENTITY(1,1),
ProductName NVARCHAR(100) NOT NULL,
CategoryID INT,
QuantityInStock INT,
Price DECIMAL(10, 2)
);
جدول Categories
CREATE TABLE Categories (
CategoryID INT PRIMARY KEY IDENTITY(1,1),
CategoryName NVARCHAR(100) NOT NULL
);
جدول Suppliers
CREATE TABLE Suppliers (
SupplierID INT PRIMARY KEY IDENTITY(1,1),
SupplierName NVARCHAR(100) NOT NULL,
ContactInfo NVARCHAR(255)
);
جدول Orders
CREATE TABLE Orders (
OrderID INT PRIMARY KEY IDENTITY(1,1),
OrderDate DATE NOT NULL,
SupplierID INT,
FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)
);
جدول OrderDetails
CREATE TABLE OrderDetails (
OrderDetailID INT PRIMARY KEY IDENTITY(1,1),
OrderID INT,
ProductID INT,
Quantity INT,
FOREIGN KEY (OrderID) REFERENCES Orders(OrderID),
FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);
۲. ایجاد کلیدهای خارجی و روابط
همانطور که در تعریف جداول نشان داده شد، کلیدهای خارجی برای ایجاد روابط بین جداول استفاده میشوند. به عنوان مثال، SupplierID
در جدول Orders
به SupplierID
در جدول Suppliers
مرتبط است.
۳. ایجاد تریگر (Trigger)
ایجاد تریگری برای بروزرسانی موجودی انبار پس از درج جزئیات سفارش:
CREATE TRIGGER UpdateStockAfterOrder
ON OrderDetails
AFTER INSERT
AS
BEGIN
UPDATE Products
SET QuantityInStock = QuantityInStock - i.Quantity
FROM Products p
INNER JOIN inserted i ON p.ProductID = i.ProductID;
END;
۴. ایجاد فانکشن (Function)
ایجاد فانکشن برای محاسبه مقدار کل سفارش:
CREATE FUNCTION dbo.CalculateOrderTotal(@OrderID INT)
RETURNS DECIMAL(10, 2)
AS
BEGIN
DECLARE @Total DECIMAL(10, 2);
SELECT @Total = SUM(od.Quantity * p.Price)
FROM OrderDetails od
INNER JOIN Products p ON od.ProductID = p.ProductID
WHERE od.OrderID = @OrderID;
RETURN @Total;
END;
۵. ایجاد پروسیجر (Stored Procedure)
ایجاد پروسیجری برای افزودن یک سفارش جدید:
کد sql ایجاد Stored Procedure
CREATE PROCEDURE dbo.AddNewOrder
@OrderDate DATE,
@SupplierID INT,
@OrderDetails dbo.OrderDetailsType READONLY
AS
BEGIN
DECLARE @OrderID INT;
INSERT INTO Orders (OrderDate, SupplierID)
VALUES (@OrderDate, @SupplierID);
SET @OrderID = SCOPE_IDENTITY();
INSERT INTO OrderDetails (OrderID, ProductID, Quantity)
SELECT @OrderID, ProductID, Quantity
FROM @OrderDetails;
RETURN @OrderID;
END;
۶. ایجاد ویو (View)
ایجاد ویویی برای نمایش سفارشات به همراه جزئیات آنها:
CREATE VIEW OrderSummary AS
SELECT o.OrderID, o.OrderDate, s.SupplierName, p.ProductName, od.Quantity, (od.Quantity * p.Price) AS TotalPrice
FROM Orders o
INNER JOIN Suppliers s ON o.SupplierID = s.SupplierID
INNER JOIN OrderDetails od ON o.OrderID = od.OrderID
INNER JOIN Products p ON od.ProductID = p.ProductID;
این طراحی شامل جداول با روابط مناسب، تریگر، فانکشن، پروسیجر و ویو است. با این طراحی، شما میتوانید اطلاعات انبار را مدیریت و تحلیل کنید.