M.4. ÐбÑекÑÑ ÑÑ ÐµÐ¼Ñ
- M.4.1. СпиÑок оÑноÑений
- M.4.2. ÐÑедÑÑавление
bookings.aircrafts- M.4.3. ТаблиÑа
bookings.aircrafts_data- M.4.4. ÐÑедÑÑавление
bookings.airports- M.4.5. ТаблиÑа
bookings.airports_data- M.4.6. ТаблиÑа
bookings.boarding_passes- M.4.7. ТаблиÑа
bookings.bookings- M.4.8. ТаблиÑа
bookings.flights- M.4.9. ТаблиÑа
bookings.seats- M.4.10. ТаблиÑа
bookings.ticket_flights- M.4.11. ТаблиÑа
bookings.tickets- M.4.12. ÐÑедÑÑавление
bookings.flights_v- M.4.13. ÐÑедÑÑавление
bookings.routes- M.4.14. ФÑнкÑиÑ
bookings.now- M.4.15. ФÑнкÑиÑ
bookings.lang - M.4.2. ÐÑедÑÑавление
M.4.1. СпиÑок оÑноÑений
ÐÐ¼Ñ | Тип | Small | Medium | Big | ÐпиÑание
-----------------+---------------+--------+--------+--------+-------------------------
aircrafts | пÑедÑÑавление | | | | СамолеÑÑ
aircrafts_data | ÑаблиÑа | 16 kB | 16 kB | 16 kB | СамолеÑÑ (пеÑеводÑ)
airports | пÑедÑÑавление | | | | ÐÑÑопоÑÑÑ
airports_data | ÑаблиÑа | 56 kB | 56 kB | 56 kB | ÐÑÑопоÑÑÑ (пеÑеводÑ)
boarding_passes | ÑаблиÑа | 31 MB | 102 MB | 427 MB | ÐоÑадоÑнÑе ÑалонÑ
bookings | ÑаблиÑа | 13 MB | 30 MB | 105 MB | ÐÑониÑованиÑ
flights | ÑаблиÑа | 3 MB | 6 MB | 19 MB | РейÑÑ
flights_v | пÑедÑÑавление | | | | РейÑÑ
routes | пÑедÑÑавление | | | | ÐаÑÑÑÑÑÑ
seats | ÑаблиÑа | 88 kB | 88 kB | 88 kB | ÐеÑÑа
ticket_flights | ÑаблиÑа | 64 MB | 145 MB | 516 MB | ÐеÑелеÑÑ
tickets | ÑаблиÑа | 47 MB | 107 MB | 381 MB | ÐилеÑÑ
M.4.2. ÐÑедÑÑавление bookings.aircrafts
ÐÐ°Ð¶Ð´Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð²Ð¾Ð·Ð´ÑÑного ÑÑдна иденÑиÑиÑиÑÑеÑÑÑ Ñвоим ÑÑÑÑ
знаÑнÑм кодом (aircraft_code). УказÑваеÑÑÑ Ñакже название модели (model) и макÑималÑÐ½Ð°Ñ Ð´Ð°Ð»ÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа в киломеÑÑаÑ
(range).
ÐнаÑение Ð¿Ð¾Ð»Ñ model опÑеделÑеÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ð²ÑбÑанного ÑзÑка. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ M.4.15.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
---------------+---------+--------------+-----------------------------------
aircraft_code | char(3) | not null | Ðод ÑамолеÑа, IATA
model | text | not null | ÐÐ¾Ð´ÐµÐ»Ñ ÑамолеÑа
range | integer | not null | ÐакÑималÑÐ½Ð°Ñ Ð´Ð°Ð»ÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа, км
ÐпÑеделение пÑедÑÑавлениÑ:
SELECT ml.aircraft_code,
ml.model ->> lang() AS model,
ml.range
FROM aircrafts_data ml;
M.4.3. ТаблиÑа bookings.aircrafts_data
ÐÑо Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑаблиÑа Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ aircrafts. Ðоле model ÑÑой ÑаблиÑÑ ÑодеÑÐ¶Ð¸Ñ Ð¿ÐµÑÐµÐ²Ð¾Ð´Ñ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ ÑамолÑÑов на ÑазнÑе ÑзÑки, в ÑоÑмаÑе JSONB. РболÑÑинÑÑве ÑлÑÑаев к ÑÑой ÑаблиÑе не ÑледÑÐµÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
---------------+---------+--------------+-----------------------------------
aircraft_code | char(3) | not null | Ðод ÑамолеÑа, IATA
model | jsonb | not null | ÐÐ¾Ð´ÐµÐ»Ñ ÑамолеÑа
range | integer | not null | ÐакÑималÑÐ½Ð°Ñ Ð´Ð°Ð»ÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа, км
ÐндекÑÑ:
PRIMARY KEY, btree (aircraft_code)
ÐгÑаниÑениÑ-пÑовеÑки:
CHECK (range > 0)
СÑÑлки извне:
TABLE "flights" FOREIGN KEY (aircraft_code)
REFERENCES aircrafts_data(aircraft_code)
TABLE "seats" FOREIGN KEY (aircraft_code)
REFERENCES aircrafts_data(aircraft_code) ON DELETE CASCADE
M.4.4. ÐÑедÑÑавление bookings.airports
ÐÑÑопоÑÑ Ð¸Ð´ÐµÐ½ÑиÑиÑиÑÑеÑÑÑ ÑÑеÑ
бÑквеннÑм кодом (airport_code) и Ð¸Ð¼ÐµÐµÑ ÑÐ²Ð¾Ñ Ð¸Ð¼Ñ (airport_name).
ÐÐ»Ñ Ð³Ð¾Ñода не пÑедÑÑмоÑÑено оÑделÑной ÑÑÑноÑÑи, но введено поле Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ гоÑода (city), позволÑÑÑее найÑи аÑÑопоÑÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ гоÑода. ÐÑо пÑедÑÑавление Ñакже вклÑÑÐ°ÐµÑ ÐºÐ¾Ð¾ÑдинаÑÑ Ð°ÑÑопоÑÑа (coordinates) и ÑаÑовой поÑÑ (timezone).
ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ¹ airport_name и city опÑеделÑÑÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ð²ÑбÑанного ÑзÑка. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ M.4.15.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
--------------+---------+--------------+--------------------------------------------
airport_code | char(3) | not null | Ðод аÑÑопоÑÑа
airport_name | text | not null | Ðазвание аÑÑопоÑÑа
city | text | not null | ÐоÑод
coordinates | point | not null | ÐооÑдинаÑÑ Ð°ÑÑопоÑÑа (долгоÑа и ÑиÑоÑа)
timezone | text | not null | ЧаÑовой поÑÑ Ð°ÑÑопоÑÑа
ÐпÑеделение пÑедÑÑавлениÑ:
SELECT ml.airport_code,
ml.airport_name ->> lang() AS airport_name,
ml.city ->> lang() AS city,
ml.coordinates,
ml.timezone
FROM airports_data ml;
M.4.5. ТаблиÑа bookings.airports_data
ÐÑо Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑаблиÑа Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ airports. Ðна ÑодеÑÐ¶Ð¸Ñ Ð¿ÐµÑÐµÐ²Ð¾Ð´Ñ Ð·Ð½Ð°Ñений airport_name и city на ÑазнÑе ÑзÑки, в ÑоÑмаÑе JSONB. РболÑÑинÑÑве ÑлÑÑаев к ÑÑой ÑаблиÑе не ÑледÑÐµÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
--------------+---------+--------------+--------------------------------------------
airport_code | char(3) | not null | Ðод аÑÑопоÑÑа
airport_name | jsonb | not null | Ðазвание аÑÑопоÑÑа
city | jsonb | not null | ÐоÑод
coordinates | point | not null | ÐооÑдинаÑÑ Ð°ÑÑопоÑÑа (долгоÑа и ÑиÑоÑа)
timezone | text | not null | ЧаÑовой поÑÑ Ð°ÑÑопоÑÑа
ÐндекÑÑ:
PRIMARY KEY, btree (airport_code)
СÑÑлки извне:
TABLE "flights" FOREIGN KEY (arrival_airport)
REFERENCES airports_data(airport_code)
TABLE "flights" FOREIGN KEY (departure_airport)
REFERENCES airports_data(airport_code)
M.4.6. ТаблиÑа bookings.boarding_passes
ÐÑи ÑегиÑÑÑаÑии на ÑейÑ, коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð° за ÑÑÑки до плановой даÑÑ Ð¾ÑпÑавлениÑ, паÑÑажиÑÑ Ð²ÑдаÑÑÑÑ Ð¿Ð¾ÑадоÑнÑй Ñалон. Ðн иденÑиÑиÑиÑÑеÑÑÑ Ñакже, как и пеÑелÑÑ â номеÑом билеÑа и номеÑом ÑейÑа.
ÐоÑадоÑнÑм Ñалонам пÑиÑваиваÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑнÑе номеÑа (boarding_no) в поÑÑдке ÑегиÑÑÑаÑии паÑÑажиÑов на ÑÐµÐ¹Ñ (ÑÑÐ¾Ñ Ð½Ð¾Ð¼ÐµÑ Ð±ÑÐ´ÐµÑ ÑникалÑнÑм ÑолÑко в пÑеделаÑ
данного ÑейÑа). РпоÑадоÑном Ñалоне ÑказÑваеÑÑÑ Ð½Ð¾Ð¼ÐµÑ Ð¼ÐµÑÑа (seat_no).
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
-------------+------------+--------------+--------------------------
ticket_no | char(13) | not null | ÐÐ¾Ð¼ÐµÑ Ð±Ð¸Ð»ÐµÑа
flight_id | integer | not null | ÐденÑиÑикаÑÐ¾Ñ ÑейÑа
boarding_no | integer | not null | ÐÐ¾Ð¼ÐµÑ Ð¿Ð¾ÑадоÑного Ñалона
seat_no | varchar(4) | not null | ÐÐ¾Ð¼ÐµÑ Ð¼ÐµÑÑа
ÐндекÑÑ:
PRIMARY KEY, btree (ticket_no, flight_id)
UNIQUE CONSTRAINT, btree (flight_id, boarding_no)
UNIQUE CONSTRAINT, btree (flight_id, seat_no)
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
FOREIGN KEY (ticket_no, flight_id)
REFERENCES ticket_flights(ticket_no, flight_id)
M.4.7. ТаблиÑа bookings.bookings
ÐаÑÑÐ°Ð¶Ð¸Ñ Ð·Ð°Ñанее (book_date, макÑимÑм за меÑÑÑ Ð´Ð¾ ÑейÑа) бÑониÑÑÐµÑ Ð±Ð¸Ð»ÐµÑ Ñебе и, возможно, неÑколÑким дÑÑгим паÑÑажиÑам. ÐÑониÑование иденÑиÑиÑиÑÑеÑÑÑ Ð½Ð¾Ð¼ÐµÑом (book_ref, ÑеÑÑизнаÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð±Ñкв и ÑиÑÑ).
Ðоле total_amount Ñ
ÑÐ°Ð½Ð¸Ñ Ð¾Ð±ÑÑÑ ÑÑоимоÑÑÑ Ð²ÐºÐ»ÑÑÑннÑÑ
в бÑониÑование пеÑелеÑов вÑеÑ
паÑÑажиÑов.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
--------------+---------------+--------------+---------------------------
book_ref | char(6) | not null | ÐÐ¾Ð¼ÐµÑ Ð±ÑониÑованиÑ
book_date | timestamptz | not null | ÐаÑа бÑониÑованиÑ
total_amount | numeric(10,2) | not null | ÐÐ¾Ð»Ð½Ð°Ñ ÑÑмма бÑониÑованиÑ
ÐндекÑÑ:
PRIMARY KEY, btree (book_ref)
СÑÑлки извне:
TABLE "tickets" FOREIGN KEY (book_ref) REFERENCES bookings(book_ref)
M.4.8. ТаблиÑа bookings.flights
ÐÑÑеÑÑвеннÑй клÑÑ ÑаблиÑÑ ÑейÑов ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ
полей â номеÑа ÑейÑа (flight_no) и даÑÑ Ð¾ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ (scheduled_departure). ЧÑÐ¾Ð±Ñ ÑделаÑÑ Ð²Ð½ÐµÑние клÑÑи на ÑÑÑ ÑаблиÑÑ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑнее, в каÑеÑÑве пеÑвиÑного иÑполÑзÑеÑÑÑ ÑÑÑÑогаÑнÑй клÑÑ (flight_id).
Ð ÐµÐ¹Ñ Ð²Ñегда ÑоединÑÐµÑ Ð´Ð²Ðµ ÑоÑки â аÑÑопоÑÑÑ Ð²ÑлеÑа (departure_airport) и пÑибÑÑÐ¸Ñ (arrival_airport). Такое понÑÑие, как «ÑÐµÐ¹Ñ Ñ Ð¿ÐµÑеÑадками» оÑÑÑÑÑÑвÑеÑ: еÑли из одного аÑÑопоÑÑа до дÑÑгого Ð½ÐµÑ Ð¿ÑÑмого ÑейÑа, в Ð±Ð¸Ð»ÐµÑ Ð¿ÑоÑÑо вклÑÑаÑÑÑÑ Ð½ÐµÑколÑко необÑ
одимÑÑ
ÑейÑов.
У каждого ÑейÑа еÑÑÑ Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸ÑованнÑе даÑа и вÑÐµÐ¼Ñ Ð²ÑлеÑа (scheduled_departure) и пÑибÑÑÐ¸Ñ (scheduled_arrival). РеалÑнÑе вÑÐµÐ¼Ñ Ð²ÑлеÑа (actual_departure) и пÑибÑÑÐ¸Ñ (actual_arrival) могÑÑ Ð¾ÑлиÑаÑÑÑÑ: обÑÑно не ÑилÑно, но иногда и на неÑколÑко ÑаÑов, еÑли ÑÐµÐ¹Ñ Ð·Ð°Ð´ÐµÑжан.
СÑаÑÑÑ ÑейÑа (status) Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð¾Ð´Ð½Ð¾ из ÑледÑÑÑиÑ
знаÑений:
-
Scheduled Ð ÐµÐ¹Ñ Ð´Ð¾ÑÑÑпен Ð´Ð»Ñ Ð±ÑониÑованиÑ. ÐÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð·Ð° меÑÑÑ Ð´Ð¾ плановой даÑÑ Ð²ÑлеÑа; до ÑÑого запиÑÑ Ð¾ ÑейÑе не ÑÑÑеÑÑвÑÐµÑ Ð² базе даннÑÑ .
-
On Time Ð ÐµÐ¹Ñ Ð´Ð¾ÑÑÑпен Ð´Ð»Ñ ÑегиÑÑÑаÑии (за ÑÑÑки до плановой даÑÑ Ð²ÑлеÑа) и не задеÑжан.
-
Delayed Ð ÐµÐ¹Ñ Ð´Ð¾ÑÑÑпен Ð´Ð»Ñ ÑегиÑÑÑаÑии (за ÑÑÑки до плановой даÑÑ Ð²ÑлеÑа), но задеÑжан.
-
Departed Ð¡Ð°Ð¼Ð¾Ð»ÐµÑ Ñже вÑлеÑел и Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² воздÑÑ Ðµ.
-
Arrived Ð¡Ð°Ð¼Ð¾Ð»ÐµÑ Ð¿ÑибÑл в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ.
-
Cancelled Ð ÐµÐ¹Ñ Ð¾ÑменÑн.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
---------------------+-------------+--------------+-----------------------------
flight_id | serial | not null | ÐденÑиÑикаÑÐ¾Ñ ÑейÑа
flight_no | char(6) | not null | ÐÐ¾Ð¼ÐµÑ ÑейÑа
scheduled_departure | timestamptz | not null | ÐÑÐµÐ¼Ñ Ð²ÑлеÑа по ÑаÑпиÑаниÑ
scheduled_arrival | timestamptz | not null | ÐÑÐµÐ¼Ñ Ð¿ÑилÑÑа по ÑаÑпиÑаниÑ
departure_airport | char(3) | not null | ÐÑÑопоÑÑ Ð¾ÑпÑавлениÑ
arrival_airport | char(3) | not null | ÐÑÑопоÑÑ Ð¿ÑибÑÑиÑ
status | varchar(20) | not null | СÑаÑÑÑ ÑейÑа
aircraft_code | char(3) | not null | Ðод ÑамолеÑа, IATA
actual_departure | timestamptz | | ФакÑиÑеÑкое вÑÐµÐ¼Ñ Ð²ÑлеÑа
actual_arrival | timestamptz | | ФакÑиÑеÑкое вÑÐµÐ¼Ñ Ð¿ÑилÑÑа
ÐндекÑÑ:
PRIMARY KEY, btree (flight_id)
UNIQUE CONSTRAINT, btree (flight_no, scheduled_departure)
ÐгÑаниÑениÑ-пÑовеÑки:
CHECK (scheduled_arrival > scheduled_departure)
CHECK ((actual_arrival IS NULL)
OR ((actual_departure IS NOT NULL AND actual_arrival IS NOT NULL)
AND (actual_arrival > actual_departure)))
CHECK (status IN ('On Time', 'Delayed', 'Departed',
'Arrived', 'Scheduled', 'Cancelled'))
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
FOREIGN KEY (aircraft_code)
REFERENCES aircrafts(aircraft_code)
FOREIGN KEY (arrival_airport)
REFERENCES airports(airport_code)
FOREIGN KEY (departure_airport)
REFERENCES airports(airport_code)
СÑÑлки извне:
TABLE "ticket_flights" FOREIGN KEY (flight_id)
REFERENCES flights(flight_id)
M.4.9. ТаблиÑа bookings.seats
ÐеÑÑа опÑеделÑÑÑ ÑÑ
ÐµÐ¼Ñ Ñалона каждой модели. Ðаждое меÑÑо опÑеделÑеÑÑÑ Ñвоим номеÑом (seat_no) и Ð¸Ð¼ÐµÐµÑ Ð·Ð°ÐºÑеплÑннÑй за ним клаÑÑ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ (fare_conditions) â Economy, Comfort или Business.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
-----------------+-------------+--------------+--------------------
aircraft_code | char(3) | not null | Ðод ÑамолеÑа, IATA
seat_no | varchar(4) | not null | ÐÐ¾Ð¼ÐµÑ Ð¼ÐµÑÑа
fare_conditions | varchar(10) | not null | ÐлаÑÑ Ð¾Ð±ÑлÑживаниÑ
ÐндекÑÑ:
PRIMARY KEY, btree (aircraft_code, seat_no)
ÐгÑаниÑениÑ-пÑовеÑки:
CHECK (fare_conditions IN ('Economy', 'Comfort', 'Business'))
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
FOREIGN KEY (aircraft_code)
REFERENCES aircrafts(aircraft_code) ON DELETE CASCADE
M.4.10. ТаблиÑа bookings.ticket_flights
ÐеÑелÑÑ ÑоединÑÐµÑ Ð±Ð¸Ð»ÐµÑ Ñ ÑейÑом и иденÑиÑиÑиÑÑеÑÑÑ Ð¸Ñ Ð½Ð¾Ð¼ÐµÑами.
ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пеÑелеÑа ÑказÑваÑÑÑÑ ÐµÐ³Ð¾ ÑÑоимоÑÑÑ (amount) и клаÑÑ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ (fare_conditions).
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
-----------------+---------------+--------------+---------------------
ticket_no | char(13) | not null | ÐÐ¾Ð¼ÐµÑ Ð±Ð¸Ð»ÐµÑа
flight_id | integer | not null | ÐденÑиÑикаÑÐ¾Ñ ÑейÑа
fare_conditions | varchar(10) | not null | ÐлаÑÑ Ð¾Ð±ÑлÑживаниÑ
amount | numeric(10,2) | not null | СÑоимоÑÑÑ Ð¿ÐµÑелеÑа
ÐндекÑÑ:
PRIMARY KEY, btree (ticket_no, flight_id)
ÐгÑаниÑениÑ-пÑовеÑки:
CHECK (amount >= 0)
CHECK (fare_conditions IN ('Economy', 'Comfort', 'Business'))
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
FOREIGN KEY (flight_id) REFERENCES flights(flight_id)
FOREIGN KEY (ticket_no) REFERENCES tickets(ticket_no)
СÑÑлки извне:
TABLE "boarding_passes" FOREIGN KEY (ticket_no, flight_id)
REFERENCES ticket_flights(ticket_no, flight_id)
M.4.11. ТаблиÑа bookings.tickets
ÐÐ¸Ð»ÐµÑ Ð¸Ð¼ÐµÐµÑ ÑникалÑнÑй Ð½Ð¾Ð¼ÐµÑ (ticket_no), ÑоÑÑоÑÑий из 13 ÑиÑÑ.
ÐÐ¸Ð»ÐµÑ ÑодеÑÐ¶Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¿Ð°ÑÑажиÑа (passenger_id) â Ð½Ð¾Ð¼ÐµÑ Ð´Ð¾ÐºÑменÑа, ÑдоÑÑовеÑÑÑÑего лиÑноÑÑÑ, â его ÑÐ°Ð¼Ð¸Ð»Ð¸Ñ Ð¸ Ð¸Ð¼Ñ (passenger_name) и конÑакÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ (contact_data).
Ðи иденÑиÑикаÑÐ¾Ñ Ð¿Ð°ÑÑажиÑа, ни Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑÑÑÑÑ Ð¿Ð¾ÑÑоÑннÑми (можно поменÑÑÑ Ð¿Ð°ÑпоÑÑ, можно ÑмениÑÑ ÑамилиÑ), поÑÑÐ¾Ð¼Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñно найÑи вÑе билеÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ и Ñого же паÑÑажиÑа невозможно.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐодиÑикаÑоÑÑ | ÐпиÑание
----------------+-------------+--------------+-----------------------------
ticket_no | char(13) | not null | ÐÐ¾Ð¼ÐµÑ Ð±Ð¸Ð»ÐµÑа
book_ref | char(6) | not null | ÐÐ¾Ð¼ÐµÑ Ð±ÑониÑованиÑ
passenger_id | varchar(20) | not null | ÐденÑиÑикаÑÐ¾Ñ Ð¿Ð°ÑÑажиÑа
passenger_name | text | not null | ÐÐ¼Ñ Ð¿Ð°ÑÑажиÑа
contact_data | jsonb | | ÐонÑакÑнÑе даннÑе паÑÑажиÑа
ÐндекÑÑ:
PRIMARY KEY, btree (ticket_no)
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа:
FOREIGN KEY (book_ref) REFERENCES bookings(book_ref)
СÑÑлки извне:
TABLE "ticket_flights" FOREIGN KEY (ticket_no) REFERENCES tickets(ticket_no)
M.4.12. ÐÑедÑÑавление bookings.flights_v
Ðад ÑаблиÑей flights Ñоздано пÑедÑÑавление flights_v, ÑодеÑжаÑее дополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑиÑ:
ÑаÑÑиÑÑÐ¾Ð²ÐºÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð± аÑÑопоÑÑе вÑлеÑа â
departure_airport,departure_airport_name,departure_cityÑаÑÑиÑÑÐ¾Ð²ÐºÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð± аÑÑопоÑÑе пÑибÑÑÐ¸Ñ â
arrival_airport,arrival_airport_name,arrival_cityмеÑÑное вÑÐµÐ¼Ñ Ð²ÑлеÑа â
scheduled_departure_local,actual_departure_localмеÑÑное вÑÐµÐ¼Ñ Ð¿ÑибÑÑÐ¸Ñ â
scheduled_arrival_local,actual_arrival_localпÑодолжиÑелÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа â
scheduled_duration,actual_duration.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐпиÑание
---------------------------+-------------+--------------------------------------
flight_id | integer | ÐденÑиÑикаÑÐ¾Ñ ÑейÑа
flight_no | char(6) | ÐÐ¾Ð¼ÐµÑ ÑейÑа
scheduled_departure | timestamptz | ÐÑÐµÐ¼Ñ Ð²ÑлеÑа по ÑаÑпиÑаниÑ
scheduled_departure_local | timestamp | ÐÑÐµÐ¼Ñ Ð²ÑлеÑа по ÑаÑпиÑаниÑ,
| | меÑÑное вÑÐµÐ¼Ñ Ð² пÑнкÑе оÑпÑавлениÑ
scheduled_arrival | timestamptz | ÐÑÐµÐ¼Ñ Ð¿ÑилÑÑа по ÑаÑпиÑаниÑ
scheduled_arrival_local | timestamp | ÐÑÐµÐ¼Ñ Ð¿ÑилÑÑа по ÑаÑпиÑаниÑ,
| | меÑÑное вÑÐµÐ¼Ñ Ð² пÑнкÑе пÑибÑÑиÑ
scheduled_duration | interval | ÐланиÑÑÐµÐ¼Ð°Ñ Ð¿ÑодолжиÑелÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа
departure_airport | char(3) | Ðод аÑÑопоÑÑа оÑпÑавлениÑ
departure_airport_name | text | Ðазвание аÑÑопоÑÑа оÑпÑавлениÑ
departure_city | text | ÐоÑод оÑпÑавлениÑ
arrival_airport | char(3) | Ðод аÑÑопоÑÑа пÑибÑÑиÑ
arrival_airport_name | text | Ðазвание аÑÑопоÑÑа пÑибÑÑиÑ
arrival_city | text | ÐоÑод пÑибÑÑиÑ
status | varchar(20) | СÑаÑÑÑ ÑейÑа
aircraft_code | char(3) | Ðод ÑамолеÑа, IATA
actual_departure | timestamptz | ФакÑиÑеÑкое вÑÐµÐ¼Ñ Ð²ÑлеÑа
actual_departure_local | timestamp | ФакÑиÑеÑкое вÑÐµÐ¼Ñ Ð²ÑлеÑа,
| | меÑÑное вÑÐµÐ¼Ñ Ð² пÑнкÑе оÑпÑавлениÑ
actual_arrival | timestamptz | ФакÑиÑеÑкое вÑÐµÐ¼Ñ Ð¿ÑилÑÑа
actual_arrival_local | timestamp | ФакÑиÑеÑкое вÑÐµÐ¼Ñ Ð¿ÑилÑÑа,
| | меÑÑное вÑÐµÐ¼Ñ Ð² пÑнкÑе пÑибÑÑиÑ
actual_duration | interval | ФакÑиÑеÑÐºÐ°Ñ Ð¿ÑодолжиÑелÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа
M.4.13. ÐÑедÑÑавление bookings.routes
ТаблиÑа ÑейÑов (bookings.flights) ÑодеÑÐ¶Ð¸Ñ Ð¸Ð·Ð±ÑÑоÑноÑÑÑ: из Ð½ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло Ð±Ñ Ð²ÑделиÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Â Ð¼Ð°ÑÑÑÑÑе (Ð½Ð¾Ð¼ÐµÑ ÑейÑа, аÑÑопоÑÑÑ Ð¾ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ назнаÑениÑ), коÑоÑÐ°Ñ Ð½Ðµ завиÑÐ¸Ñ Ð¾Ñ конкÑеÑнÑÑ
Ð´Ð°Ñ ÑейÑов.
Ðменно ÑÐ°ÐºÐ°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ ÑоÑÑавлÑÐµÑ Ð¿ÑедÑÑавление routes.
СÑÐ¾Ð»Ð±ÐµÑ | Тип | ÐпиÑание
------------------------+-----------+-------------------------------------
flight_no | char(6) | ÐÐ¾Ð¼ÐµÑ ÑейÑа
departure_airport | char(3) | Ðод аÑÑопоÑÑа оÑпÑавлениÑ
departure_airport_name | text | Ðазвание аÑÑопоÑÑа оÑпÑавлениÑ
departure_city | text | ÐоÑод оÑпÑавлениÑ
arrival_airport | char(3) | Ðод аÑÑопоÑÑа пÑибÑÑиÑ
arrival_airport_name | text | Ðазвание аÑÑопоÑÑа пÑибÑÑиÑ
arrival_city | text | ÐоÑод пÑибÑÑиÑ
aircraft_code | char(3) | Ðод ÑамолеÑа, IATA
duration | interval | ÐÑодолжиÑелÑноÑÑÑ Ð¿Ð¾Ð»ÐµÑа
days_of_week | integer[] | Ðни недели, когда вÑполнÑÑÑÑÑ ÑейÑÑ
M.4.14. ФÑнкÑÐ¸Ñ bookings.now
ÐемонÑÑÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð±Ð°Ð·Ð° ÑодеÑÐ¶Ð¸Ñ Ð²Ñеменной «ÑÑез» даннÑÑ
â Ñак, как бÑдÑо в некоÑоÑÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð±Ñла Ñделана ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑеалÑной ÑиÑÑемÑ. ÐапÑимеÑ, еÑли некоÑоÑÑй ÑÐµÐ¹Ñ Ð¸Ð¼ÐµÐµÑ ÑÑаÑÑÑ Departed, ÑÑо ознаÑаеÑ, ÑÑо в Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÐ°Ð¼Ð¾Ð»ÐµÑ Ð²ÑлеÑел и наÑ
одилÑÑ Ð² воздÑÑ
е.
ÐозиÑÐ¸Ñ Â«ÑÑеза» ÑоÑ
Ñанена в ÑÑнкÑии bookings.now() function. Ðй можно полÑзоваÑÑÑÑ Ð² запÑоÑаÑ
Ñам, где в обÑÑной жизни иÑполÑзовалаÑÑ Ð±Ñ ÑÑнкÑÐ¸Ñ now().
ÐÑоме Ñого, знаÑение ÑÑой ÑÑнкÑии опÑеделÑÐµÑ Ð²ÐµÑÑÐ¸Ñ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑаÑионной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐкÑÑалÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð½Ð° ÑекÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ â Ð¾Ñ 15 авгÑÑÑа 2017 г.
M.4.15. ФÑнкÑÐ¸Ñ bookings.lang
ÐекоÑоÑÑе Ð¿Ð¾Ð»Ñ Ð² демонÑÑÑаÑионной базе ÑодеÑÐ¶Ð°Ñ ÑекÑÑ Ð½Ð° английÑком и ÑÑÑÑком ÑзÑкаÑ
. ÐеÑÐµÐ²Ð¾Ð´Ñ Ð½Ð° дÑÑгие ÑзÑки оÑÑÑÑÑÑвÑÑÑ, но иÑ
неÑложно добавиÑÑ. ФÑнкÑÐ¸Ñ bookings.lang возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение паÑамеÑÑа bookings.lang, Ñо еÑÑÑ ÑзÑк, на коÑоÑом бÑдÑÑ Ð²ÑдаваÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑÑиÑ
полей.
ÐÑа ÑÑнкÑÐ¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð² пÑедÑÑавлениÑÑ
aircrafts и airports и не пÑедназнаÑена Ð´Ð»Ñ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² запÑоÑаÑ
.