waterrmsi 1 týždeň pred
rodič
commit
e41d3c182d
1 zmenil súbory, kde vykonal 75 pridanie a 0 odobranie
  1. 75 0
      database.sql

+ 75 - 0
database.sql

@@ -0,0 +1,75 @@
+create table Driver (
+	driver_id serial primary key,
+	name varchar(64) not null,
+	surname varchar(64) not null,
+	patronimic varchar(64) not null
+);
+
+create table Transport (
+	transport_id serial primary key,
+	branch varchar(64) not null,
+	model varchar(64) not null,
+	license_plate_number varchar(64) not null,
+	driver_id int
+);
+
+create table Transport_Flight (
+	flight_id serial primary key,
+	duration time,
+	transport_id int,
+	route_id int
+);
+
+create table Route (
+	route_id serial primary key,
+	route_name text not null
+);
+
+create table Route_Point (
+	route_point_id serial primary key,
+	route_id int,
+	point_id int,
+	order_of_the_route int not null
+);
+
+create table Point (
+	point_id serial primary key,
+	point_name text not null
+);
+
+create table Users(
+	user_id serial primary key,
+	login varchar(24) not null unique,
+	password text not n
+	role_id int
+)
+
+alter table Transport add foreign key (driver_id) references Driver(driver_id);
+
+alter table Transport_Flight add foreign key (transport_id) references Transport(transport_id);
+alter table Transport_Flight add foreign key (route_id) references Route(route_id);
+
+alter table Route_Point add foreign key (route_id) references Route(route_id);
+alter table Route_Point add foreign key (point_id) references Point(point_id);
+
+--триггер на валидацию ввода длительности поездки
+create or replace function check_flight_duration()
+returns trigger as $$
+begin
+    if new.duration <= time '00:00:00' then
+        raise exception 'Длительность рейса должна быть больше 00:00:00';
+    end if;
+
+    return new;
+end;
+$$ language plpgsql;
+
+create trigger trg_check_flight_duration
+before insert or update
+on transport_flight
+for each row
+execute function check_flight_duration();
+
+select * from transport
+update transport set driver_id = null where transport_id = 1
+select * from driver