{
  "format": "dataset-manifest/1",
  "slug": "community-forum",
  "version": 2,
  "seed": "community-forum:1",
  "spec": {
    "format": "dataset/1",
    "slug": "community-forum",
    "name": "Community Forum",
    "tagline": "A simulated community forum with members, threads, posts, and interactions.",
    "description": "Members engage in discussions on various topics by joining a community forum, contributing to boards, and creating threads. Each member can initiate a thread that invites others to share their thoughts, leading to a plethora of posts, some containing quotes from earlier contributions. Reactions allow members to express their sentiments towards specific posts, fostering a dynamic environment of interaction and feedback. \n\nThe data structure consists of five tables: members, boards, threads, posts, and reactions. Each row in the members table represents an individual member of the forum, containing details such as their username and registration date. The boards table organizes the topics into specific categories, where each row corresponds to a unique board. Threads are initiated within these boards, linking a thread to its respective board via a foreign key. Each thread then expands into multiple posts, with each post row capturing the content contributed by members, the member who created it, and its associated thread. Posts can reference earlier posts through quotes, enabling collaborative discussions. Finally, reactions table records the feedback from members towards specific posts, with each entry indicating the member who reacted and the type of reaction (like, dislike, etc.). \n\nThis dataset provides a rich basis for practicing queries related to community interactions, member engagement analysis, or content popularity assessments. Developers can explore questions such as: which topics garner the most discussion, how various members contribute to threads, and the overall sentiment expressed through reactions. \n\nPlease note that the data in this dataset is synthetic, generated to simulate the diverse interactions found in a real community forum.",
    "domain": "social",
    "shape": "transactional",
    "useCases": [
      "api-mocking",
      "orm-seeding"
    ],
    "keywords": [
      "forum",
      "community",
      "threads",
      "posts",
      "members",
      "reactions",
      "discussion",
      "engagement"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "members": {
        "description": "Each row represents a unique member of the forum, capturing their details and activity levels.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "The unique identifier for each member."
          },
          "username": {
            "kind": "firstName",
            "description": "The display name of the member."
          },
          "email": {
            "kind": "email",
            "from": "username",
            "description": "The email address of the member."
          },
          "join_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-01-01",
            "description": "The date when the member joined the forum.",
            "trend": "growing"
          }
        }
      },
      "boards": {
        "description": "This table holds information on various discussion boards available in the forum.",
        "rows": 10,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "The unique identifier for each board."
          },
          "name": {
            "kind": "title",
            "description": "The title of the discussion board.",
            "pool": [
              "discussion",
              "community",
              "support",
              "feedback",
              "ideas",
              "resources",
              "events",
              "announcements",
              "help",
              "suggestions",
              "news",
              "updates",
              "projects",
              "collaboration",
              "networking",
              "topics",
              "interests",
              "questions",
              "tutorials",
              "guides",
              "challenges"
            ],
            "min": 1,
            "max": 3
          },
          "description": {
            "kind": "paragraph",
            "min": 20,
            "max": 100,
            "description": "A brief description of the board."
          }
        }
      },
      "threads": {
        "description": "Each thread represents a conversation within a specific board, linking to member activity.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "The unique identifier for each thread."
          },
          "board_id": {
            "kind": "fk",
            "ref": "boards.id",
            "description": "The board to which the thread belongs."
          },
          "title": {
            "kind": "title",
            "description": "The title of the thread.",
            "pool": [
              "how-to",
              "best-practices",
              "tips",
              "tricks",
              "advice",
              "experiences",
              "questions",
              "solutions",
              "discussions",
              "insights",
              "suggestions",
              "recommendations",
              "resources",
              "tools",
              "strategies",
              "updates",
              "events",
              "feedback",
              "polls",
              "debates",
              "news"
            ],
            "min": 1,
            "max": 3
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-01-01",
            "description": "The date and time when the thread was created.",
            "dayProfile": "waking"
          },
          "creator_id": {
            "kind": "fk",
            "ref": "members.id",
            "description": "The member who created the thread."
          }
        }
      },
      "posts": {
        "description": "Individual messages within threads, often quoting previous posts to enhance discussions.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "The unique identifier for each post."
          },
          "thread_id": {
            "kind": "fk",
            "ref": "threads.id",
            "description": "The thread to which the post belongs."
          },
          "member_id": {
            "kind": "fk",
            "ref": "members.id",
            "description": "The member who authored the post."
          },
          "content": {
            "kind": "paragraph",
            "min": 10,
            "max": 500,
            "description": "The content of the post."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-01-01",
            "description": "The date and time when the post was made.",
            "dayProfile": "waking"
          },
          "quote_post_id": {
            "kind": "fk",
            "ref": "posts.id",
            "nullable": true,
            "description": "The post being quoted, if applicable."
          }
        }
      },
      "reactions": {
        "description": "User reactions to posts, capturing engagement metrics like likes or dislikes.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "The unique identifier for each reaction."
          },
          "post_id": {
            "kind": "fk",
            "ref": "posts.id",
            "description": "The post to which the reaction applies."
          },
          "member_id": {
            "kind": "fk",
            "ref": "members.id",
            "description": "The member who reacted."
          },
          "reaction_type": {
            "kind": "enum",
            "values": [
              "like",
              "dislike"
            ],
            "description": "The type of reaction given by the member.",
            "weights": [
              9,
              1
            ]
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-01-01",
            "description": "The date and time when the reaction occurred.",
            "dayProfile": "waking"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "nullable",
      "self-referencing"
    ],
    "analysisQuestions": [
      "What topics are most popular among members?",
      "How many posts does each thread typically have?",
      "Which members are the most active in terms of posts and reactions?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Threads with Posts",
        "sql": "SELECT threads.title, COUNT(posts.id) AS post_count FROM threads JOIN posts ON threads.id = posts.thread_id GROUP BY threads.id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Reactions per Post",
        "sql": "SELECT posts.id, COUNT(reactions.id) AS reaction_count FROM posts LEFT JOIN reactions ON posts.id = reactions.post_id GROUP BY posts.id;",
        "dialect": "postgres"
      },
      {
        "title": "Active Members by Post Count",
        "sql": "SELECT members.username, COUNT(posts.id) AS post_count FROM members JOIN posts ON members.id = posts.member_id GROUP BY members.id ORDER BY post_count DESC;",
        "dialect": "postgres"
      },
      {
        "title": "Posts Quoting Other Posts",
        "sql": "SELECT COUNT(*) FROM posts WHERE quote_post_id IS NOT NULL;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Forum Software Development",
        "body": "Developers building forum software can use this dataset to test and mock API endpoints, ensuring that their applications can handle user interactions, thread management, and post creation effectively."
      },
      {
        "title": "Data Analysis for Community Engagement",
        "body": "Data analysts can utilize this dataset to explore user engagement patterns within a community forum, identifying trends in post frequency, popular threads, and member activity over time."
      },
      {
        "title": "Educational Purposes in Database Management",
        "body": "Students learning about relational databases can practice building queries and understanding relationships between tables using this dataset, gaining hands-on experience with real-world scenarios."
      }
    ]
  },
  "counts": {
    "boards": 10,
    "members": 50,
    "threads": 100,
    "posts": 500,
    "reactions": 300
  },
  "stats": {
    "members": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "username": {
          "nulls": 0,
          "distinct": 38,
          "min": "Arjun",
          "max": "Zara"
        },
        "email": {
          "nulls": 0,
          "distinct": 43
        },
        "join_date": {
          "nulls": 0,
          "distinct": 46,
          "min": "2020-03-14",
          "max": "2023-01-01"
        }
      }
    },
    "boards": {
      "rows": 10,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 10,
          "min": 1,
          "max": 10
        },
        "name": {
          "nulls": 0,
          "distinct": 10
        },
        "description": {
          "nulls": 0,
          "distinct": 10
        }
      }
    },
    "threads": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "board_id": {
          "nulls": 0,
          "distinct": 10,
          "min": 1,
          "max": 10
        },
        "title": {
          "nulls": 0,
          "distinct": 80
        },
        "created_at": {
          "nulls": 0,
          "distinct": 100,
          "min": "2020-01-04 23:17:48",
          "max": "2023-01-01 00:07:35"
        },
        "creator_id": {
          "nulls": 0,
          "distinct": 44,
          "min": 1,
          "max": 50
        }
      }
    },
    "posts": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "thread_id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "member_id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "content": {
          "nulls": 0,
          "distinct": 500
        },
        "created_at": {
          "nulls": 0,
          "distinct": 500,
          "min": "2020-01-04 20:31:39",
          "max": "2023-01-01 21:30:56"
        },
        "quote_post_id": {
          "nulls": 58,
          "distinct": 247,
          "min": 1,
          "max": 481
        }
      }
    },
    "reactions": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "post_id": {
          "nulls": 0,
          "distinct": 221,
          "min": 1,
          "max": 494
        },
        "member_id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "reaction_type": {
          "nulls": 0,
          "distinct": 2,
          "min": "dislike",
          "max": "like"
        },
        "created_at": {
          "nulls": 0,
          "distinct": 300,
          "min": "2020-01-08 05:23:01",
          "max": "2023-01-01 08:13:17"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/boards.csv",
      "format": "csv",
      "table": "boards",
      "key": "datasets/community-forum/v2/csv/boards.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/csv/boards.csv",
      "bytes": 2116,
      "sha256": "2bf729c3be2a0dd642f51cd01a1fdaeeda6b1437576c7c57aa284584114791b3",
      "rows": 10,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/members.csv",
      "format": "csv",
      "table": "members",
      "key": "datasets/community-forum/v2/csv/members.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/csv/members.csv",
      "bytes": 2207,
      "sha256": "edea9c67a2ec03a6f9f32b576559522a288a1d44e39a9e76d18dcb990ca9130b",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/threads.csv",
      "format": "csv",
      "table": "threads",
      "key": "datasets/community-forum/v2/csv/threads.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/csv/threads.csv",
      "bytes": 4620,
      "sha256": "7a0fa3fb78a3977e9be99153853614ea99d522c209d761ccef76211a5f6098da",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/posts.csv",
      "format": "csv",
      "table": "posts",
      "key": "datasets/community-forum/v2/csv/posts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/csv/posts.csv",
      "bytes": 102910,
      "sha256": "bd835353969ad7976fe2054e1e8c39eb61272249895d8cbff41465e84512422c",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/reactions.csv",
      "format": "csv",
      "table": "reactions",
      "key": "datasets/community-forum/v2/csv/reactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/csv/reactions.csv",
      "bytes": 10982,
      "sha256": "719c7029ced17574e2cf3359f48d32ed58fa4401025390491c7899817ea529a3",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "community-forum.json",
      "format": "json",
      "table": null,
      "key": "datasets/community-forum/v2/community-forum.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/community-forum.json",
      "bytes": 236659,
      "sha256": "309fe6f2961e91db00ea662c61ec3fc6e7d4fd68da05756b1d2fd6e17a069e20",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/community-forum/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/sql/postgres.sql",
      "bytes": 139645,
      "sha256": "283090d5963fae936aa265ae7007be156f75d7ddd80918f9535327ea689d328f",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/community-forum/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/sql/mysql.sql",
      "bytes": 139095,
      "sha256": "14ccf5d5f4043bb8644dde9195e93767998a6139c2c8c6d1ba58949da7f32379",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/community-forum/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/sql/mssql.sql",
      "bytes": 141384,
      "sha256": "bc667c70fbe03bc3342ba97ed77054d7e5da4747ac459dc73c71b946434beb3a",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/community-forum/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/sql/sqlite.sql",
      "bytes": 138852,
      "sha256": "67868162381242262b6db6b3a334baaae7ac7172ee11c3f3c7cbb53b165e0caf",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/community-forum/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/prisma/seed.ts",
      "bytes": 209472,
      "sha256": "ca3ccfd11ce7a979fdbf146eeb0dbaa8b77fedc847f9a0db0389bf7c7ffc62a7",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/community-forum/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum/v2/django/fixtures.json",
      "bytes": 271435,
      "sha256": "8f8123d161967e1c80a5bba9d539fb0766b1a6de738c0cf024b3c6029564a95b",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767272833,
  "updatedAt": 1788782942688
}
