From 33a666eadbe6fd16479d0b6dcf5ecd25a804545f Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Sat, 30 Mar 2024 17:33:32 +0300 Subject: [PATCH] switch device --- task 1.sql => BD_4s/task 1.sql | 0 task3.sql => BD_4s/task3.sql | 0 BD_4s/task_from_lection.sql | 25 ++++ Lab`s/insert.sql | 19 +++ Lab`s/lab`s_code.sql | 209 +++++++++++++++++++++++++++++++++ 5 files changed, 253 insertions(+) rename task 1.sql => BD_4s/task 1.sql (100%) rename task3.sql => BD_4s/task3.sql (100%) create mode 100644 BD_4s/task_from_lection.sql create mode 100644 Lab`s/insert.sql create mode 100644 Lab`s/lab`s_code.sql diff --git a/task 1.sql b/BD_4s/task 1.sql similarity index 100% rename from task 1.sql rename to BD_4s/task 1.sql diff --git a/task3.sql b/BD_4s/task3.sql similarity index 100% rename from task3.sql rename to BD_4s/task3.sql diff --git a/BD_4s/task_from_lection.sql b/BD_4s/task_from_lection.sql new file mode 100644 index 0000000..59e3c80 --- /dev/null +++ b/BD_4s/task_from_lection.sql @@ -0,0 +1,25 @@ + +INSERT INTO A VALUES +(1,2), +(2,3); + +INSERT INTO B VALUES +(1,1), +(2,3); + +INSERT INTO C VALUES +(1,2,1,1), +(1,2,2,2), +(2,3,1,1), +(1,2,4,5); + + +SELECT a.F1, a.F2 FROM a,b,c +WHERE a.F1 = c.F1 AND a.F2 = c.F2 AND b.F3 = c.F3 AND b.F4 = c.F4 +GROUP BY a.F1, a.F2 HAVING COUNT (a.F1) = (SELECT COUNT(F3) FROM b); + +SELECT F1, F2 FROM C + WHERE F3 IN (SELECT F3 FROM B) AND F4 IN (SELECT F4 FROM B) + GROUP BY F1, F2 HAVING COUNT(*) = ( + SELECT COUNT(*) FROM b + ); \ No newline at end of file diff --git a/Lab`s/insert.sql b/Lab`s/insert.sql new file mode 100644 index 0000000..25423de --- /dev/null +++ b/Lab`s/insert.sql @@ -0,0 +1,19 @@ +-- Воспользуемся транзакцией + +BEGIN; + +INSERT INTO Cathegory(cath_name, root_id) VALUES +('Breakfast', NULL), +('Lunch', NULL), +('Dinner', NULL), +(), +(), +(); + +INSERT INTO Dish VALUES +(), +(), +(), +(), +(), +(); \ No newline at end of file diff --git a/Lab`s/lab`s_code.sql b/Lab`s/lab`s_code.sql new file mode 100644 index 0000000..ee87ec3 --- /dev/null +++ b/Lab`s/lab`s_code.sql @@ -0,0 +1,209 @@ +-- This script was generated by the ERD tool in pgAdmin 4. +-- Please log an issue at https://redmine.postgresql.org/projects/pgadmin4/issues/new if you find any bugs, including reproduction steps. +BEGIN; + +DROP TABLE IF EXISTS public."Tech_Dish"; +DROP TABLE IF EXISTS public."Source"; +DROP TABLE IF EXISTS public."Link"; +DROP TABLE IF EXISTS public."Dish"; +DROP TABLE IF EXISTS public."Cathegory"; + +DROP TABLE IF EXISTS public."Tech"; + +DROP TABLE IF EXISTS public."Conversion"; +DROP TABLE IF EXISTS public."Alternative Name"; +DROP TABLE IF EXISTS public."Ingredients"; +DROP TABLE IF EXISTS public."Methods"; + + +CREATE TABLE IF NOT EXISTS public."Cathegory" +( + cath_id serial, + cath_name character varying(20) NOT NULL, + root_id integer, + PRIMARY KEY (cath_id), + CONSTRAINT "Name" UNIQUE (cath_name) +); + + + +CREATE TABLE IF NOT EXISTS public."Dish" +( + dish_id serial, + cath_id integer NOT NULL, + name character varying(20) NOT NULL, + cook_time interval NOT NULL, + manual text NOT NULL, + PRIMARY KEY (dish_id), + CONSTRAINT "Name Dish" UNIQUE (name) +); + + + +CREATE TABLE IF NOT EXISTS public."Link" +( + dish_id integer, + ingr_id integer, + method_id integer NOT NULL, + amount numeric(10) NOT NULL, + PRIMARY KEY (dish_id, ingr_id) +); + + + +CREATE TABLE IF NOT EXISTS public."Ingredients" +( + ingr_id serial, + ingr_name character varying(20) NOT NULL, + ingr_descr text NOT NULL, + PRIMARY KEY (ingr_id), + CONSTRAINT "Inrg Name" UNIQUE (ingr_name) +); + + + +CREATE TABLE IF NOT EXISTS public."Conversion" +( + ingr_id integer, + method1_id integer, + method2_id integer, + transit numeric NOT NULL, + PRIMARY KEY (ingr_id, method1_id, method2_id) +); + + + +CREATE TABLE IF NOT EXISTS public."Methods" +( + method_id serial, + method_name character varying(20) NOT NULL, + standart boolean NOT NULL, + PRIMARY KEY (method_id), + UNIQUE (method_name) +); + + + +CREATE TABLE IF NOT EXISTS public."Source" +( + dish_id integer, + picture serial NOT NULL, + PRIMARY KEY (dish_id) +); + + +CREATE TABLE IF NOT EXISTS public."Tech" +( + tech_id serial, + tech_name character varying(20) NOT NULL, + PRIMARY KEY (tech_id), + CONSTRAINT "Name Tech" UNIQUE (tech_name) +); + + + +CREATE TABLE IF NOT EXISTS public."Tech_Dish" +( + "Tech_tech_id" integer, + "Dish_dish_id" integer, + PRIMARY KEY ("Tech_tech_id", "Dish_dish_id") +); + + + +CREATE TABLE IF NOT EXISTS public."Alternative Name" +( + ingr_id integer, + alt_name character varying(20) NOT NULL, + PRIMARY KEY (ingr_id), + CONSTRAINT "Alt Name" UNIQUE (alt_name) +); + +ALTER TABLE IF EXISTS public."Cathegory" + ADD FOREIGN KEY (root_id) + REFERENCES public."Cathegory" (cath_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Dish" + ADD FOREIGN KEY (cath_id) + REFERENCES public."Cathegory" (cath_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Link" + ADD FOREIGN KEY (ingr_id) + REFERENCES public."Ingredients" (ingr_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Link" + ADD FOREIGN KEY (dish_id) + REFERENCES public."Dish" (dish_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Conversion" + ADD FOREIGN KEY (method1_id) + REFERENCES public."Methods" (method_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Conversion" + ADD FOREIGN KEY (ingr_id) + REFERENCES public."Ingredients" (ingr_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Conversion" + ADD FOREIGN KEY (method2_id) + REFERENCES public."Methods" (method_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Source" + ADD FOREIGN KEY (dish_id) + REFERENCES public."Dish" (dish_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Tech_Dish" + ADD FOREIGN KEY ("Tech_tech_id") + REFERENCES public."Tech" (tech_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Tech_Dish" + ADD FOREIGN KEY ("Dish_dish_id") + REFERENCES public."Dish" (dish_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + + +ALTER TABLE IF EXISTS public."Alternative Name" + ADD FOREIGN KEY (ingr_id) + REFERENCES public."Ingredients" (ingr_id) MATCH SIMPLE + ON UPDATE NO ACTION + ON DELETE NO ACTION + NOT VALID; + +END;