19
IBuySPY Shopping Store

IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Embed Size (px)

DESCRIPTION

Sign In

Citation preview

Page 1: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

IBuySPY Shopping Store

Page 2: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Data Model for IBuySPY Shopping Store

Page 3: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Sign In

Page 4: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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;/

Page 5: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Register

Page 6: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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;/

Page 7: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Customer Also Bought

Page 8: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 9: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 10: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 11: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Most Popular Items

Page 12: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 13: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

Shopping Cart

Page 14: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 15: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 16: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

ShoppingCartRemoveAbandoned

CREATE Procedure ShoppingCartRemoveAbandonedAS

DELETE FROM ShoppingCart

WHERE DATEDIFF(dd, DateCreated, GetDate()) > 1

GO

Page 17: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 18: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

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

Page 19: IBuySPY Shopping Store. Data Model for IBuySPY Shopping Store

OrdersAdd(3/3)

/* Removal of items from user's shopping cart will happen on the business layer*/

EXEC ShoppingCartEmpty @CartId

COMMIT TRAN AddOrder

GO