blob нужен для хранения не не булинок, а бинарных данных, т.е. массива байтиков любой длины (главное не уйти за лимиты SQLite'а).
Для bool в SQLite следует использовать INTEGER(1) и хранить в нём либо 0, что интерпретируется как false, либо 1 - true.
Если у тебя кол-во фруктов ограничено и ты их хочешь сам вбить их список, то можно использовать связь many-to-many из 3-ех табличек, тогда ERD-диаграмма будет выглядеть так:
Посмотреть вложение 268225
А 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 изначально выключена поддержка внешних ключей, включить можно так:
# Разрешение использования внешних ключей
await database.execute("PRAGMA foreign_keys = ON;")
await database.commit()
Если тебе нужно чтобы все было совсем примитивно, то создай связть one-to-many:
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
);
В таком случае у тебя будет не 3 таблички, а 2.