From f82c692a2bdf0c801101024bf255b7a626a0d946 Mon Sep 17 00:00:00 2001 From: Kirill Date: Sun, 23 Nov 2025 21:41:03 +0300 Subject: [PATCH] fix(DataBase): Fix Data Base struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -- Таблица продуктов CREATE TABLE Product ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, image_path TEXT ); -- Таблица значений параметров CREATE TABLE Val ( id INTEGER PRIMARY KEY AUTOINCREMENT, val TEXT NOT NULL ); -- Таблица параметров продуктов CREATE TABLE Param ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, val TEXT NOT NULL ); -- Таблица параметров категорий CREATE TABLE CParams ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, val_id INTEGER, FOREIGN KEY (val_id) REFERENCES Val (id) ); -- Таблица категорий CREATE TABLE Category ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, prod_id INTEGER, image_path TEXT, c_params_id INTEGER, FOREIGN KEY (prod_id) REFERENCES Product (id), FOREIGN KEY (c_params_id) REFERENCES CParams (id) ); -- Таблица связи продуктов и параметров (многие-ко-многим) CREATE TABLE Product_Param ( product_id INTEGER, param_id INTEGER, PRIMARY KEY (product_id, param_id), FOREIGN KEY (product_id) REFERENCES Product (id), FOREIGN KEY (param_id) REFERENCES Param (id) ); --- db/InitializeDB.py | 69 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/db/InitializeDB.py b/db/InitializeDB.py index 6753191..352c680 100644 --- a/db/InitializeDB.py +++ b/db/InitializeDB.py @@ -1,31 +1,70 @@ import sqlite3 -import json from loguru import logger as log def init_database(): conn = sqlite3.connect('products.db') cursor = conn.cursor() - cursor.execute(''' - CREATE TABLE IF NOT EXISTS Category ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - name TEXT NOT NULL UNIQUE, - atributes TEXT NOT NULL - ) - ''') - + # Создаем таблицу Product cursor.execute(''' CREATE TABLE IF NOT EXISTS Product ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, - category INTEGER NOT NULL, - desc TEXT, - image_path TEXT, - size TEXT, - FOREIGN KEY (category) REFERENCES Category (id) + image_path TEXT ) ''') - + + # Создаем таблицу Param + cursor.execute(''' + CREATE TABLE IF NOT EXISTS Param ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + val TEXT NOT NULL + ) + ''') + + # Создаем таблицу Val + cursor.execute(''' + CREATE TABLE IF NOT EXISTS Val ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + val TEXT NOT NULL + ) + ''') + + # Создаем таблицу CParams + cursor.execute(''' + CREATE TABLE IF NOT EXISTS CParams ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + val_id INTEGER, + FOREIGN KEY (val_id) REFERENCES Val (id) + ) + ''') + + # Создаем таблицу Category + cursor.execute(''' + CREATE TABLE IF NOT EXISTS Category ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + prod_id INTEGER, + image_path TEXT, + c_params_id INTEGER, + FOREIGN KEY (prod_id) REFERENCES Product (id), + FOREIGN KEY (c_params_id) REFERENCES CParams (id) + ) + ''') + + # Создаем таблицу Product_Param (связь многие-ко-многим) + cursor.execute(''' + CREATE TABLE IF NOT EXISTS Product_Param ( + product_id INTEGER, + param_id INTEGER, + PRIMARY KEY (product_id, param_id), + FOREIGN KEY (product_id) REFERENCES Product (id), + FOREIGN KEY (param_id) REFERENCES Param (id) + ) + ''') + conn.commit() conn.close() log.info("База данных успешно инициализирована!")