ibuyspy shopping store. data model for ibuyspy shopping store
DESCRIPTION
Sign InTRANSCRIPT
IBuySPY Shopping Store
Data Model for IBuySPY Shopping Store
Sign In
CustomerLoginCREATE FUNCTION CustomerLogin( eml Customer.emailaddress%TYPE, pwd Customer.password%TYPE )RETURN number ISCID Customer.CustomerID%TYPEBEGIN
SELECT CustomerID INTO CIDFROM CustomersWHERE EmailAddress = emlAND Password = pwd;RETURN CID;
EXCEPTIONWHEN NO_DATA_FOUND THENRETURN 0;
END;/
Register
CustomerAddCREATE FUNCTION CustomerAdd (fname Customer.FullName%TYPE, eml Customer.Email%TYPE, pwd Customer.Password%TYPE)RETURN number IS CID Customer.CustomerID%TYPEBEGIN
CID := cus_seq.NEXTVAL;INSERT INTO Customers(CustomerID,FullName,EMailAddress,Password)VALUES (CID, fname, eml, pwd);RETURN CID;
END;/
Customer Also Bought
CustomerAlsoBought(1/2)CREATE Procedure CustomerAlsoBought @ProductID intAs
/* We want to take the top 5 products contained in the orders where someone has purchased the given
Product */SELECT TOP 5 OrderDetails.ProductID, Products.ModelName, SUM(OrderDetails.Quantity) as TotalNum
FROM OrderDetails INNER JOIN Products ON OrderDetails.ProductID =
Products.ProductID
CustomerAlsoBought(2/2)WHERE OrderID IN ( /* This inner query should retrieve all orders that
have contained the productID */ SELECT DISTINCT OrderID FROM OrderDetails WHERE ProductID = @ProductID)AND OrderDetails.ProductID != @ProductID
GROUP BY OrderDetails.ProductID, Products.ModelName
ORDER BY TotalNum DESC
GO
ProductSearchALTER Procedure ProductSearch @Search nvarchar(255)AS
SELECT ProductID,ModelName,ModelNumber,UnitCost,ProductImageFROM ProductsWHERE ModelNumber LIKE '%' + @Search + '%' OR ModelName LIKE '%' + @Search + '%' OR Description LIKE '%' + @Search + '%'
GO
Most Popular Items
ProductsMostPopularCREATE Procedure ProductsMostPopularAS
SELECT TOP 5 OrderDetails.ProductID, SUM(OrderDetails.Quantity) as TotalNum, Products.ModelName FROM OrderDetails INNER JOIN Products ON OrderDetails.ProductID =
Products.ProductIDGROUP BY OrderDetails.ProductID, Products.ModelName ORDER BY TotalNum DESCGO
Shopping Cart
ShoppingCartAddItem (1/2)
CREATE Procedure ShoppingCartAddItem @CartID nvarchar(50), @ProductID int, @Quantity intAs
DECLARE @CountItems int
SELECT @CountItems = Count(ProductID)FROM ShoppingCartWHERE ProductID = @ProductID AND CartID = @CartID
ShoppingCartAddItem (2/2)IF @CountItems > 0 /* There are items - update the
current quantity */
UPDATE ShoppingCart SET Quantity = (@Quantity + ShoppingCart.Quantity) WHERE ProductID = @ProductID AND CartID = @CartID
ELSE /* New entry for this Cart. Add a new record */ INSERT INTO ShoppingCart ( CartID, Quantity, ProductID) VALUES (@CartID, @Quantity, @ProductID)
GO
ShoppingCartRemoveAbandoned
CREATE Procedure ShoppingCartRemoveAbandonedAS
DELETE FROM ShoppingCart
WHERE DATEDIFF(dd, DateCreated, GetDate()) > 1
GO
OrdersAdd(1/3)CREATE Procedure OrdersAdd @CustomerID int, @CartID nvarchar(50), @OrderDate datetime, @ShipDate datetime, @OrderID int OUTPUTAS
BEGIN TRAN AddOrder
/* Create the Order header */INSERT INTO Orders(CustomerID, OrderDate, ShipDate)VALUES(@CustomerID, @OrderDate, @ShipDate)
SELECT @OrderID = @@Identity
OrdersAdd(2/3)/* Copy items from given shopping cart to OrdersDetail
table for given OrderID*/INSERT INTO OrderDetails(OrderID, ProductID, Quantity, UnitCost)
SELECT @OrderID,ShoppingCart.ProductID,
Quantity, Products.UnitCost
FROM ShoppingCart INNER JOIN Products ON ShoppingCart.ProductID =
Products.ProductID WHERE CartID = @CartID
OrdersAdd(3/3)
/* Removal of items from user's shopping cart will happen on the business layer*/
EXEC ShoppingCartEmpty @CartId
COMMIT TRAN AddOrder
GO