-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathcreate_DB_schema_book_e_commerce.sql
More file actions
80 lines (70 loc) · 2.3 KB
/
Copy pathcreate_DB_schema_book_e_commerce.sql
File metadata and controls
80 lines (70 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
CREATE DATABASE IF NOT EXISTS ecommerce;
USE ecommerce;
CREATE TABLE Product (
ProductId CHAR(10) PRIMARY KEY ,
ProductName VARCHAR(100) NOT NULL,
ProductDescription VARCHAR(500),
ProductLongDescription VARCHAR(2000),
ProductSize VARCHAR(10),
ProductColour VARCHAR(10),
ProductWeight SMALLINT,
ProductPrice NUMERIC(7,2),
ProductOnHand SMALLINT NOT NULL,
ProductComments VARCHAR(1000),
ProductImage VARCHAR(100),
ProductDiscount NUMERIC(7,2) NOT NULL,
ProductShipCost NUMERIC(7,2) NOT NULL
);
CREATE TABLE Category (
CategoryID INT AUTO_INCREMENT PRIMARY KEY,
CategoryName VARCHAR(100) NOT NULL,
CategoryDescription VARCHAR(1000),
CategoryParentId INT NOT NULL,
FOREIGN KEY (CategoryParentId) REFERENCES Category(CategoryID)
);
CREATE TABLE ProductCategory(
ProductId CHAR(10) ,
CategoryID INT NOT NULL,
ProductCategoryDefault CHAR(1) NOT NULL,
PRIMARY KEY (ProductId,CategoryID),
FOREIGN KEY(ProductId) REFERENCES Product(ProductId),
FOREIGN KEY (CategoryID) REFERENCES Category(CategoryID)
);
CREATE TABLE Customer (
CustomerId INT AUTO_INCREMENT PRIMARY KEY,
CustomerUserName VARCHAR(20) NOT NULL,
CustomerPassword VARCHAR(20) NOT NULL,
CustomerEmail VARCHAR(100) NOT NULL,
CustomerFirstName VARCHAR(50),
CustomerLastName VARCHAR(50),
CustomerAddresse1 VARCHAR(100),
CustomerAddresse2 VARCHAR(100),
CustomerCity VARCHAR(100),
CustomerProvience VARCHAR(100),
CustomerCountry VARCHAR(50),
CustomerPostal VARCHAR(10)
);
CREATE TABLE Orders (
OrderId INT AUTO_INCREMENT PRIMARY KEY,
OrderTotal NUMERIC(7,2) NOT NULL,
OrderDiscount NUMERIC(7,2) NOT NULL,
OrderTax NUMERIC(7,2) NOT NULL,
OrderShipping NUMERIC(7,2) NOT NULL,
OrderDate Date NOT NULL,
OrderShipDate Date ,
OrderCustomerId INT NOT NULL,
FOREIGN KEY (OrderCustomerId) REFERENCES Customer(CustomerId)
);
CREATE TABLE OrderItem (
OrderId INT NOT NULL,
ProductId CHAR(10) NOT NULL,
OrderItemQuantity SMALLINT NOT NULL,
OrderItemPrice NUMERIC(7,2) NOT NULL,
OrderItemDiscount NUMERIC(7,2) NOT NULL,
OrderItemTax NUMERIC(7,2) NOT NULL,
OrderItemShipping NUMERIC(7,2) NOT NULL,
PRIMARY KEY (OrderId, ProductId),
FOREIGN KEY (OrderId) REFERENCES Orders (OrderId),
FOREIGN KEY (ProductId) REFERENCES Product (ProductId)
);
CREATE INDEX OrderItemProductIndex ON OrderItem(ProductId);