-- Создание базы данных
CREATE DATABASE dc1_hw1;
-- Подключение к базе данных (если используешь psql вручную)
-- \c dc1_hw1;
-- Создание таблицы пользователей
CREATE TABLE app_user (
user_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
user_name VARCHAR(80) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- Создание таблицы городов
CREATE TABLE city (
city_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
city_name VARCHAR(50) NOT NULL,
country_name VARCHAR(50) NOT NULL,
is_capital BOOLEAN NOT NULL
);
-- Создание таблицы поездок
CREATE TABLE trip (
trip_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
trip_name VARCHAR(500) NOT NULL,
start_date DATE,
user_id INT NOT NULL,
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES app_user(user_id)
);
-- Создание таблицы городов в поездке
CREATE TABLE trip_cities (
trip_id INT NOT NULL,
ord_number INT NOT NULL,
city_id INT NOT NULL,
stay_duration INT,
PRIMARY KEY (trip_id, ord_number),
CONSTRAINT fk_trip FOREIGN KEY (trip_id) REFERENCES trip(trip_id),
CONSTRAINT fk_city FOREIGN KEY (city_id) REFERENCES city(city_id)
);
-- Добавление пользователей
INSERT INTO app_user (user_name) VALUES
('Иван Иванов'),
('Анна Смирнова');
-- Добавление городов
INSERT INTO city (city_name, country_name, is_capital) VALUES
('Москва', 'Россия', TRUE),
('Санкт-Петербург', 'Россия', FALSE),
('Казань', 'Россия', FALSE),
('Новосибирск', 'Россия', FALSE),
('Сочи', 'Россия', FALSE);
-- Добавление поездок
INSERT INTO trip (trip_name, start_date, user_id) VALUES
('Путешествие по России #1', '2025-07-01', 1),
('Южный маршрут', '2025-08-10', 2);
-- Добавление городов в поездки
-- trip_id = 1 (Путешествие по России #1)
INSERT INTO trip_cities (trip_id, ord_number, city_id, stay_duration) VALUES
(1, 1, 1, 2), -- Москва
(1, 2, 2, 3), -- Санкт-Петербург
(1, 3, 3, 2); -- Казань
-- trip_id = 2 (Южный маршрут)
INSERT INTO trip_cities (trip_id, ord_number, city_id, stay_duration) VALUES
(2, 1, 5, 4), -- Сочи
(2, 2, 4, 2); -- Новосибирск