P2: DDL.sql

File DDL.sql, 7.1 KB (added by 161007, 4 months ago)
Line 
1---------------------------------------------------------------------------
2-- ===========================================================
3-- DDL Script for deleting the tables and relationship tables
4-- ===========================================================
5
6-- * 'CASCADE' is added after each table that has foreign key, which means that when you drop the "parent" table, it will automatically drop the "child" tables that have foreign key references to it.
7
8
9DROP TABLE IF EXISTS WishlistBook;
10DROP TABLE IF EXISTS WishlistCustomer;
11DROP TABLE IF EXISTS Wishlist;
12DROP TABLE IF EXISTS FeedbackCustomer;
13DROP TABLE IF EXISTS Feedback;
14DROP TABLE IF EXISTS CartBook;
15DROP TABLE IF EXISTS CartCustomer;
16DROP TABLE IF EXISTS Cart;
17DROP TABLE IF EXISTS ReviewCustomer;
18DROP TABLE IF EXISTS ReviewBook;
19DROP TABLE IF EXISTS Review;
20DROP TABLE IF EXISTS RecommendationCustomer;
21DROP TABLE IF EXISTS RecommendationBook;
22DROP TABLE IF EXISTS Recommendation;
23DROP TABLE IF EXISTS ShippingOrder;
24DROP TABLE IF EXISTS PaymentOrder;
25DROP TABLE IF EXISTS Shipping;
26DROP TABLE IF EXISTS Payment;
27DROP TABLE IF EXISTS OrderTable;
28DROP TABLE IF EXISTS CustomerOrder;
29DROP TABLE IF EXISTS Customer CASCADE;
30DROP TABLE IF EXISTS Author CASCADE;
31DROP TABLE IF EXISTS Genre CASCADE;
32DROP TABLE IF EXISTS Publisher CASCADE;
33DROP TABLE IF EXISTS BookAuthor CASCADE;
34DROP TABLE IF EXISTS BookPublisher CASCADE;
35DROP TABLE IF EXISTS BookGenre CASCADE;
36DROP TABLE IF EXISTS Book CASCADE;
37
38
39
40
41---------------------------------------------------------------------------
42-- ============================
43-- CREATE TABLES (DDL Script)
44-- ============================
45
46
47CREATE TABLE Book (
48 BookID INT PRIMARY KEY,
49 Price DECIMAL(10, 2) NOT NULL,
50 Title VARCHAR(255) NOT NULL,
51 StockQuantity INTEGER NOT NULL,
52 PublishedDate DATE NOT NULL
53);
54
55CREATE TABLE Publisher (
56 PublisherID INT PRIMARY KEY,
57 PublisherName VARCHAR(255) NOT NULL
58);
59
60CREATE TABLE Genre (
61 GenreID INT PRIMARY KEY,
62 GenreName VARCHAR(255) NOT NULL
63);
64
65CREATE TABLE Cart (
66 CartID INT PRIMARY KEY,
67 Quantity INTEGER NOT NULL
68);
69
70CREATE TABLE Author (
71 AuthorID INT PRIMARY KEY,
72 AuthorName VARCHAR(255) NOT NULL,
73 Email VARCHAR(255) NOT NULL
74);
75
76CREATE TABLE Recommendation (
77 RecommendationID INT PRIMARY KEY,
78 DateRecommended DATE NOT NULL
79);
80
81CREATE TABLE Review (
82 ReviewID INT PRIMARY KEY,
83 Rating DECIMAL(3, 2) NOT NULL,
84 Comment VARCHAR(255) NOT NULL,
85 DatePosted DATE NOT NULL
86);
87
88CREATE TABLE OrderTable (
89 OrderID INT PRIMARY KEY,
90 OrderDate DATE NOT NULL,
91 TotalAmount DECIMAL(10, 2) NOT NULL
92);
93
94CREATE TABLE Shipping (
95 ShippingID INT PRIMARY KEY,
96 ShipDate DATE NOT NULL,
97 TrackingNumber VARCHAR(50) NOT NULL,
98 Status BOOLEAN NOT NULL
99);
100
101CREATE TABLE Payment (
102 PaymentID INT PRIMARY KEY,
103 PaymentDate DATE NOT NULL,
104 PaymentMethod VARCHAR(255) NOT NULL,
105 Amount DECIMAL(10, 2) NOT NULL
106);
107
108CREATE TABLE Customer (
109 CustomerID INT PRIMARY KEY,
110 Username VARCHAR(255) NOT NULL,
111 Password VARCHAR(255) NOT NULL,
112 Address VARCHAR(255) NOT NULL,
113 FirstName VARCHAR(255) NOT NULL,
114 LastName VARCHAR(255) NOT NULL,
115 Email VARCHAR(255) NOT NULL,
116 Phone VARCHAR(20) NOT NULL
117);
118
119CREATE TABLE Feedback (
120 FeedbackID INT PRIMARY KEY,
121 FeedbackText VARCHAR(255) NOT NULL,
122 DateSubmitted DATE NOT NULL
123);
124
125CREATE TABLE Wishlist (
126 WishlistID INT PRIMARY KEY
127);
128
129
130
131
132
133----------------------------------------------------------------------------
134-- ===============================
135-- CREATE RELATIONS (DDL Script)
136-- ===============================
137
138
139
140
141CREATE TABLE BookGenre (
142 BookID INT,
143 GenreID INT,
144 PRIMARY KEY (BookID, GenreID),
145 FOREIGN KEY (BookID) REFERENCES Book(BookID),
146 FOREIGN KEY (GenreID) REFERENCES Genre(GenreID)
147);
148
149CREATE TABLE BookAuthor (
150 BookID INT,
151 AuthorID INT,
152 PRIMARY KEY (BookID, AuthorID),
153 FOREIGN KEY (BookID) REFERENCES Book(BookID),
154 FOREIGN KEY (AuthorID) REFERENCES Author(AuthorID)
155);
156
157CREATE TABLE BookPublisher (
158 BookID INT,
159 PublisherID INT,
160 PRIMARY KEY (BookID, PublisherID),
161 FOREIGN KEY (BookID) REFERENCES Book(BookID),
162 FOREIGN KEY (PublisherID) REFERENCES Publisher(PublisherID)
163);
164
165CREATE TABLE CustomerOrder (
166 CustomerID INT,
167 OrderID INT,
168 PRIMARY KEY (CustomerID, OrderID),
169 FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID),
170 FOREIGN KEY (OrderID) REFERENCES OrderTable(OrderID)
171);
172
173CREATE TABLE ReviewBook (
174 ReviewID INT,
175 BookID INT,
176 PRIMARY KEY (ReviewID, BookID),
177 FOREIGN KEY (ReviewID) REFERENCES Review(ReviewID),
178 FOREIGN KEY (BookID) REFERENCES Book(BookID)
179);
180
181CREATE TABLE ReviewCustomer (
182 ReviewID INT,
183 CustomerID INT,
184 PRIMARY KEY (ReviewID, CustomerID),
185 FOREIGN KEY (ReviewID) REFERENCES Review(ReviewID),
186 FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)
187);
188
189CREATE TABLE RecommendationBook (
190 RecommendationID INT,
191 BookID INT,
192 PRIMARY KEY (RecommendationID, BookID),
193 FOREIGN KEY (RecommendationID) REFERENCES Recommendation(RecommendationID),
194 FOREIGN KEY (BookID) REFERENCES Book(BookID)
195);
196
197CREATE TABLE RecommendationCustomer (
198 RecommendationID INT,
199 CustomerID INT,
200 PRIMARY KEY (RecommendationID, CustomerID),
201 FOREIGN KEY (RecommendationID) REFERENCES Recommendation(RecommendationID),
202 FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)
203);
204
205CREATE TABLE FeedbackCustomer (
206 FeedbackID INT,
207 CustomerID INT,
208 PRIMARY KEY (FeedbackID, CustomerID),
209 FOREIGN KEY (FeedbackID) REFERENCES Feedback(FeedbackID),
210 FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)
211);
212
213CREATE TABLE CartCustomer (
214 CartID INT,
215 CustomerID INT,
216 PRIMARY KEY (CartID, CustomerID),
217 FOREIGN KEY (CartID) REFERENCES Cart(CartID),
218 FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)
219);
220
221CREATE TABLE CartBook (
222 CartID INT,
223 BookID INT,
224 PRIMARY KEY (CartID, BookID),
225 FOREIGN KEY (CartID) REFERENCES Cart(CartID),
226 FOREIGN KEY (BookID) REFERENCES Book(BookID)
227);
228
229CREATE TABLE WishlistCustomer (
230 WishlistID INT,
231 CustomerID INT,
232 PRIMARY KEY (WishlistID, CustomerID),
233 FOREIGN KEY (WishlistID) REFERENCES Wishlist(WishlistID),
234 FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)
235);
236
237CREATE TABLE WishlistBook (
238 WishlistID INT,
239 BookID INT,
240 PRIMARY KEY (WishlistID, BookID),
241 FOREIGN KEY (WishlistID) REFERENCES Wishlist(WishlistID),
242 FOREIGN KEY (BookID) REFERENCES Book(BookID)
243);
244
245CREATE TABLE PaymentOrder (
246 PaymentID INT,
247 OrderID INT,
248 PRIMARY KEY (PaymentID, OrderID),
249 FOREIGN KEY (PaymentID) REFERENCES Payment(PaymentID),
250 FOREIGN KEY (OrderID) REFERENCES OrderTable(OrderID)
251);
252
253CREATE TABLE ShippingOrder (
254 ShippingID INT,
255 OrderID INT,
256 PRIMARY KEY (ShippingID, OrderID),
257 FOREIGN KEY (ShippingID) REFERENCES Shipping(ShippingID),
258 FOREIGN KEY (OrderID) REFERENCES OrderTable(OrderID)
259);
260
261
262
263