CREATE SCHEMA IF NOT EXISTS travel_sage;
SET search_path TO travel_sage;
DROP TABLE IF EXISTS destination_user CASCADE;
DROP TABLE IF EXISTS activity_reservation CASCADE;
DROP TABLE IF EXISTS package_reservation CASCADE;
DROP TABLE IF EXISTS package_activity CASCADE;
DROP TABLE IF EXISTS preference CASCADE;
DROP TABLE IF EXISTS destination_tag CASCADE;
DROP TABLE IF EXISTS tag CASCADE;
DROP TABLE IF EXISTS event CASCADE;
DROP TABLE IF EXISTS activity CASCADE;
DROP TABLE IF EXISTS package CASCADE;
DROP TABLE IF EXISTS meteorological_condition CASCADE;
DROP TABLE IF EXISTS review CASCADE;
DROP TABLE IF EXISTS reservation CASCADE;
DROP TABLE IF EXISTS premium CASCADE;
DROP TABLE IF EXISTS standard CASCADE;
DROP TABLE IF EXISTS users CASCADE;
DROP TABLE IF EXISTS destination CASCADE;
CREATE TABLE IF NOT EXISTS destination (
id_destination SERIAL PRIMARY KEY,
location_name VARCHAR(255) NOT NULL,
location_desc TEXT,
types_of_places TEXT,
recommended_season TEXT,
average_temp NUMERIC(5,2),
latitude DECIMAL(9,6),
longitude DECIMAL(9,6),
country VARCHAR(100),
popularity INTEGER DEFAULT 0,
important_location_name VARCHAR(255),
important_location_description TEXT
);
CREATE TABLE IF NOT EXISTS users (
id_user SERIAL PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
phone_number VARCHAR(30),
birth_date DATE,
is_premium BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE TABLE IF NOT EXISTS standard (
id_user INT PRIMARY KEY REFERENCES users(id_user) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS premium (
id_user INT PRIMARY KEY REFERENCES users(id_user) ON DELETE CASCADE,
date_created TIMESTAMP NOT NULL DEFAULT now(),
discount NUMERIC(5,2)
);
CREATE TABLE IF NOT EXISTS reservation (
id_reservation SERIAL PRIMARY KEY,
id_user INT NOT NULL REFERENCES users(id_user) ON DELETE CASCADE,
time_point TIMESTAMP NOT NULL DEFAULT now(),
premium_discount_applied BOOLEAN NOT NULL DEFAULT FALSE,
discount_amount NUMERIC(5,2) NOT NULL,
total_price NUMERIC(12,2) NOT NULL
);
CREATE TABLE IF NOT EXISTS review (
id_review SERIAL PRIMARY KEY,
username VARCHAR(255) NOT NULL,
reservation_id INT UNIQUE REFERENCES reservation(id_reservation) ON DELETE CASCADE,
id_destination INT NOT NULL REFERENCES destination(id_destination) ON DELETE CASCADE,
quality SMALLINT NOT NULL CHECK (quality BETWEEN 1 AND 5),
comment TEXT,
review_date TIMESTAMP DEFAULT now(),
vote_count INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS meteorological_condition (
id_meteo SERIAL PRIMARY KEY,
id_destination INT NOT NULL REFERENCES destination(id_destination) ON DELETE CASCADE,
current_temp NUMERIC(5,2) NOT NULL,
weather_condition VARCHAR(50) NOT NULL,
warnings VARCHAR(100) NOT NULL,
humidity NUMERIC(5,2),
wind NUMERIC(6,2),
month SMALLINT
);
CREATE TABLE IF NOT EXISTS package (
id_package SERIAL PRIMARY KEY,
package_name VARCHAR(255) NOT NULL,
id_destination INT NOT NULL REFERENCES destination(id_destination) ON DELETE CASCADE,
price NUMERIC(12,2) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL
);
CREATE TABLE IF NOT EXISTS activity (
id_activity SERIAL PRIMARY KEY,
activity_name VARCHAR(255) NOT NULL,
id_destination INT REFERENCES destination(id_destination) ON DELETE CASCADE,
information TEXT,
amount NUMERIC(10,2),
category VARCHAR(100) NOT NULL
);
CREATE TABLE IF NOT EXISTS event (
id_event SERIAL PRIMARY KEY,
event_name VARCHAR(255) NOT NULL,
id_destination INT NOT NULL REFERENCES destination(id_destination) ON DELETE CASCADE,
start_date DATE,
end_date DATE,
details TEXT,
event_type TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS tag (
id_tag SERIAL PRIMARY KEY,
tag_name VARCHAR(100) NOT NULL
);
CREATE TABLE IF NOT EXISTS destination_tag (
id_destination INT REFERENCES destination(id_destination) ON DELETE CASCADE,
id_tag INT REFERENCES tag(id_tag) ON DELETE CASCADE,
PRIMARY KEY(id_destination, id_tag)
);
CREATE TABLE IF NOT EXISTS preference (
id_preference SERIAL PRIMARY KEY,
id_user INT NOT NULL REFERENCES users(id_user) ON DELETE CASCADE,
priority INT,
type_preference TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS package_activity (
id_package INT REFERENCES package(id_package) ON DELETE CASCADE,
id_activity INT REFERENCES activity(id_activity) ON DELETE CASCADE,
PRIMARY KEY(id_package, id_activity)
);
CREATE TABLE IF NOT EXISTS package_reservation (
id_package INT REFERENCES package(id_package) ON DELETE CASCADE,
id_reservation INT REFERENCES reservation(id_reservation) ON DELETE CASCADE,
PRIMARY KEY(id_package, id_reservation)
);
CREATE TABLE IF NOT EXISTS activity_reservation (
id_activity INT REFERENCES activity(id_activity) ON DELETE CASCADE,
id_reservation INT REFERENCES reservation(id_reservation) ON DELETE CASCADE,
PRIMARY KEY(id_activity, id_reservation)
);
CREATE TABLE IF NOT EXISTS destination_user (
id_destination INT REFERENCES destination(id_destination) ON DELETE CASCADE,
id_user INT REFERENCES users(id_user) ON DELETE CASCADE,
rating SMALLINT CHECK (rating BETWEEN 1 AND 5),
comment TEXT,
recommendation_date TIMESTAMP DEFAULT now(),
PRIMARY KEY(id_destination, id_user)
);
Last modified
5 weeks ago
Last modified on 09/22/25 23:22:21
Attachments (6)
- ddlScript.sql (5.0 KB ) - added by 10 months ago.
- ddlScript_part2.sql (4.8 KB ) - added by 9 months ago.
- sqlPoslednaV.sql (5.7 KB ) - added by 9 months ago.
- sqlPoslednaV.2.sql (6.3 KB ) - added by 9 months ago.
- kreiranje.sql (6.5 KB ) - added by 9 months ago.
- travel_sage_ddl.sql (5.5 KB ) - added by 5 weeks ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.
