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


-- 1. Таблица Авиакомпаний
CREATE TABLE Airlines (
    airline_id INT IDENTITY(1,1) PRIMARY KEY,
    name NVARCHAR(100) NOT NULL,
    country NVARCHAR(50) NOT NULL,
    iata_code CHAR(2) UNIQUE NOT NULL -- Код авиакомпании (например, SU, S7)
);
GO

-- 2. Таблица Аэропортов (пункты отправления и назначения)
CREATE TABLE Airports (
    airport_id INT IDENTITY(1,1) PRIMARY KEY,
    name NVARCHAR(150) NOT NULL,
    city NVARCHAR(100) NOT NULL,
    country NVARCHAR(50) NOT NULL,
    iata_code CHAR(3) UNIQUE NOT NULL -- Код аэропорта (например, SVO, JFK)
);
GO

-- 3. Таблица Воздушных судов (Самолетов)
CREATE TABLE Aircraft (
    aircraft_id INT IDENTITY(1,1) PRIMARY KEY,
    model NVARCHAR(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
);
GO

-- 4. Таблица Рейсов
CREATE TABLE Flights (
    flight_id INT IDENTITY(1,1) 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 DATETIME2 NOT NULL,
    arrival_time DATETIME2 NOT NULL,
    status VARCHAR(20) DEFAULT 'On Time', -- On Time, Delayed, Cancelled, Boarding
    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
);
GO

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

-- 6. Таблица Билетов
CREATE TABLE Tickets (
    ticket_id INT IDENTITY(1,1) PRIMARY KEY,
    passenger_id INT NOT NULL,
    flight_id INT NOT NULL,
    seat_number VARCHAR(5),                -- Номер места (например, 12A)
    price DECIMAL(10, 2) NOT NULL,
    ticket_class VARCHAR(20) NOT NULL,     -- Economy, Business, First
    purchase_date DATETIME2 DEFAULT SYSDATETIME(),
    FOREIGN KEY (passenger_id) REFERENCES Passengers(passenger_id) ON DELETE RESTRICT,
    FOREIGN KEY (flight_id) REFERENCES Flights(flight_id) ON DELETE CASCADE
);
GO

-- 7. Таблица Багажа
CREATE TABLE Baggage (
    baggage_id INT IDENTITY(1,1) PRIMARY KEY,
    ticket_id INT NOT NULL,
    weight_kg DECIMAL(5, 2) NOT NULL,
    is_oversized BIT DEFAULT 0,            -- Крупногабаритный багаж (0 = false, 1 = true)
    status VARCHAR(20) DEFAULT 'Checked',  -- Checked, Loaded, Lost, Delivered
    FOREIGN KEY (ticket_id) REFERENCES Tickets(ticket_id) ON DELETE CASCADE
);
GO