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



DROP TABLE IF EXISTS "ПОСТАВКА" CASCADE;
DROP TABLE IF EXISTS "ЗАКАЗ" CASCADE;
DROP TABLE IF EXISTS "КУЛИНАРНОЕ_ИЗДЕЛИЕ" CASCADE;
DROP TABLE IF EXISTS "СОТРУДНИК" CASCADE;
DROP TABLE IF EXISTS "КЛИЕНТ" CASCADE;
DROP TABLE IF EXISTS "ПРОДУКТ" CASCADE;
DROP TABLE IF EXISTS "ПОСТАВЩИК" CASCADE;
drop table if exists "СОСТАВ_ИЗДЕЛИЯ" cascade;

CREATE TABLE "ПОСТАВЩИК" (
    "id_поставщика" INT generated by default AS IDENTITY PRIMARY KEY,
    "наименование" VARCHAR(100) NOT NULL,
    "ИНН" VARCHAR(12) NOT NULL UNIQUE,
    "телефон" VARCHAR(15) UNIQUE
);

CREATE TABLE "ПРОДУКТ" (
    "id_продукта" INT generated by default AS IDENTITY PRIMARY KEY,
    "наименование" VARCHAR(100) NOT NULL,
    "единица_измерения" VARCHAR(20) NOT NULL
);

CREATE TABLE "КЛИЕНТ" (
    "id_клиента" INT generated by default AS IDENTITY PRIMARY KEY,
    "ФИО" VARCHAR(100) NOT NULL,
    "телефон" VARCHAR(15) UNIQUE
);


CREATE TABLE "СОТРУДНИК" (
    "id_сотрудника" INT generated by default AS IDENTITY PRIMARY KEY,
    "ФИО" VARCHAR(100) NOT NULL,
    "телефон" VARCHAR(15) UNIQUE,
    "должность" VARCHAR(100) NOT NULL
);



CREATE TABLE "КУЛИНАРНОЕ_ИЗДЕЛИЕ" (
    "id_изделия" INT generated by default AS IDENTITY PRIMARY KEY,
    "наименование" VARCHAR(100) NOT NULL,
    "цена" DECIMAL(10,2) NOT NULL CHECK ("цена" >= 0),
    "id_сотрудника" INT NOT NULL,
    CONSTRAINT "fk_изделие_сотрудник"
        FOREIGN KEY ("id_сотрудника")
        REFERENCES "СОТРУДНИК" ("id_сотрудника")
        ON DELETE RESTRICT ON UPDATE CASCADE
);

create table "СОСТАВ_ИЗДЕЛИЯ"(
"id_состава" INT generated by default AS IDENTITY PRIMARY key,
"id_продукта" int not null,
"количество" decimal(10, 2) not null CHECK ("количество" > 0),
"id_изделия" int not null,
 constraint "fk_состав_продукт"
 foreign key ("id_продукта")
 references "ПРОДУКТ"("id_продукта")
  ON DELETE RESTRICT ON UPDATE cascade,
  constraint "fk_состав_изделие"
  foreign key ("id_изделия")
  references "КУЛИНАРНОЕ_ИЗДЕЛИЕ"("id_изделия")
    ON DELETE RESTRICT ON UPDATE cascade
);

CREATE TABLE "ЗАКАЗ" (
    "id_заказа" INT generated by default AS IDENTITY PRIMARY KEY,
    "количество" INT NOT NULL CHECK ("количество" > 0),
    "цена" DECIMAL(10,2) NOT NULL CHECK ("цена" >= 0),
    "сумма" DECIMAL(10,2) NOT NULL CHECK ("сумма" >= 0),
    "id_клиента" INT NOT NULL,
    "id_изделия" INT NOT NULL,
    CONSTRAINT "fk_заказ_клиент"
        FOREIGN KEY ("id_клиента")
        REFERENCES "КЛИЕНТ" ("id_клиента")
        ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT "fk_заказ_изделие"
        FOREIGN KEY ("id_изделия")
        REFERENCES "КУЛИНАРНОЕ_ИЗДЕЛИЕ" ("id_изделия")
        ON DELETE RESTRICT ON UPDATE CASCADE
);

CREATE TABLE "ПОСТАВКА" (
    "id_поставки" INT generated by default AS IDENTITY PRIMARY KEY,


    "id_поставщика" INT NOT NULL,
    "id_продукта" INT NOT NULL,
    "дата_поставки" DATE NOT NULL DEFAULT CURRENT_DATE,
    "количество" INT NOT NULL CHECK ("количество" > 0),
    CONSTRAINT "fk_поставка_поставщик"
        FOREIGN KEY ("id_поставщика")
        REFERENCES "ПОСТАВЩИК" ("id_поставщика")
        ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT "fk_поставка_продукт" 
    FOREIGN KEY ("id_продукта")
        REFERENCES "ПРОДУКТ" ("id_продукта")
        ON DELETE RESTRICT ON UPDATE CASCADE
);