IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store.

Post on 06-Jan-2018

217 views 0 download

description

Sign In

Transcript of IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store.

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