#sql #flutter #dart #sqflite
#sql #flutter #dart #sqflite
Вопрос:
Я хочу сохранить список объектов Day в моей базе данных sqflite. Класс Day выглядит следующим образом:
class Day {
String date;
List<DoneTask> doneTasks;
double score = 0;
Day({this.doneTasks, this.date});
}
класс DoneTask:
class DoneTask {
Category category;
double score;
String description;
DoneTask({this.category, this.score, this.description});
}
Категория имеет идентификатор атрибута, и это все, что я хочу сохранить из этого.
Я не уверен, как я могу реализовать это с помощью sqflite. Я думал о добавлении атрибута String day
в класс DoneTasks для загрузки DoneTasks в первую очередь и сортировки их по дням позже. Но это не похоже на хорошее решение для меня, кто-нибудь знает, как я мог бы сделать это лучше?
Я очень новичок в использовании SQL, поэтому я ценю простые ответы/
(это то, что я использовал еще для sqflite: https://flutter.dev/docs/cookbook/persistence/sqlite )
Комментарии:
1. В хорошем дизайне базы данных действительно много. Вам было бы лучше прочитать книгу об этом, здесь действительно слишком много одного полезного объяснения.
Ответ №1:
Я бы рекомендовал использовать базу данных NoSQL, если это та архитектура данных, к которой вы стремитесь. Конечно, я не знаю объема всего вашего проекта, поэтому возможно, что база данных SQL лучше подходит по какой-то неизвестной мне причине. Но, учитывая только то, что вы представили, альтернатива NoSQL для sqflite кажется лучшим вариантом. Это позволило бы эффективно хранить записи как объекты, позволяя вам хранить объекты внутри объектов, вместо того, чтобы создавать кучу таблиц, ссылающихся друг на друга. Мне просто кажется более интуитивным делать это таким образом.
Ответ №2:
Вот как я бы его сохранил :
- Сначала создайте таблицу для сохранения вашего
Day
объекта. Внутри него вы сохраните только свойстваdate
andscore
.
Метод Database().insert
возвращает Future<int>
идентификатор вновь созданной строки, чтобы вы могли использовать его для сохранения DoneTask
и привязки их к Day
.
- Теперь вы можете сохранить каждый из ваших
List<DoneTask>
объектов в другой таблице со столбцомid_day
в качестве идентификатора.