/**
   * 表创建SQL定义
   * 系统所需的所有表结构
   */
  private static readonly TABLE_DEFINITIONS: Record<string, string> = {
    // 工作空间表
    workspaces: `
      CREATE TABLE IF NOT EXISTS \`workspaces\` (
        \`id\` int NOT NULL AUTO_INCREMENT COMMENT '空间ID（主键）',
        \`name\` varchar(50) NOT NULL COMMENT '空间名称',
        \`creator_id\` int NOT NULL COMMENT '创建者用户ID',
        \`status\` tinyint NOT NULL DEFAULT '1' COMMENT '状态（1=活跃，0=停用）',
        \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        \`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
        PRIMARY KEY (\`id\`),
        KEY \`idx_creator_id\` (\`creator_id\`) COMMENT '创建者ID索引，提高查询效率'
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作空间信息表'
    `,
    
    // 系统用户表
    system_users: `
      CREATE TABLE IF NOT EXISTS \`system_users\` (
        \`id\` int NOT NULL AUTO_INCREMENT COMMENT '用户ID（主键）',
        \`username\` varchar(50) NOT NULL COMMENT '登录用户名（唯一）',
        \`password\` varchar(100) NOT NULL COMMENT '加密密码',
        \`email\` varchar(100) NOT NULL COMMENT '电子邮箱（唯一）',
        \`phone\` varchar(20) NOT NULL COMMENT '手机号码（唯一）',
        \`workspace_id\` int NOT NULL COMMENT '所属工作空间ID',
        \`role_type\` varchar(30) NOT NULL DEFAULT 'user' COMMENT '角色类型',
        \`role_name\` varchar(50) NOT NULL DEFAULT '普通用户' COMMENT '角色显示名称',
        \`is_custom_role\` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否自定义角色（1=是，0=否）',
        \`status\` tinyint NOT NULL DEFAULT '1' COMMENT '状态（1=启用，0=禁用）',
        \`invited_by\` int DEFAULT NULL COMMENT '邀请人ID（NULL表示自主注册）',
        \`invitation_token\` varchar(100) DEFAULT NULL COMMENT '邀请验证令牌',
        \`last_login_at\` datetime DEFAULT NULL COMMENT '最后登录时间',
        \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        \`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
        PRIMARY KEY (\`id\`),
        UNIQUE KEY \`uk_username\` (\`username\`),
        UNIQUE KEY \`uk_email\` (\`email\`),
        UNIQUE KEY \`uk_phone\` (\`phone\`),
        KEY \`idx_workspace_id\` (\`workspace_id\`),
        KEY \`idx_invited_by\` (\`invited_by\`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表'
    `,
    
    // 用户角色表
    user_roles: `
      CREATE TABLE IF NOT EXISTS \`user_roles\` (
        \`id\` int NOT NULL AUTO_INCREMENT COMMENT '角色ID（主键）',
        \`type\` varchar(30) NOT NULL COMMENT '角色类型',
        \`name\` varchar(50) NOT NULL COMMENT '角色显示名称',
        \`is_custom\` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否自定义（1=是，0=否）',
        \`workspace_id\` int NOT NULL COMMENT '所属工作空间ID',
        \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        \`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
        PRIMARY KEY (\`id\`),
        UNIQUE KEY \`uk_type_workspace\` (\`type\`, \`workspace_id\`),
        KEY \`idx_workspace_id\` (\`workspace_id\`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色表'
    `,
    
    // 团队表
    teams: `
      CREATE TABLE IF NOT EXISTS \`teams\` (
        \`id\` int NOT NULL AUTO_INCREMENT COMMENT '团队ID（主键）',
        \`team_code\` varchar(30) NOT NULL COMMENT '团队唯一编码',
        \`name\` varchar(50) NOT NULL COMMENT '团队名称',
        \`db_host\` varchar(100) NOT NULL COMMENT '数据库主机地址',
        \`db_name\` varchar(50) NOT NULL COMMENT '数据库名称',
        \`db_username\` varchar(50) NOT NULL COMMENT '数据库用户名',
        \`db_password\` varchar(100) NOT NULL COMMENT '数据库密码',
        \`workspace_id\` int NOT NULL COMMENT '所属工作空间ID',
        \`owner_id\` int NOT NULL COMMENT '团队管理员ID',
        \`status\` tinyint NOT NULL DEFAULT '1' COMMENT '状态（1=正常，0=停用）',
        \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        \`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
        PRIMARY KEY (\`id\`),
        UNIQUE KEY \`uk_team_code\` (\`team_code\`),
        KEY \`idx_workspace_id\` (\`workspace_id\`),
        KEY \`idx_owner_id\` (\`owner_id\`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='团队信息表'
    `,
    
    // 用户-团队关系表
    user_team_relations: `
      CREATE TABLE IF NOT EXISTS \`user_team_relations\` (
        \`id\` int NOT NULL AUTO_INCREMENT COMMENT '关系ID（主键）',
        \`user_id\` int NOT NULL COMMENT '用户ID',
        \`team_id\` int NOT NULL COMMENT '团队ID',
        \`role\` varchar(20) NOT NULL DEFAULT 'member' COMMENT '角色（owner=拥有者，admin=管理员，member=成员）',
        \`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        \`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
        PRIMARY KEY (\`id\`),
        UNIQUE KEY \`uk_user_team\` (\`user_id\`,\`team_id\`) COMMENT '确保用户在一个团队中只有一个角色',
        KEY \`idx_team_id\` (\`team_id\`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户团队关系表'
    `
  };

  /**
   * 外键定义
   * 定义表之间的关系
   */
  private static readonly FOREIGN_KEY_DEFINITIONS: string[] = [
    // 系统用户表的外键
    `ALTER TABLE \`system_users\` 
     ADD CONSTRAINT \`fk_user_workspace\` FOREIGN KEY (\`workspace_id\`) REFERENCES \`workspaces\` (\`id\`),
     ADD CONSTRAINT \`fk_user_inviter\` FOREIGN KEY (\`invited_by\`) REFERENCES \`system_users\` (\`id\`)`,
    
    // 用户角色表的外键
    `ALTER TABLE \`user_roles\` 
     ADD CONSTRAINT \`fk_role_workspace\` FOREIGN KEY (\`workspace_id\`) REFERENCES \`workspaces\` (\`id\`)`,
     
    // 团队表的外键
    `ALTER TABLE \`teams\` 
     ADD CONSTRAINT \`fk_team_workspace\` FOREIGN KEY (\`workspace_id\`) REFERENCES \`workspaces\` (\`id\`),
     ADD CONSTRAINT \`fk_team_owner\` FOREIGN KEY (\`owner_id\`) REFERENCES \`system_users\` (\`id\`)`,
    
    // 用户-团队关系表的外键
    `ALTER TABLE \`user_team_relations\` 
     ADD CONSTRAINT \`fk_relation_user\` FOREIGN KEY (\`user_id\`) REFERENCES \`system_users\` (\`id\`),
     ADD CONSTRAINT \`fk_relation_team\` FOREIGN KEY (\`team_id\`) REFERENCES \`teams\` (\`id\`)`
  ];


