Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
у меня значит пользователи должны писать какие фрукты они хотят отслеживать, и вот как мне сделать.
кучу булинов с каждым доступным фруктом или один текст куда буду добавлять фрукты
UPD блять сформулировал вопрос и почувстовал себя кончелыгой
ой я когда прочитал описание блоба там было написано что это двоичный объект и я это интерпретировал как то что он хранит только один бит и это здешний boolean
сори ща перепишу пост
ой я когда прочитал описание блоба там было написано что это двоичный объект и я это интерпретировал как то что он хранит только один бит и это здешний boolean
сори ща перепишу пост
blob нужен для хранения не не булинок, а бинарных данных, т.е. массива байтиков любой длины (главное не уйти за лимиты SQLite'а).
Для bool в SQLite следует использовать INTEGER(1) и хранить в нём либо 0, что интерпретируется как false, либо 1 - true.
Если у тебя кол-во фруктов ограничено и ты их хочешь сам вбить их список, то можно использовать связь many-to-many из 3-ех табличек, тогда ERD-диаграмма будет выглядеть так:
А SQL-скрипт для создания табличек так:
SQL:
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS Fruits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS UsersFruits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES Users(id) ON DELETE CASCADE,
fruit_id INTEGER NOT NULL REFERENCES Fruits(id) ON DELETE CASCADE
);
P.S. в SQLite изначально выключена поддержка внешних ключей, включить можно так:
Python:
# Разрешение использования внешних ключей
await database.execute("PRAGMA foreign_keys = ON;")
await database.commit()
Если тебе нужно чтобы все было совсем примитивно, то создай связть one-to-many:
SQL:
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS UsersFruits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
fruit_name VARCHAR(512),
user_id INTEGER NOT NULL REFERENCES Users(id) ON DELETE CASCADE
);
blob нужен для хранения не не булинок, а бинарных данных, т.е. массива байтиков любой длины (главное не уйти за лимиты SQLite'а).
Для bool в SQLite следует использовать INTEGER(1) и хранить в нём либо 0, что интерпретируется как false, либо 1 - true.
Если у тебя кол-во фруктов ограничено и ты их хочешь сам вбить их список, то можно использовать связь many-to-many из 3-ех табличек, тогда ERD-диаграмма будет выглядеть так: Посмотреть вложение 268225
А SQL-скрипт для создания табличек так:
SQL:
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS Fruits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS UsersFruits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES Users(id) ON DELETE CASCADE,
fruit_id INTEGER NOT NULL REFERENCES Fruits(id) ON DELETE CASCADE
);
P.S. в SQLite изначально выключена поддержка внешних ключей, включить можно так:
Python:
# Разрешение использования внешних ключей
await database.execute("PRAGMA foreign_keys = ON;")
await database.commit()
Если тебе нужно чтобы все было совсем примитивно, то создай связть one-to-many:
SQL:
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(512)
);
CREATE TABLE IF NOT EXISTS UsersFruits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
fruit_name VARCHAR(512),
user_id INTEGER NOT NULL REFERENCES Users(id) ON DELETE CASCADE
);
оке ты уже третий кто мне советует так что попробую, но вообще я это изначально представлял как
id INTEGER PRIMARY KEY
flame INTEGER(1)
falcon INTEGER(1)
и так еще где то 30 раз. чем плох метод
Такова идеология реляционных баз данных - хранить всё в виде отдельных, но связанных между собой табличек.
В случае если тебе нужно будет дропнуть одну из табличек - другие останутся, если у неё конечно нет внешних ключей, в моём примере при удалении пользователя его фрукты тоже будут удалены.
Ну и масштабировать базу тебе будеть чуть-чуть удобнее.