Логички и физички дизајн - Креирање база податоци: ddlscript-create.sql

File ddlscript-create.sql, 4.7 KB (added by 173067, 2 months ago)
Line 
1-- CREATE SCHEMA
2CREATE SCHEMA IF NOT EXISTS project;
3
4-- TABLE: ApplicationUser
5CREATE TABLE project.ApplicationUser (
6 UserID SERIAL PRIMARY KEY,
7 Name VARCHAR(255),
8 Surname VARCHAR(255),
9 Email VARCHAR(255) UNIQUE NOT NULL,
10 Password VARCHAR(255) NOT NULL,
11 PhoneNumber VARCHAR(20),
12 DateJoined TIMESTAMP NOT NULL DEFAULT NOW()
13);
14
15-- TABLE: Destination
16CREATE TABLE project.Destination (
17 DestinationID SERIAL PRIMARY KEY,
18 Name VARCHAR(255) NOT NULL,
19 Country VARCHAR(255),
20 Description TEXT,
21 PopularAttraction TEXT,
22 BestTimeToVisit VARCHAR(255)
23);
24
25-- TABLE: Airport
26CREATE TABLE project.Airport (
27 AirportID SERIAL PRIMARY KEY,
28 Name VARCHAR(255) NOT NULL,
29 Country VARCHAR(255),
30 Code VARCHAR(10) UNIQUE,
31 DestinationID INT NOT NULL,
32 CONSTRAINT fk_airport_destination FOREIGN KEY (DestinationID) REFERENCES project.Destination(DestinationID)
33);
34
35-- TABLE: Flight
36CREATE TABLE project.Flight (
37 FlightID SERIAL PRIMARY KEY,
38 FlightNumber VARCHAR(50) NOT NULL,
39 DepartureAirportID INT NOT NULL,
40 ArrivalAirportID INT NOT NULL,
41 DepartureTime TIMESTAMP NOT NULL,
42 ArrivalTime TIMESTAMP NOT NULL,
43 Price DECIMAL(10,2),
44 AvailableSeats INT,
45 CONSTRAINT fk_flight_departure FOREIGN KEY (DepartureAirportID) REFERENCES project.Airport(AirportID),
46 CONSTRAINT fk_flight_arrival FOREIGN KEY (ArrivalAirportID) REFERENCES project.Airport(AirportID)
47);
48
49-- TABLE: Booking
50CREATE TABLE project.Booking (
51 BookingID SERIAL PRIMARY KEY,
52 UserID INT NOT NULL,
53 BookingDate TIMESTAMP NOT NULL DEFAULT NOW(),
54 PaymentStatus VARCHAR(20) CHECK (PaymentStatus IN ('Pending','Completed','Cancelled')),
55 TotalCost DECIMAL(10,2),
56 CONSTRAINT fk_booking_user FOREIGN KEY (UserID) REFERENCES project.ApplicationUser(UserID)
57);
58
59-- TABLE: BookingFlight (many-to-many)
60CREATE TABLE project.BookingFlight (
61 BookingID INT NOT NULL,
62 FlightID INT NOT NULL,
63 SeatNumber INT,
64 PRIMARY KEY (BookingID, FlightID),
65 CONSTRAINT fk_bookingflight_booking FOREIGN KEY (BookingID) REFERENCES project.Booking(BookingID),
66 CONSTRAINT fk_bookingflight_flight FOREIGN KEY (FlightID) REFERENCES project.Flight(FlightID)
67);
68
69-- TABLE: Review
70CREATE TABLE project.Review (
71 ReviewID SERIAL PRIMARY KEY,
72 UserID INT NOT NULL,
73 BookingID INT NOT NULL,
74 TargetID INT NOT NULL,
75 TargetType VARCHAR(20) CHECK (TargetType IN ('Flight','Destination','Airport')),
76 ReviewComment TEXT,
77 Rating INT CHECK (Rating >= 1 AND Rating <= 5),
78 ReviewDate TIMESTAMP NOT NULL DEFAULT NOW(),
79 CONSTRAINT fk_review_user FOREIGN KEY (UserID) REFERENCES project.ApplicationUser(UserID),
80 CONSTRAINT fk_review_booking FOREIGN KEY (BookingID) REFERENCES project.Booking(BookingID)
81);
82
83-- TABLE: Payment
84CREATE TABLE project.Payment (
85 PaymentID SERIAL PRIMARY KEY,
86 BookingID INT NOT NULL,
87 UserID INT NOT NULL,
88 PaymentMethod VARCHAR(20) CHECK (PaymentMethod IN ('Credit Card','Debit card','PayPal')),
89 Amount DECIMAL(10,2),
90 TransactionDate TIMESTAMP NOT NULL DEFAULT NOW(),
91 PaymentStatus VARCHAR(20) CHECK (PaymentStatus IN ('Success','Failed','Processing')),
92 CONSTRAINT fk_payment_booking FOREIGN KEY (BookingID) REFERENCES project.Booking(BookingID),
93 CONSTRAINT fk_payment_user FOREIGN KEY (UserID) REFERENCES project.ApplicationUser(UserID)
94);
95
96-- TABLE: Notification
97CREATE TABLE project.Notification (
98 NotificationID SERIAL PRIMARY KEY,
99 UserID INT NOT NULL,
100 Message TEXT,
101 Type VARCHAR(30) CHECK (Type IN ('Booking Confirmation','Flight Delay','General Update')),
102 DateSent TIMESTAMP NOT NULL DEFAULT NOW(),
103 CONSTRAINT fk_notification_user FOREIGN KEY (UserID) REFERENCES project.ApplicationUser(UserID)
104);
105
106-- TABLE: Wishlist
107CREATE TABLE project.Wishlist (
108 WishlistID SERIAL PRIMARY KEY,
109 UserID INT NOT NULL,
110 TargetID INT NOT NULL,
111 DateAdded TIMESTAMP NOT NULL DEFAULT NOW(),
112 CONSTRAINT fk_wishlist_user FOREIGN KEY (UserID) REFERENCES project.ApplicationUser(UserID)
113);
114
115-- TABLE: Administrator
116CREATE TABLE project.Administrator (
117 AdminID SERIAL PRIMARY KEY,
118 Email VARCHAR(255) UNIQUE NOT NULL
119);
120
121-- TABLE: SupportTicket
122CREATE TABLE project.SupportTicket (
123 TicketID SERIAL PRIMARY KEY,
124 UserID INT NOT NULL,
125 Subject VARCHAR(255),
126 Description TEXT,
127 Status VARCHAR(20) CHECK (Status IN ('Open','In Progress','Resolved')),
128 DateCreated TIMESTAMP NOT NULL DEFAULT NOW(),
129 DateResolved TIMESTAMP,
130 AssignedTo INT,
131 CONSTRAINT fk_ticket_user FOREIGN KEY (UserID) REFERENCES project.ApplicationUser(UserID),
132 CONSTRAINT fk_ticket_admin FOREIGN KEY (AssignedTo) REFERENCES project.Administrator(AdminID)
133);