dmdev2020 / jdbc-starter

11 stars 11 forks source link

flight_repository SQL #1

Open hazartilirot opened 1 year ago

hazartilirot commented 1 year ago

Простите, а где, собственно, запросы для создания таблиц? Смотрю курс по сервлетам, появляется какая-то база данных, которую Вы использовали в JDBC, начинаю смотреть курс по JDBC, обещают предоставить SQL файл, отказывается нужно смотреть третий курс. Это издевательство?

Нельзя было сделать все курсы независимо друг от друга? Вложить .yml compose файл для докера, там не нужно дополительно заморачиваться, одной командой поднять postgres и предоставить файл во все три курса для создания базы данных и таблиц.

dmdev2020 commented 1 year ago

А на какой платформе смотришь курсы?

hazartilirot commented 1 year ago

Дело не в платформе, а в отношении.

Всё хорошо, отлично объясняешь,

но плин, зачем устанавливать такую завимость?

Купил курс по сервлетам, теперь, купи курс по JDBC, купил курс по JDBC, оказывается - хрен там! Купи курс по Postgres. Если не хочешь заморачиваться с дополнительными объяснениями, docker-compose.yml в помощь. Можно даже кастомный образ подтянуть со развёртуной базой данных. Ничего не нужно объяснять, одна команда - вуалля!

CREATE DATABASE flight_repository;

CREATE TABLE airport ( code CHAR(3) PRIMARY KEY , country VARCHAR(256) NOT NULL , city VARCHAR(128) NOT NULL );

CREATE TABLE aircraft ( id SERIAL PRIMARY KEY , model VARCHAR(128) NOT NULL );

CREATE TABLE seat ( aircraft_id INT REFERENCES aircraft (id), seat_no VARCHAR(4) NOT NULL , PRIMARY KEY (aircraft_id, seat_no) );

CREATE TABLE flight ( id BIGSERIAL PRIMARY KEY , flight_no VARCHAR(16) NOT NULL , departure_date TIMESTAMP NOT NULL , departure_airport_code CHAR(3) REFERENCES airport(code) NOT NULL , arrival_date TIMESTAMP NOT NULL , arrival_airport_code CHAR(3) REFERENCES airport(code) NOT NULL , aircraft_id INT REFERENCES aircraft (id) NOT NULL , status VARCHAR(32) NOT NULL );

CREATE TABLE ticket ( id BIGSERIAL PRIMARY KEY , passenger_no VARCHAR(32) NOT NULL , passenger_name VARCHAR(128) NOT NULL , flight_id BIGINT REFERENCES flight (id) NOT NULL , seat_no VARCHAR(4) NOT NULL, cost NUMERIC(8, 2) NOT NULL -- UNIQUE (flight_id, seat_no) );

CREATE UNIQUE INDEX unique_flight_id_seat_no_idx ON ticket (flight_id, seat_no); -- flight_id + seat_no

insert into airport (code, country, city) values ('MNK', 'Беларусь', 'Минск'), ('LDN', 'Англия', 'Лондон'), ('MSK', 'Россия', 'Москва'), ('BSL', 'Испания', 'Барселона');

insert into aircraft (model) values ('Боинг 777-300'), ('Боинг 737-300'), ('Аэробус A320-200'), ('Суперджет-100');

insert into seat (aircraft_id, seat_no) select id, s.column1 from aircraft cross join (values ('A1'), ('A2'), ('B1'), ('B2'), ('C1'), ('C2'), ('D1'), ('D2') order by 1) s;

insert into flight (flight_no, departure_date, departure_airport_code, arrival_date, arrival_airport_code, aircraft_id, status) values ('MN3002', '2020-06-14T14:30', 'MNK', '2020-06-14T18:07', 'LDN', 1, 'ARRIVED'), ('MN3002', '2020-06-16T09:15', 'LDN', '2020-06-16T13:00', 'MNK', 1, 'ARRIVED'), ('BC2801', '2020-07-28T23:25', 'MNK', '2020-07-29T02:43', 'LDN', 2, 'ARRIVED'), ('BC2801', '2020-08-01T11:00', 'LDN', '2020-08-01T14:15', 'MNK', 2, 'DEPARTED'), ('TR3103', '2020-05-03T13:10', 'MSK', '2020-05-03T18:38', 'BSL', 3, 'ARRIVED'), ('TR3103', '2020-05-10T07:15', 'BSL', '2020-05-10T012:44', 'MSK', 3, 'CANCELLED'), ('CV9827', '2020-09-09T18:00', 'MNK', '2020-09-09T19:15', 'MSK', 4, 'SCHEDULED'), ('CV9827', '2020-09-19T08:55', 'MSK', '2020-09-19T10:05', 'MNK', 4, 'SCHEDULED'), ('QS8712', '2020-12-18T03:35', 'MNK', '2020-12-18T06:46', 'LDN', 2, 'ARRIVED');

insert into ticket (passenger_no, passenger_name, flight_id, seat_no, cost) values ('112233', 'Иван Иванов', 1, 'A1', 200), ('23234A', 'Петр Петров', 1, 'B1', 180), ('SS988D', 'Светлана Светикова', 1, 'B2', 175), ('QYASDE', 'Андрей Андреев', 1, 'C2', 175), ('POQ234', 'Иван Кожемякин', 1, 'D1', 160), ('898123', 'Олег Рубцов', 1, 'A2', 198), ('555321', 'Екатерина Петренко', 2, 'A1', 250), ('QO23OO', 'Иван Розмаринов', 2, 'B2', 225), ('9883IO', 'Иван Кожемякин', 2, 'C1', 217), ('123UI2', 'Андрей Буйнов', 2, 'C2', 227), ('SS988D', 'Светлана Светикова', 2, 'D2', 277), ('EE2344', 'Дмитрий Трусцов', 3, 'А1', 300), ('AS23PP', 'Максим Комсомольцев', 3, 'А2', 285), ('322349', 'Эдуард Щеглов', 3, 'B1', 99), ('DL123S', 'Игорь Беркутов', 3, 'B2', 199), ('MVM111', 'Алексей Щербин', 3, 'C1', 299), ('ZZZ111', 'Денис Колобков', 3, 'C2', 230), ('234444', 'Иван Старовойтов', 3, 'D1', 180), ('LLLL12', 'Людмила Старовойтова', 3, 'D2', 224), ('RT34TR', 'Степан Дор', 4, 'A1', 129), ('999666', 'Анастасия Шепелева', 4, 'A2', 152), ('234444', 'Иван Старовойтов', 4, 'B1', 140), ('LLLL12', 'Людмила Старовойтова', 4, 'B2', 140), ('LLLL12', 'Роман Дронов', 4, 'D2', 109), ('112233', 'Иван Иванов', 5, 'С2', 170), ('NMNBV2', 'Лариса Тельникова', 5, 'С1', 185), ('DSA586', 'Лариса Привольная', 5, 'A1', 204), ('DSA583', 'Артур Мирный', 5, 'B1', 189), ('DSA581', 'Евгений Кудрявцев', 6, 'A1', 204), ('EE2344', 'Дмитрий Трусцов', 6, 'A2', 214), ('AS23PP', 'Максим Комсомольцев', 6, 'B2', 176), ('112233', 'Иван Иванов', 6, 'B1', 135), ('309623', 'Татьяна Крот', 6, 'С1', 155), ('319623', 'Юрий Дувинков', 6, 'D1', 125), ('322349', 'Эдуард Щеглов', 7, 'A1', 69), ('DIOPSL', 'Евгений Безфамильная', 7, 'A2', 58), ('DIOPS1', 'Константин Швец', 7, 'D1', 65), ('DIOPS2', 'Юлия Швец', 7, 'D2', 65), ('1IOPS2', 'Ник Говриленко', 7, 'C2', 73), ('999666', 'Анастасия Шепелева', 7, 'B1', 66), ('23234A', 'Петр Петров', 7, 'C1', 80), ('QYASDE', 'Андрей Андреев', 8, 'A1', 100), ('1QAZD2', 'Лариса Потемнкина', 8, 'A2', 89), ('5QAZD2', 'Карл Хмелев', 8, 'B2', 79), ('2QAZD2', 'Жанна Хмелева', 8, 'С2', 77), ('BMXND1', 'Светлана Хмурая', 8, 'В2', 94), ('BMXND2', 'Кирилл Сарычев', 8, 'D1', 81), ('SS988D', 'Светлана Светикова', 9, 'A2', 222), ('SS978D', 'Андрей Желудь', 9, 'A1', 198), ('SS968D', 'Дмитрий Воснецов', 9, 'B1', 243), ('SS958D', 'Максим Гребцов', 9, 'С1', 251), ('112233', 'Иван Иванов', 9, 'С2', 135), ('NMNBV2', 'Лариса Тельникова', 9, 'B2', 217), ('23234A', 'Петр Петров', 9, 'D1', 189), ('123951', 'Полина Зверева', 9, 'D2', 234);

Нашёл какую-то базу данных у тебя на Google Drive, ещё не понятно, подойдёт ли она к сервлетам.

dmdev2020 commented 1 year ago

Дело в платформах, потому что там я выкладываю все ссылки на доп материалы по мере надобности их.

И причем тут docker до этих курсов?) Человек, который впервые видит базы данных и изучает SQL - понятия не имеет о docker, и уж тем более о docker-compose.

hazartilirot commented 1 year ago

Вот, как бы, вообще не хочется вступать в спор.

Docker помогает очень быстро разворачивать любое приложение, с минимальными знаниями и напрягами. Ну, например, ты же можешь в свой проект положить

\db\init.sql

в него вложить, что-то типа:

BEGIN TRANSACTION;

drop table if exists XXXXXXX;

create table XXXXXXX ();

drop table if exists YYYYYYY;

create table YYYYYYY ();

COMMIT;

чтобы убить предыдущую базу данных, если она существует.

Далее, в docker-compose.yml

version: '3.9'

services:
  db:
    image: 'postgres:14-alpine'
    volumes:
      - './db:/docker-entrypoint-initdb.d/:rw'
      - './db:/var/lib/db:rw'
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'root'
      POSTGRES_DB: 'flight_repository'
      POSTGRES_HOST: 'db'
    ports: 
      - '5432:5432'

И что мы имеем? Docker устанавливается в два клика. Запуск происходит также просто как ты переходишь в коммандной строке из директории в директорию, просто, комманда: docker-compose -f docker-compose.yml up

всё! Что мы имеем? Docker автоматически устанавливает Postgres нужной версии, копирует из Project папки схему базы данных и инициализирует эту схему автоматически.... нам остаётся только подключиться к БД из IntelliJ IDEA - всё)

Ну, а если начинать спорить, тогда можно начать изучение с коммандной строки, потом IntelliJ IDEA и пр.

dmdev2020 commented 1 year ago

Во-первых, мне объяснять не надо что такое docker и как им пользоваться) Во-вторых, объективно знаний нужно гораздо больше, чем простая установка СУБД. В-третьих, я в своих курсах ничего не демонстрирую того, что не объяснял до этого. А в случае чего - предоставляю альтернативы. В-четвертых, ты так и не сказал, на какой платформе смотришь и где тебе пришлось купить столько моих курсов из-за того, что я не предоставил sql скрипт здесь на github)

hazartilirot commented 1 year ago

Дёня, ты чего такой чудной? Тебе никто не объяснял, тебе показывали, что ожидалось, как проще, как экономить время своих зрителей.

Ты изначально продаёшь свои курсы по-отдельности, то есть, они не должны иметь прямую зависимость. Получается, у тебя постоянные какие-то отсылки на предыдущие свои курсы + использование одинакового проекта, который ВНИМАНИЕ создаётся на курсе с Postgres, в свою очередь, ты рекомендуешь кего проходить сразу же после основ Джавы. Так, вот, а что делать тем, кто знает основы Джавы и уже работал с Postgres изучая его с другими языками, например, Javascript. Я, конечно, хочу освежить свои знания, но, плин, не тогда, когда я смотрю курс про Сервлеты.

Да, именно поэтому нужно было продавать тогда банчем свой курс, от новичка до Нинджя, а не по-отдельности.

Прости, я должен в своём сообщении показать чек-оплату? Оставайся профессионалом, а не каким-то торгашом. 😉

dmdev2020 commented 1 year ago

Так, мы с тобой не знакомы, так что я бы не стал фамильярничать.

Далее, повторю еще раз: я прошу тебя назвать платформу, где ты смотришь мои курсы, чтобы исправить проблему с нехваткой ссылки на исходный код. Или как в твоем случае - на sql скрипт, ибо я стараюсь сделать так, чтобы было всегда удобно находить все необходимое по мере прохождения моих курсов. Если ты не нашел там - значит мой косяк и я это исправлю.

В чем сложность сказать не могу понять? Юлишь и не экономишь ни свое, ни мое время.

hazartilirot commented 1 year ago

Опять не пойму... я обратился на "Вы", мне начали "ты-кать", далее, меня обвиняют в фамилиьярничестве) Тема себя исчерпала - я разобрался ещё три дня назад, нашёл у тебя на Google Drive решение.) Уже посмотрел JDBC курс и решил пробежаться по азам, второго выпуска перед тем как продолжить смотреть сервлеты.

Совсем неплохо!

Раздражает, слегка, твой словарный запас и, примеры, которые можно было подготовить заранее. В некоторых моментах хотелось бы, чтобы ты был более кратким. А так, достаточно хорошо сделан курс, смотрю на х1.5 скорости. Затрагиваешь Big O. Мне нравится.) Смотри, какой ты молодец. 😄 Я бы хотел, чтобы у меня в своё время был такой же ментор. Увы.

Здоровья тебе! 😊