/
Centermant
/
web-nodejs
Обзор
Документация
Войти
/
Centermant
/
web-nodejs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/data/lab10/task1.sql
226 строк
13 KB
Centermant
feat(lab10 finaly uraaaa dodelal.radost')
08 дек 2025, 21:50
08 дек 2025, 21:50
e643b41
Код
Авторство
О чём код?
DROP TABLE IF EXISTS "cart_items"; DROP SEQUENCE IF EXISTS cart_items_id_seq; CREATE SEQUENCE cart_items_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1; CREATE TABLE "lab10"."cart_items" ( "id" integer DEFAULT nextval('cart_items_id_seq') NOT NULL, "user_id" integer NOT NULL, "product_id" integer NOT NULL, "quantity" integer DEFAULT '1' NOT NULL, "added_at" timestamp DEFAULT now(), CONSTRAINT "cart_items_pkey" PRIMARY KEY ("id") ) WITH (oids = false); CREATE UNIQUE INDEX cart_items_unique ON lab10.cart_items USING btree (user_id, product_id); DROP TABLE IF EXISTS "categories"; DROP SEQUENCE IF EXISTS categories_id_seq; CREATE SEQUENCE categories_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1; CREATE TABLE "lab10"."categories" ( "id" integer DEFAULT nextval('categories_id_seq') NOT NULL, "name" character varying(100) NOT NULL, CONSTRAINT "categories_pkey" PRIMARY KEY ("id") ) WITH (oids = false); INSERT INTO "categories" ("id", "name") VALUES (1, 'Смартфоны'), (2, 'Ноутбуки'), (3, 'Аудиотехника'), (4, 'Аксессуары'), (5, 'Комплектующие'); DROP TABLE IF EXISTS "order_items"; DROP SEQUENCE IF EXISTS order_items_id_seq; CREATE SEQUENCE order_items_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1; CREATE TABLE "lab10"."order_items" ( "id" integer DEFAULT nextval('order_items_id_seq') NOT NULL, "order_id" integer, "product_id" integer, "quantity" integer NOT NULL, "price_at_purchase" integer NOT NULL, CONSTRAINT "order_items_pkey" PRIMARY KEY ("id") ) WITH (oids = false); INSERT INTO "order_items" ("id", "order_id", "product_id", "quantity", "price_at_purchase") VALUES (1, 1, 1, 1, 12000000), (2, 2, 1, 1, 12000000), (3, 3, 1, 1, 12000000), (4, 4, 1, 1, 12000000), (5, 5, 1, 6, 12000000); DROP TABLE IF EXISTS "orders"; DROP SEQUENCE IF EXISTS orders_id_seq; CREATE SEQUENCE orders_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1; CREATE TABLE "lab10"."orders" ( "id" integer DEFAULT nextval('orders_id_seq') NOT NULL, "user_id" integer, "total_price" integer NOT NULL, "created_at" timestamp DEFAULT now(), "status" character varying(20) DEFAULT 'created', CONSTRAINT "orders_pkey" PRIMARY KEY ("id") ) WITH (oids = false); INSERT INTO "orders" ("id", "user_id", "total_price", "created_at", "status") VALUES (1, 1, 12000000, '2025-12-03 20:32:29.917757', 'created'), (2, 1, 12000000, '2025-12-03 20:34:29.077903', 'created'), (5, 1, 72000000, '2025-12-03 20:46:57.357961', 'processing'), (4, 1, 12000000, '2025-12-03 20:46:23.322099', 'shipped'), (3, 1, 12000000, '2025-12-03 20:35:19.224324', 'delivered'); DROP TABLE IF EXISTS "products"; DROP SEQUENCE IF EXISTS products_id_seq; CREATE SEQUENCE products_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1; CREATE TABLE "lab10"."products" ( "id" integer DEFAULT nextval('products_id_seq') NOT NULL, "title" character varying(255) NOT NULL, "description" text, "price" integer NOT NULL, "amount" integer DEFAULT '0' NOT NULL, "category_id" integer, "image" text, CONSTRAINT "products_pkey" PRIMARY KEY ("id") ) WITH (oids = false); INSERT INTO "products" ("id", "title", "description", "price", "amount", "category_id", "image") VALUES (15, 'Защитное стекло', 'Закаленное стекло 9H с полным покрытием экрана и олеофобным покрытием для защиты от отпечатков.', 800, 300, 4, 'https://smartstoremsk.ru/upload/iblock/7f8/7f88984206f78a423c70e7e6eb4d735d.png'), (4, 'AirPods Pro 2', 'Беспроводные наушники Apple с активным шумоподавлением, пространственным аудио и зарядным кейсом.', 24000, 50, 3, 'https://storage.yandexcloud.net/itech-media/images/products/2023/8/b4d10d3f520511eeb2ca3cecef20832b_3720bcf8529711eeb2ca3cecef20832b.png'), (5, 'Sony WH-1000XM5', 'Полноразмерные беспроводные наушники с лучшей в отрасли системой шумоподавления и 30 часами автономной работы.', 35000, 20, 3, 'https://d1ncau8tqf99kp.cloudfront.net/converted/103364_original_local_504x441_v3_converted.webp'), (6, 'Xiaomi Power Bank', 'Портативное зарядное устройство емкостью 20000 мАч с двумя USB-A и одним USB-C портом для быстрой зарядки.', 2500, 100, 4, 'https://i01.appmifile.com/webfile/globalimg/bai/mi-50w-power-bank-20000.png'), (10, 'Кабель USB-C 1m', 'Прочный нейлоновый кабель USB-C для быстрой зарядки и передачи данных.', 500, 200, 4, 'https://nsk.kdmarket.ru/upload/resize_cache/iblock/234/514_3000_0/7a28iwdeoa9axqkmkbl1ckhb9od2iubl.png'), (11, 'Зарядка GaN 65W', 'Компактное зарядное устройство на основе технологии Gallium Nitride с 3 портами для одновременной зарядки нескольких устройств.', 350, 40, 4, 'https://cmf.com.ru/uploads/product/power-65w-gan/ii/power-us_1200x.png'), (12, 'iPad Air 5', 'Планшет Apple с чипом M1, поддержкой Apple Pencil 2 и клавиатуры Magic Keyboard. 10.9-дюймовый Liquid Retina дисплей.', 60000, 12, 2, 'https://apple-sale.msk.ru/image/cache/catalog/tovary/ipad/air-5-2022/ipad-air-2022-sinyy-600x600.png'), (13, 'Apple Pencil 2', 'Активное перо для iPad с магнитной зарядкой и поддержкой наклона для художественного творчества.', 12000, 30, 4, 'https://yabloko-rnd.ru/image/cache/catalog/aksessuary/MU8F2-960x960.png'), (14, 'Чехол для iPhone', 'Защитный чехол из прозрачного поликарбоната с противоударными бортами и точными вырезами для всех портов.', 1500, 150, 4, 'https://iceapple.ru/image/catalog/!%D1%87%D0%B5%D1%85%D0%BE%D0%BB15/1231234.png'), (7, 'Logitech MX Master 3S', 'Продвинутая беспроводная мышь для профессионалов с точным скроллингом и 7 программируемыми кнопками.', 12000, 30, 4, 'https://avatars.mds.yandex.net/get-mpic/5236119/2a000001920ecd44c0338568c58a647f7f54/orig'), (1, 'iPhone 15 Pro Max', 'Флагманский смартфон Apple с процессором A17 Pro, 8 ГБ оперативной памяти и основной камерой 48 МП. Водонепроницаемый корпус, поддержка 5G, Face ID.', 140000, 3, 1, 'https://raw.githubusercontent.com/hdpngworld/HPW/main/uploads/65038654434d0-iPhone%2015%20Pro%20Natural%20titanium%20png.png'), (2, 'Samsung Galaxy S24', 'Премиальный Android-смартфон с дисплеем Dynamic AMOLED 2X, процессором Snapdragon 8 Gen 3, 12 ГБ ОЗУ и тройной камерой.', 95000, 15, 1, 'https://static.vecteezy.com/system/resources/previews/041/329/788/non_2x/samsung-galaxy-s24-ultra-titanium-blue-back-view-free-png.png'), (8, 'Keychron K2 Keyboard', 'Механическая беспроводная клавиатура с RGB-подсветкой и возможностью подключения к 3 устройствам одновременно.', 9500, 25, 4, 'https://www.keychron.com/cdn/shop/files/V4M_daf2dbc7-9637-451b-97ab-30ff0a9e0b6e.png?v=11150360547031123723'), (3, 'MacBook Air M2', 'Тонкий и легкий ноутбук Apple с процессором M2, 16 ГБ оперативной памяти и накопителем 512 ГБ. Автономность до 18 часов.', 110000, 5, 2, 'https://png.pngtree.com/png-clipart/20220620/original/pngtree-macbook-air-m2-png-image_8129245.png'), (9, 'Dell UltraSharp 27"', '27-дюймовый монитор с разрешением 4K, точной цветопередачей и портами USB-C, HDMI и DisplayPort для подключения нескольких устройств.', 45000, 8, 5, 'https://www.regard.ru/api/photo/goods/6133779.png'); DROP TABLE IF EXISTS "users"; DROP SEQUENCE IF EXISTS users_id_seq; CREATE SEQUENCE users_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1; CREATE TABLE "lab10"."users" ( "id" integer DEFAULT nextval('users_id_seq') NOT NULL, "name" character varying(255) NOT NULL, "email" character varying(255) NOT NULL, "password" text NOT NULL, "role" character varying(20) DEFAULT 'user', "created_at" timestamp DEFAULT now(), CONSTRAINT "users_pkey" PRIMARY KEY ("id") ) WITH (oids = false); CREATE UNIQUE INDEX users_email_key ON lab10.users USING btree (email); INSERT INTO "users" ("id", "name", "email", "password", "role", "created_at") VALUES (1, 'Лещенко Андрей', 'leshchenkoa@lab.web', '$2b$10$a6zC/PpIR2E/8HMcU7e8UeLaXPwMLLueIr0Knr09fxVubWymI55De', 'admin', '2025-12-02 19:43:44.121753'), (5, 'guest_1764788081351_m24pd', 'guest_1764788081351_m24pd@guest.marketplace', '$2b$10$OJQ7XLng/KHtnVO0sC3b6u5qpE/W0BN53V2OXVhoBXEIbbFCHMufe', 'guest', '2025-12-03 18:54:41.403782'); ALTER TABLE ONLY "lab10"."cart_items" ADD CONSTRAINT "cart_items_product_id_fkey" FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE NOT DEFERRABLE; ALTER TABLE ONLY "lab10"."cart_items" ADD CONSTRAINT "cart_items_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE NOT DEFERRABLE; ALTER TABLE ONLY "lab10"."order_items" ADD CONSTRAINT "order_items_order_id_fkey" FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE NOT DEFERRABLE; ALTER TABLE ONLY "lab10"."orders" ADD CONSTRAINT "orders_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id) NOT DEFERRABLE; ALTER TABLE ONLY "lab10"."products" ADD CONSTRAINT "products_category_id_fkey" FOREIGN KEY (category_id) REFERENCES categories(id) NOT DEFERRABLE; -- Физические лица CREATE TABLE lab10.people ( id SERIAL PRIMARY KEY, last_name VARCHAR(100) NOT NULL, first_name VARCHAR(100) NOT NULL, middle_name VARCHAR(100), email VARCHAR(255), phone VARCHAR(20) ); -- Должности CREATE TABLE lab10.positions ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL UNIQUE, description TEXT ); -- Кафедры CREATE TABLE lab10.departments ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, description TEXT ); -- Корпуса CREATE TABLE lab10.buildings ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL UNIQUE, address VARCHAR(255) ); -- Аудитории CREATE TABLE lab10.classrooms ( id SERIAL PRIMARY KEY, number VARCHAR(20) NOT NULL, building_id INTEGER REFERENCES lab10.buildings(id) ON DELETE CASCADE, capacity INTEGER, type VARCHAR(50) CHECK (type IN ('lecture', 'practice', 'lab', 'other')) ); -- Дисциплины CREATE TABLE lab10.subjects ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, description TEXT, department_id INTEGER REFERENCES lab10.departments(id) ON DELETE SET NULL ); -- Группы студентов CREATE TABLE lab10.groups ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE, course INTEGER CHECK (course BETWEEN 1 AND 6), department_id INTEGER REFERENCES lab10.departments(id) ON DELETE SET NULL ); -- Преподаватели CREATE TABLE lab10.teachers ( id SERIAL PRIMARY KEY, person_id INTEGER NOT NULL REFERENCES lab10.people(id) ON DELETE CASCADE, position_id INTEGER REFERENCES lab10.positions(id) ON DELETE SET NULL, department_id INTEGER REFERENCES lab10.departments(id) ON DELETE SET NULL, hire_date DATE ); -- Связь преподавателей и дисциплин CREATE TABLE lab10.teacher_subjects ( teacher_id INTEGER REFERENCES lab10.teachers(id) ON DELETE CASCADE, subject_id INTEGER REFERENCES lab10.subjects(id) ON DELETE CASCADE, PRIMARY KEY (teacher_id, subject_id) ); -- Расписание занятий CREATE TABLE lab10.schedule_items ( id SERIAL PRIMARY KEY, group_id INTEGER NOT NULL REFERENCES lab10.groups(id) ON DELETE CASCADE, subject_id INTEGER NOT NULL REFERENCES lab10.subjects(id) ON DELETE CASCADE, teacher_id INTEGER REFERENCES lab10.teachers(id) ON DELETE SET NULL, classroom_id INTEGER REFERENCES lab10.classrooms(id) ON DELETE SET NULL, day_of_week INTEGER NOT NULL CHECK (day_of_week BETWEEN 1 AND 6), week_type INTEGER CHECK (week_type IN (1, 2)), lesson_number INTEGER NOT NULL CHECK (lesson_number BETWEEN 1 AND 6), lesson_type VARCHAR(20) NOT NULL CHECK (lesson_type IN ('lecture', 'practice', 'lab')), start_time TIME, end_time TIME );