P2: DDL_161007.sql

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