name: complex_test_db description: Complex test database with relationships and indexes database_type: pgsql schemas: - name: public tables: - name: users schema: public description: User accounts table columns: id: name: id table: users schema: public type: bigint not_null: true auto_increment: true is_primary_key: true sequence: 1 email: name: email table: users schema: public type: varchar length: 255 not_null: true comment: User email address sequence: 2 username: name: username table: users schema: public type: varchar length: 100 not_null: true sequence: 3 name: name: name table: users schema: public type: varchar length: 100 not_null: false sequence: 4 bio: name: bio table: users schema: public type: text not_null: false sequence: 5 avatar_url: name: avatar_url table: users schema: public type: varchar length: 500 not_null: false sequence: 6 is_active: name: is_active table: users schema: public type: boolean not_null: true default: true sequence: 7 created_at: name: created_at table: users schema: public type: timestamp not_null: true default: CURRENT_TIMESTAMP sequence: 8 updated_at: name: updated_at table: users schema: public type: timestamp not_null: false sequence: 9 indexes: idx_users_email: name: idx_users_email table: users schema: public columns: - email unique: true type: btree idx_users_username: name: idx_users_username table: users schema: public columns: - username unique: true type: btree idx_users_created_at: name: idx_users_created_at table: users schema: public columns: - created_at unique: false type: btree constraints: {} relationships: {} - name: categories schema: public description: Post categories columns: id: name: id table: categories schema: public type: bigint not_null: true auto_increment: true is_primary_key: true sequence: 1 name: name: name table: categories schema: public type: varchar length: 100 not_null: true sequence: 2 slug: name: slug table: categories schema: public type: varchar length: 100 not_null: true sequence: 3 description: name: description table: categories schema: public type: text not_null: false sequence: 4 indexes: idx_categories_slug: name: idx_categories_slug table: categories schema: public columns: - slug unique: true type: btree constraints: {} relationships: {} - name: posts schema: public description: Blog posts columns: id: name: id table: posts schema: public type: bigint not_null: true auto_increment: true is_primary_key: true sequence: 1 user_id: name: user_id table: posts schema: public type: bigint not_null: true comment: Foreign key to users table sequence: 2 title: name: title table: posts schema: public type: varchar length: 200 not_null: true sequence: 3 slug: name: slug table: posts schema: public type: varchar length: 200 not_null: true sequence: 4 content: name: content table: posts schema: public type: text not_null: false sequence: 5 excerpt: name: excerpt table: posts schema: public type: varchar length: 500 not_null: false sequence: 6 status: name: status table: posts schema: public type: varchar length: 20 not_null: true default: draft sequence: 7 view_count: name: view_count table: posts schema: public type: integer not_null: true default: 0 sequence: 8 published_at: name: published_at table: posts schema: public type: timestamp not_null: false sequence: 9 created_at: name: created_at table: posts schema: public type: timestamp not_null: true default: CURRENT_TIMESTAMP sequence: 10 updated_at: name: updated_at table: posts schema: public type: timestamp not_null: false sequence: 11 indexes: idx_posts_user_id: name: idx_posts_user_id table: posts schema: public columns: - user_id unique: false type: btree idx_posts_slug: name: idx_posts_slug table: posts schema: public columns: - slug unique: true type: btree idx_posts_status: name: idx_posts_status table: posts schema: public columns: - status unique: false type: btree idx_posts_published_at: name: idx_posts_published_at table: posts schema: public columns: - published_at unique: false type: btree constraints: fk_posts_user: name: fk_posts_user type: foreign_key table: posts schema: public columns: - user_id referenced_table: users referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE relationships: {} - name: comments schema: public description: Post comments columns: id: name: id table: comments schema: public type: bigint not_null: true auto_increment: true is_primary_key: true sequence: 1 post_id: name: post_id table: comments schema: public type: bigint not_null: true comment: Foreign key to posts table sequence: 2 user_id: name: user_id table: comments schema: public type: bigint not_null: true comment: Foreign key to users table sequence: 3 parent_id: name: parent_id table: comments schema: public type: bigint not_null: false comment: Self-referencing foreign key for nested comments sequence: 4 content: name: content table: comments schema: public type: text not_null: true sequence: 5 is_approved: name: is_approved table: comments schema: public type: boolean not_null: true default: false sequence: 6 created_at: name: created_at table: comments schema: public type: timestamp not_null: true default: CURRENT_TIMESTAMP sequence: 7 updated_at: name: updated_at table: comments schema: public type: timestamp not_null: false sequence: 8 indexes: idx_comments_post_id: name: idx_comments_post_id table: comments schema: public columns: - post_id unique: false type: btree idx_comments_user_id: name: idx_comments_user_id table: comments schema: public columns: - user_id unique: false type: btree idx_comments_parent_id: name: idx_comments_parent_id table: comments schema: public columns: - parent_id unique: false type: btree constraints: fk_comments_post: name: fk_comments_post type: foreign_key table: comments schema: public columns: - post_id referenced_table: posts referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE fk_comments_user: name: fk_comments_user type: foreign_key table: comments schema: public columns: - user_id referenced_table: users referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE fk_comments_parent: name: fk_comments_parent type: foreign_key table: comments schema: public columns: - parent_id referenced_table: comments referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE relationships: {} - name: post_categories schema: public description: Many-to-many relationship between posts and categories columns: id: name: id table: post_categories schema: public type: bigint not_null: true auto_increment: true is_primary_key: true sequence: 1 post_id: name: post_id table: post_categories schema: public type: bigint not_null: true sequence: 2 category_id: name: category_id table: post_categories schema: public type: bigint not_null: true sequence: 3 created_at: name: created_at table: post_categories schema: public type: timestamp not_null: true default: CURRENT_TIMESTAMP sequence: 4 indexes: idx_post_categories_unique: name: idx_post_categories_unique table: post_categories schema: public columns: - post_id - category_id unique: true type: btree idx_post_categories_category: name: idx_post_categories_category table: post_categories schema: public columns: - category_id unique: false type: btree constraints: fk_post_categories_post: name: fk_post_categories_post type: foreign_key table: post_categories schema: public columns: - post_id referenced_table: posts referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE fk_post_categories_category: name: fk_post_categories_category type: foreign_key table: post_categories schema: public columns: - category_id referenced_table: categories referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE relationships: {} - name: tags schema: public description: Tags for posts columns: id: name: id table: tags schema: public type: bigint not_null: true auto_increment: true is_primary_key: true sequence: 1 name: name: name table: tags schema: public type: varchar length: 50 not_null: true sequence: 2 slug: name: slug table: tags schema: public type: varchar length: 50 not_null: true sequence: 3 indexes: idx_tags_slug: name: idx_tags_slug table: tags schema: public columns: - slug unique: true type: btree constraints: {} relationships: {} - name: post_tags schema: public description: Many-to-many relationship between posts and tags columns: post_id: name: post_id table: post_tags schema: public type: bigint not_null: true is_primary_key: true sequence: 1 tag_id: name: tag_id table: post_tags schema: public type: bigint not_null: true is_primary_key: true sequence: 2 indexes: idx_post_tags_tag: name: idx_post_tags_tag table: post_tags schema: public columns: - tag_id unique: false type: btree constraints: fk_post_tags_post: name: fk_post_tags_post type: foreign_key table: post_tags schema: public columns: - post_id referenced_table: posts referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE fk_post_tags_tag: name: fk_post_tags_tag type: foreign_key table: post_tags schema: public columns: - tag_id referenced_table: tags referenced_schema: public referenced_columns: - id on_delete: CASCADE on_update: CASCADE relationships: {}