fix(DataBase): Fix Data Base struct

-- Таблица продуктов
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)
);
This commit is contained in:
Black_Raven committed 2025-11-23 21:41:03 +03:00
1 parent 1313d4a17b
commit f82c692a2b
1 file changed
+52 -13
+52 -13
View File
@@ -1,28 +1,67 @@
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
)
''')
# Создаем таблицу 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,
size TEXT,
FOREIGN KEY (category) REFERENCES Category (id)
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)
)
''')