Загрузка данных


-- 1. Таблица Авиакомпаний
CREATE TABLE Airlines (
    airline_id SERIAL PRIMARY KEY,  -- Автоинкремент
    name VARCHAR(100) NOT NULL,
    country VARCHAR(50) NOT NULL,
    iata_code CHAR(2) UNIQUE NOT NULL
);

-- 2. Таблица Аэропортов
CREATE TABLE Airports (
    airport_id SERIAL PRIMARY KEY,
    name VARCHAR(150) NOT NULL,
    city VARCHAR(100) NOT NULL,
    country VARCHAR(50) NOT NULL,
    iata_code CHAR(3) UNIQUE NOT NULL
);

-- 3. Таблица Воздушных судов
CREATE TABLE Aircraft (
    aircraft_id SERIAL PRIMARY KEY,
    model VARCHAR(50) NOT NULL,
    tail_number VARCHAR(20) UNIQUE NOT NULL,
    capacity INT NOT NULL,
    airline_id INT NOT NULL,
    FOREIGN KEY (airline_id) REFERENCES Airlines(airline_id) ON DELETE CASCADE
);

-- 4. Таблица Рейсов
CREATE TABLE Flights (
    flight_id SERIAL PRIMARY KEY,
    flight_number VARCHAR(10) NOT NULL,
    departure_airport_id INT NOT NULL,
    arrival_airport_id INT NOT NULL,
    aircraft_id INT NOT NULL,
    departure_time TIMESTAMP NOT NULL,
    arrival_time TIMESTAMP NOT NULL,
    status VARCHAR(20) DEFAULT 'On Time',
    FOREIGN KEY (departure_airport_id) REFERENCES Airports(airport_id) ON DELETE RESTRICT,
    FOREIGN KEY (arrival_airport_id) REFERENCES Airports(airport_id) ON DELETE RESTRICT,
    FOREIGN KEY (aircraft_id) REFERENCES Aircraft(aircraft_id) ON DELETE RESTRICT
);

-- 5. Таблица Пассажиров
CREATE TABLE Passengers (
    passenger_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    passport_number VARCHAR(20) UNIQUE NOT NULL,
    date_of_birth DATE NOT NULL,
    phone VARCHAR(20)
);

-- 6. Таблица Билетов
CREATE TABLE Tickets (
    ticket_id SERIAL PRIMARY KEY,
    passenger_id INT NOT NULL,
    flight_id INT NOT NULL,
    seat_number VARCHAR(5),
    price DECIMAL(10, 2) NOT NULL,
    ticket_class VARCHAR(20) NOT NULL,
    purchase_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (passenger_id) REFERENCES Passengers(passenger_id) ON DELETE RESTRICT,
    FOREIGN KEY (flight_id) REFERENCES Flights(flight_id) ON DELETE CASCADE
);

-- 7. Таблица Багажа
CREATE TABLE Baggage (
    baggage_id SERIAL PRIMARY KEY,
    ticket_id INT NOT NULL,
    weight_kg DECIMAL(5, 2) NOT NULL,
    is_oversized BOOLEAN DEFAULT FALSE,
    status VARCHAR(20) DEFAULT 'Checked',
    FOREIGN KEY (ticket_id) REFERENCES Tickets(ticket_id) ON DELETE CASCADE
);