تكرار السؤال: …
الإجابة المختصرة
عندما تكون البيانات كثيرة أو مترابطة وتحتاج استعلامًا وفرزًا وتحديثًا متكررًا، مع schema وversioning واضحين.
الشرح
قاعدة البيانات تكسب عندما تصبح القراءة الانتقائية والعلاقات والـtransactions أهم من بساطة ملف واحد. صمّم الجداول والمفاتيح، حدّد migrations عند تغيير schema، واعزل API الخاصة بالقاعدة خلف repository أو data source. اختيار SQLite أو engine آخر يتبع المنصات والمتطلبات؛ لا تجعل اسم package هو القرار المعماري نفسه.
مثال بالكود
final database = await openDatabase(
join(await getDatabasesPath(), "notes.db"),
version: 1,
onCreate: (db, version) => db.execute(
"CREATE TABLE notes(id INTEGER PRIMARY KEY, body TEXT)",
),
);أخطاء شائعة
- وضع SQL وdatabase handles داخل Widgets.
- تغيير schema من غير migration أو version.
- استخدام database بينما احتياج feature مجرد setting واحدة.