21
Project I & II Database Design and Development Edwin Molina, Jimmy Thai, Sergio Mendez, Victor Salguero 1

Project I & II

Embed Size (px)

Citation preview

Page 1: Project I & II

Project I & IIDatabase Design and DevelopmentEdwin Molina, Jimmy Thai, Sergio Mendez, Victor Salguero

1

Page 2: Project I & II

Table of Contents

Project I……………………………………………………………………………………………………………….3

Scenario……………………………………………………………………………………………………………….3

Business Rules………………………………………………………………………………………………………3

Relationship Matrix………………………………………………………………………………………………4

ER Diagram…………………………………………………………………………………………………………..4

Tables & Attributes……………………………………………………………………………………………………………..5

Referential Integrity……………………………………………………………………………………………..6

Functional Dependency Analysis…………………………………………………………………………..6

Relational Schema After Normalization………………………………………………………………..7

Project II……………………………………………………………………………………………………………….7

SQL DDL (Database Creation Script) …………………………………………………………………….7

Database Structure…………………………………………………………………………………………….11

Database Entity Instances…………………………………………………………………………………..12

SQL Test Statements & Queries………………………………………………………………………….13

2

Page 3: Project I & II

Project I

Scenario

The GAMEGURUS database keeps tracks of video game orders placed by both individual customers and business customers

The customers are divided into individual customers and business customers. The customer table contains all the shipping information about the customers such as street, city, state, and zip code. In addition, every customer has a unique number to represent them. As for personal information for the customer, it is kept in their own unique table, individual or business customer. A customer must be either an individual customer, or a business customer, not both. An order must belong to a customer. Each order has a unique number and order date. We keep track of every customer’s order using a unique order number, the quantity of video games each customer ordered, and which video game they ordered. Each video game must belong to a certain order, and every video game has its own unique number, name, and year it was released to the market. We want to keep track of the video games from each warehouse so we know where each video game is coming from. We keep the warehouse name, street, city, state, and zip code to accomplish this.

Business Rules

One customer may or may not place many orders.One order must be placed by one and only one customer.

One customer must be either an individual customer or business customer.

One order must contain one or more video games.One video game may or may not be in many orders.

One warehouse must store one or more video games.One video game must be stored in one and only one warehouse.

One customer must be an individual customer or business customer.

3

Page 4: Project I & II

Relationship MatrixCustomer Orders Video Games Individual Business Warehouse

Customer Is Placed - Has Has -Orders Places Is contained - - -

Video Games Contains StoresIndividual Is Contains - -

Business Is -Warehouse Is Stored -

ER Diagram

4

Page 5: Project I & II

Tables and AttributesCustomer

CUST_ID(PK) CUST_STR CUST_CITY CUST_STATE CUST_ZIPCODE CUST_PHONE CUST_TYPE

OrderORDER_ID(PK) ORDER_DATE CUST_ID(FK)

Order LineORDER_ID (FK1) PROD_ID(FK2) ORDER_QNTY

Video GamesVIDEO_GAME_ID (PK)

GAME_NAME REL_YEAR GAME_PRICE WARE_ID(FK)

WarehouseWARE_ID(PK) WARE_NAME WARE_STR WARE_CITY WARE_STATE WARE_ZIPCODE

Individual CustomerCUST_ID(FK) CUST_FNAME CUST_LNAME CUST_D.O.B. CUST_GENDER

Business CustomerCUST_ID(FK) BUS_NAME CONTACT_FNAME CONTACT_LNAME

5

Page 6: Project I & II

Referential Integrity

Functional Dependency Analysis

FULL DEPENDENCIES

CUSTOMERCUST_ID -> CUST_STR, CUST_CITY, CUST_STATE, CUST_ZIP, PHONE, TYPE

ORDERORDER_ID -> ORDER_DATE, CUST_ID

ORDER LINEORDER_ID, PROD_ID -> ORDER_QTY

VIDEO GAMESPROD_ID -> GAME_NAME, REL_YEAR, GAME_PRICE, WARE_ID

WAREHOUSEWARE_ID -> WARE_NAME, WARE_STR, WARE_CITY, WARE_STATE, WARE_ZIP

INDIVIDUAL CUSTOMERCUST_ID ->CUST_FNAME, CUST_LANAME, D.O.B, GENDER

BUSINESS CUSTOMERCUST_ID -> BUS_NAME, CONTACT_FNAME, CONTACT_LNAME

TRANSITIVE DEPENDENCIES

6

Page 7: Project I & II

CUSTOMER.CUST_ZIP -> CUST_CITY, CUST_STATE

WAREHOUSE.WARE_ZIP ->WARE_CITY, WARE_STATE

Relational Schema after NormalizationTable Name 1NF 2NF 3NFCustomer YES YES NOOrder YES YES YESOrder Line YES YES YESCellphones YES YES YESWarehouse YES YES NOIndividual Customer YES YES YESBusiness Customer YES YES YES

Project II

SQL DDL (Database Creation Script)

CREATE TABLE Customers (Cust_Id number(4,0) NOT NULL,

Cust_Str VARCHAR(25), Cust_City VARCHAR2(20), Cust_State VARCHAR2(2), Cust_ZipCode number(5,0),

Cust_Phone number(10,0), Cust_type VARCHAR(1),

CONSTRAINT Customers_PK PRIMARY KEY (Cust_Id));

INSERT INTO Customers (Cust_Id, Cust_Str, Cust_City, Cust_State, Cust_ZipCode, Cust_Phone, Cust_type)VALUES (1, 'North', 'Stockton', 'CA', 90020, 2134596784, 'I');INSERT INTO Customers (Cust_Id, Cust_Str, Cust_City, Cust_State, Cust_ZipCode, Cust_Phone, Cust_type)VALUES (2, 'South', 'Burbank', 'CA', 90005, 3235689427, 'I');INSERT INTO Customers (Cust_Id, Cust_Str, Cust_City, Cust_State, Cust_ZipCode, Cust_Phone, Cust_type)VALUES (3, 'Harvard', 'Santa Monica', 'CA', 90027, 3105462189, 'I');INSERT INTO Customers (Cust_Id, Cust_Str, Cust_City, Cust_State, Cust_ZipCode, Cust_Phone, Cust_type)VALUES (4, 'Hobart', 'Stockton', 'CA', 90006, 2133678206, 'B');INSERT INTO Customers (Cust_Id, Cust_Str, Cust_City, Cust_State, Cust_ZipCode, Cust_Phone, Cust_type)VALUES (5, 'Vermont', 'Glendale', 'CA', 90015, 2134801153, 'B');

CREATE TABLE Individual_Customer

7

Page 8: Project I & II

(Cust_Id number(4,0) NOT NULL, Cust_Fname VARCHAR2(25), Cust_Lname VARCHAR2(25), Cust_DOB DATE, Cust_Gender VARCHAR2(1),

CONSTRAINT Individual_Customer_PK PRIMARY KEY (Cust_Id),CONSTRAINT Individual_Customer_FK FOREIGN KEY (Cust_Id) REFERENCES Customers(Cust_Id));

INSERT INTO Individual_Customer (Cust_Id, Cust_Fname, Cust_Lname, Cust_DOB, Cust_Gender)VALUES (1, 'John', 'Smith', '21/Oct/90', 'M');INSERT INTO Individual_Customer (Cust_Id, Cust_Fname, Cust_Lname, Cust_DOB, Cust_Gender)VALUES (2, 'Billy', 'Cohen', '19/Sep/92', 'M');INSERT INTO Individual_Customer (Cust_Id, Cust_Fname, Cust_Lname, Cust_DOB, Cust_Gender)VALUES (3, 'Sara', 'James', '24/Jan/91', 'F');

CREATE TABLE Business_Customer (Cust_Id number(4,0) NOT NULL, Bus_Name VARCHAR2(25), Contact_Fname VARCHAR2(25), Contact_Lname VARCHAR2(25),

CONSTRAINT Business_Customer_PK PRIMARY KEY (Cust_Id),CONSTRAINT Business_Customer_FK FOREIGN KEY (Cust_Id) REFERENCES Customers(Cust_Id));

INSERT INTO Business_Customer (Cust_Id, Bus_Name, Contact_Fname, Contact_Lname)VALUES (4, 'Gamestop', 'Richard', 'Miller');INSERT INTO Business_Customer (Cust_Id, Bus_Name, Contact_Fname, Contact_Lname)VALUES (5, 'Gamus', 'Lee', 'Young');

CREATE TABLE Orders (Order_Id number(4,0) NOT NULL,

Cust_Id number(4,0) NOT NULL , Order_Date DATE ,CONSTRAINT Orders_PK PRIMARY KEY (Order_Id),CONSTRAINT Order_FK FOREIGN KEY (Cust_Id) REFERENCES Customers(Cust_Id));

INSERT INTO Orders (Order_Id, Cust_Id, Order_Date)VALUES (1001, 1, '17/Oct/16');INSERT INTO Orders (Order_Id, Cust_Id, Order_Date)VALUES (1002, 2, '15/Oct/16');INSERT INTO Orders (Order_Id, Cust_Id, Order_Date)VALUES (1003, 3, '14/Sep/16');INSERT INTO Orders (Order_Id, Cust_Id, Order_Date)VALUES (1004, 4, '01/Sep/16');INSERT INTO Orders (Order_Id, Cust_Id, Order_Date)VALUES (1005, 5, '04/July/16');

8

Page 9: Project I & II

CREATE TABLE Order_lines (Order_Id number(4,0) NOT NULL,

Video_Game_Id number(4,0) NOT NULL, Ordered_Quantity number(4,0) ,CONSTRAINT Order_lines_PK PRIMARY KEY (Order_Id, Video_Game_Id),CONSTRAINT Order_lines_FK1 FOREIGN KEY (Order_Id) REFERENCES Orders(Order_Id),CONSTRAINT Order_lines_FK2 FOREIGN KEY (Video_Game_Id) REFERENCES Video_Games(Video_Game_Id));

INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1001, 1, 1);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1001, 2, 1);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1002, 2, 1);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1002, 4, 1);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1003, 1, 2);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1003, 3, 1);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1004, 3, 4);INSERT INTO Order_lines (Order_Id, Video_Game_Id, Ordered_Quantity)VALUES (1005, 4, 7);

CREATE TABLE Video_Games (Video_Game_Id number(4,0) NOT NULL, Ware_Id number(4,0) NOT NULL, Game_Name VARCHAR2(50) , Game_Price decimal(3,2) ,

Rel_Year number(4,0),CONSTRAINT Video_Games_PK PRIMARY KEY (Video_Game_Id),CONSTRAINT Video_Games_FK FOREIGN KEY (Ware_Id) REFERENCES Warehouse(Ware_Id));

ALTER TABLE Video_GamesADD CONSTRAINT Game_Price CHECK (Game_Price BETWEEN 0.00 AND 100.00);

INSERT INTO Video_Games (Video_Game_Id, Ware_Id, Game_Name, Game_Price, Rel_Year)VALUES (1,1,'Xenosaga',19.99, 2001);INSERT INTO Video_Games (Video_Game_Id, Ware_Id, Game_Name, Game_Price, Rel_Year)VALUES (2,1,'Resident Evil',17.99, 1998);INSERT INTO Video_Games (Video_Game_Id, Ware_Id, Game_Name, Game_Price, Rel_Year)VALUES (3,2,'Dark Souls 3',39.99, 2016);INSERT INTO Video_Games (Video_Game_Id, Ware_Id, Game_Name, Game_Price, Rel_Year)

9

Page 10: Project I & II

VALUES (4,3,'Dead Space',9.99, 2008);s

CREATE TABLE Warehouse(Ware_Id number(4,0) NOT NULL,Ware_Name VARCHAR2(25),Ware_Str VARCHAR2(25),Ware_City VARCHAR2(25),Ware_State VARCHAR2(25),Ware_ZipCode number(5,0),

CONSTRAINT Warehouse_PK PRIMARY KEY (Ware_Id));

INSERT INTO Warehouse (Ware_Id, Ware_Name, Ware_Str, Ware_City, Ware_State, Ware_Zipcode)VALUES (1,'Warehouse A','Main','Los Angeles','CA',90020);INSERT INTO Warehouse (Ware_Id, Ware_Name, Ware_Str, Ware_City, Ware_State, Ware_Zipcode)VALUES (2,'Warehouse B','Central','Santa Monica','CA',90030);INSERT INTO Warehouse (Ware_Id, Ware_Name, Ware_Str, Ware_City, Ware_State, Ware_Zipcode)VALUES (3,'Warehouse C','Azusa','City Of Industry','CA',90040);

COMMIT;

10

Page 11: Project I & II

DATABASE STRUCTURE

DESC Customers;Name Null? TypeCUST_ID NOT NULL NUMBER(4)CUST_STR   VARCHAR2(25)CUST_CITY   VARCHAR2(20)CUST_STATE   VARCHAR2(2)CUST_ZIPCODE   NUMBER(5)CUST_PHONE   NUMBER(10)CUST_TYPE   VARCHAR2(1)

DESC Individual_Customer;Name Null? TypeCUST_ID NOT NULL NUMBER(4)CUST_FNAME   VARCHAR2(25)CUST_LNAME   VARCHAR2(25)CUST_DOB   DATECUST_GENDER   VARCHAR2(1)

DESC Business_Customer;Name Null? TypeCUST_ID NOT NULL NUMBER(4)BUS_NAME   VARCHAR2(25)CONTACT_FNAME   VARCHAR2(25)CONTACT_LNAME   VARCHAR2(25)

DESC Orders;Name Null? TypeORDER_ID NOT NULL NUMBER(4)CUST_ID NOT NULL NUMBER(4)ORDER_DATE   DATE

DESC Order_Lines;Name Null? TypeORDER_ID NOT NULL NUMBER(4)VIDEO_GAME_ID NOT NULL NUMBER(4)ORDERED_QUANTITY   NUMBER(4)

DESC Video_Games;Name Null? TypeVIDEO_GAME_ID NOT NULL NUMBER(4)

11

Page 12: Project I & II

WARE_ID NOT NULL NUMBER(4)GAME_NAME   VARCHAR2(50)GAME_PRICE   NUMBER(4,2)REL_YEAR   NUMBER(4)

DESC Warehouse;Name Null? TypeWARE_ID NOT NULL NUMBER(4)WARE_NAME   VARCHAR2(25)WARE_STR   VARCHAR2(25)WARE_CITY   VARCHAR2(25)WARE_STATE   VARCHAR2(25)WARE_ZIPCODE   NUMBER(5)

DATABASE ENTITY INSTANCES

SELECT * FROM Customers;CUST_ID CUST_STR CUST_CITY CUST_S CUST_ZIPCODE CUST_PHONE CUS1 North Stockton CA 90020 2134596784 I2 South Burbank CA 90005 3235689427 I3 Harvard Santa Monica CA 90020 3105462189 I4 Hobart Stockton CA 90006 2133678206 B5 Vermont Glendale CA 90015 2134801153 B

SELECT * FROM Individual_Customer;CUST_ID CUST_FNAME CUST_LNAME CUST_DOB CUS1 John Smith 21-OCT-90 M2 Billy Cohen 19-SEP-92 M3 Sara James 24-JAN-91 F

SELECT * FROM Business_Customer;CUST_ID BUS_NAME CONTACT_FNAME CONTACT_LNAME4 Gamestop Richard Miller5 Gamus Lee Young

SELECT * FROM Orders;ORDER_ID CUST_ID ORDER_DATE1001 1 17-OCT-161002 2 15-OCT-161003 3 14-SEP-161004 4 01-SEP-161005 5 04-JUL-16

12

Page 13: Project I & II

SELECT * FROM Order_Lines;ORDER_ID VIDEO_GAME_ID ORDERED_QUANTITY1001 1 11001 2 11002 2 11002 4 11003 1 21003 3 11004 3 41005 4 7

SELECT * FROM Video_Games;VIDEO_GAME_ID WARE_ID GAME_NAME GAME_PRICE REL_YEAR1 1 Xenosaga 19.99 20012 1 Resident Evil 17.99 19983 2 Dark Souls 3 39.99 20164 3 Dead Space 9.99 2008

SELECT * FROM Warehouse;WARE_ID WARE_NAME WARE_STR WARE_CITY WARE_STATE WARE_ZIPCODE1 Warehouse A Main Los Angeles CA 900202 Warehouse B Central Santa Monica CA 90030

3 Warehouse C Azusa City Of Industry CA 90040

SQL STATEMENTS & QUERIES

1. Retrieve customer Ids of those who are in Stockton

Enter SQL, PL/SQL and SQL*Plus statements.

           

CUST_ID CUST_CITY1 Stockton

13

SELECT Cust_Id, Cust_CityFROM CustomersWHERE Cust_City IN ('Stockton');

Page 14: Project I & II

4 Stockton

2. Retrieve the average price of each game

Enter SQL, PL/SQL and SQL*Plus statements.

           

GAME_NAME AVG(GAME_PRICE)Xenosaga 19.99Dark Souls 3 39.99Resident Evil 17.99Dead Space 9.99

3. Display the total cost for each order that has been placed and rename the output columns

Enter SQL, PL/SQL and SQL*Plus statements.

           

ORDER_ID TOTAL_COST_PER_ORDER1005 615.721001 175.921003 263.881002 175.921004 351.84

14

SELECT Game_Name, AVG(Game_Price)FROM Video_GamesGROUP BY Game_Name;

SELECT Order_Id, SUM (Game_Price * Ordered_Quantity) ASTOTAL_COST_PER_ORDERFROM Video_Games, Order_LinesGROUP BY Order_Id;

Page 15: Project I & II

4. Display customer Ids and their order Ids

Enter SQL, PL/SQL and SQL*Plus statements.

           

CUST_ID ORDER_ID1 10012 10023 10034 10045 1005

5. List the game names and their price in ascending order

Enter SQL, PL/SQL and SQL*Plus statements.

           

GAME_NAME GAME_PRICEDark Souls 3 39.99Dead Space 9.99Resident Evil 17.99Xenosaga 19.99

6. Insert Business Customer, with Customer ID 3, Business name “EB Games” and contact Lando Calrissian to the “Business_Customer” table.

15

SELECT Customers.Cust_Id, order_IdFROM Customers, OrdersWHERE Customers.Cust_Id = Orders.Cust_Id;

SELECT Game_Name, Game_PriceFROM Video_GamesORDER BY Game_Name;

Page 16: Project I & II

7. Delete Order number 1003, from the “Orders” table.

8. Create Customer_Phones_View that list all customer ID’s and their respective phones.

16

Page 17: Project I & II

9. Change the Customer phone number, of customer number 3 to 3107173320, and display the change.

17