Flutter SQFlite多对多关系设置

问题描述

我有一个Flutter应用程序,它将需要两个表,表A和表B,现在A中的每个项目都有B中的许多项目,B中的每个项目都可以属于A的许多项目 ,所以是多对多的关系。

这是我编写的代码

static Future<Database> database() async {
    final dbPath = await sql.getDatabasesPath();
    return sql.openDatabase(path.join(dbPath,'my_db.db'),onCreate: (db,version) {
      return db.execute(
          'CREATE TABLE A(id INT PRIMARY KEY,title TEXT,description TEXT); CREATE TABLE B(id INT PRIMARY KEY,description TEXT);');
    },version: 1);
  }

进行任何将两个表相互关联的操作,因为我不知道如何在SQFLite中做到这一点。

我需要做第三张桌子吗?

任何帮助将不胜感激。

解决方法

你应该注意到的第一件事是,这与只使用 Sql 并没有什么不同

假设您有表AB,您可以按如下方式进行设置

Future _create(Database db,int version) async {
    await db.execute("""
            CREATE TABLE C (
              id INTEGER PRIMARY KEY,A_id INTEGER NOT NULL,B_id INTEGER NOT NULL,FOREIGN KEY (A_id) REFERENCES A (id) 
                ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (B_id) REFERENCES B (id) 
                ON DELETE NO ACTION ON UPDATE NO ACTION
            )""");
  }

并且您可以根据特定用例根据需要添加其他列