{
  "format": "dataset-manifest/1",
  "slug": "community-forum-and-discussion-platform",
  "version": 1,
  "seed": "community-forum-and-discussion-platform:1",
  "spec": {
    "format": "dataset/1",
    "slug": "community-forum-and-discussion-platform",
    "name": "Community Engagement Metrics",
    "tagline": "User activities, threads, replies, reactions, and polls from online community engagement metrics.",
    "description": "Users actively engage in online communities by creating threads, replying to discussions, and reacting to posts. Each thread represents a unique topic initiated by a user, inviting further interaction from other community members. As users reply to these threads, they contribute their insights and perspectives, fostering a vibrant exchange of ideas. The reactions table captures the various ways users express their sentiment towards posts, whether through likes, dislikes, or other reactions, allowing for a quantitative view of content reception. Additionally, the dataset includes polls that users can create to gauge opinions on specific subjects, with the poll_votes table recording individual responses to these polls.\n\nThe relationships between the tables are integral to understanding user engagement. For instance, a single user can create multiple threads, while each thread can have numerous replies and reactions associated with it. Polls, too, can be linked back to specific threads, creating a comprehensive view of interactions surrounding particular topics. The connections between users, threads, replies, and reactions allow for nuanced analysis of how community dynamics unfold, including how moderation actions impact user behavior, as seen through threads leading to warnings or bans.\n\nThis dataset provides insights into essential questions such as which topics spark the most engagement, how user sentiments shift over time, and how various moderation strategies affect member participation. It is particularly useful for analyzing community interaction patterns and user behavior within social environments. Practicing with this synthetic data enables developers and data analysts to hone their skills in relational database management, data visualization, and engagement metric analysis.",
    "domain": "social",
    "shape": "hierarchical",
    "useCases": [
      "sql-practice",
      "teaching"
    ],
    "keywords": [
      "community",
      "engagement",
      "threads",
      "replies",
      "reactions",
      "polls",
      "moderation",
      "discussion"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "Each row represents a user in the community, detailing their profile information and engagement history. The join date marks when they joined the platform.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each user."
          },
          "username": {
            "kind": "fullName",
            "description": "Username chosen by the user."
          },
          "join_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "description": "Date when the user joined the community.",
            "trend": "growing"
          },
          "is_active": {
            "kind": "bool",
            "trueRate": 0.8,
            "description": "Indicates if the user is currently active."
          }
        }
      },
      "threads": {
        "description": "This table contains details about threads created by users, including the topic and creation date. Each thread is linked to the user who created it.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each thread."
          },
          "title": {
            "kind": "sentence",
            "min": 5,
            "max": 100,
            "description": "Title of the thread."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "The user who created the thread."
          },
          "creation_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "description": "Date when the thread was created.",
            "trend": "growing"
          }
        }
      },
      "replies": {
        "description": "This table tracks replies to threads, capturing the user's response and the date it was made. Each reply links back to the corresponding thread.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each reply."
          },
          "thread_id": {
            "kind": "fk",
            "ref": "threads.id",
            "description": "The thread to which this reply belongs."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "The user who posted the reply."
          },
          "reply_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "description": "Date when the reply was made.",
            "trend": "growing"
          }
        }
      },
      "reactions": {
        "description": "This table records user reactions to threads and replies, indicating the type of reaction and when it occurred. Each reaction is linked to the entity it reacts to.",
        "rows": 400,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each reaction."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "The user who reacted."
          },
          "entity_id": {
            "kind": "int",
            "min": 1,
            "max": 1000,
            "description": "ID of the thread or reply being reacted to."
          },
          "reaction_type": {
            "kind": "enum",
            "values": [
              "like",
              "dislike",
              "love",
              "laugh"
            ],
            "description": "Type of reaction given by the user."
          },
          "reaction_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "description": "Date when the reaction was made.",
            "nullable": true,
            "when": {
              "column": "reaction_type",
              "in": [
                "like",
                "dislike",
                "love",
                "laugh"
              ]
            },
            "trend": "growing"
          }
        }
      },
      "polls": {
        "description": "Polls created within the community, allowing users to vote on specific topics. Each poll includes details about the topic and its creator.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each poll."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "The user who created the poll."
          },
          "topic": {
            "kind": "sentence",
            "min": 5,
            "max": 100,
            "description": "Topic of the poll."
          },
          "creation_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "description": "Date when the poll was created.",
            "trend": "growing"
          }
        }
      },
      "poll_votes": {
        "description": "This table captures votes made by users in response to polls, linking back to the respective poll and user.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each vote."
          },
          "poll_id": {
            "kind": "fk",
            "ref": "polls.id",
            "description": "The poll being voted on."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "The user who cast the vote."
          },
          "vote_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2024-12-31",
            "description": "Date when the vote was cast.",
            "trend": "growing"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the most discussed topics in the community?",
      "How do user engagement metrics vary over time?",
      "What is the impact of moderation actions on user activity?",
      "Which types of reactions are most common?",
      "How do poll results correlate with user engagement?"
    ],
    "suggestedQueries": [
      {
        "title": "List all threads with their creator's username",
        "sql": "SELECT threads.title, users.username FROM threads JOIN users ON threads.user_id = users.id;",
        "dialect": "postgres"
      },
      {
        "title": "Count replies per thread",
        "sql": "SELECT thread_id, COUNT(*) AS reply_count FROM replies GROUP BY thread_id;",
        "dialect": "postgres"
      },
      {
        "title": "User engagement over time",
        "sql": "SELECT DATE_TRUNC('month', reply_date) AS month, COUNT(*) AS total_replies FROM replies GROUP BY month ORDER BY month;",
        "dialect": "postgres"
      },
      {
        "title": "Top polls by votes",
        "sql": "SELECT polls.topic, COUNT(poll_votes.id) AS vote_count FROM polls LEFT JOIN poll_votes ON polls.id = poll_votes.poll_id GROUP BY polls.id ORDER BY vote_count DESC;",
        "dialect": "postgres"
      },
      {
        "title": "Reactions by type",
        "sql": "SELECT reaction_type, COUNT(*) AS count FROM reactions GROUP BY reaction_type;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "SQL Training for Data Analysts",
        "body": "Data analysts can use this dataset to practice SQL queries that analyze user engagement, allowing them to extract insights about community dynamics and user interactions."
      },
      {
        "title": "Teaching Community Management",
        "body": "Instructors can utilize this dataset to teach community management strategies, exploring how user engagement metrics can inform moderation policies and community guidelines."
      },
      {
        "title": "Research on User Behavior",
        "body": "Researchers studying online communities can leverage this dataset to investigate patterns in user behavior, engagement spikes, and the effects of moderation on community health."
      },
      {
        "title": "Developing Community Engagement Tools",
        "body": "Developers can use the dataset to build and test tools for community engagement, such as analytics dashboards or reporting tools that visualize user interactions."
      }
    ]
  },
  "counts": {
    "users": 200,
    "polls": 150,
    "poll_votes": 300,
    "reactions": 400,
    "threads": 300,
    "replies": 500
  },
  "stats": {
    "users": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "username": {
          "nulls": 0,
          "distinct": 199,
          "min": "Alice Rossi",
          "max": "Zoe Evans"
        },
        "join_date": {
          "nulls": 0,
          "distinct": 177,
          "min": "2023-01-02",
          "max": "2024-12-30"
        },
        "is_active": {
          "nulls": 0,
          "distinct": 2,
          "min": "false",
          "max": "true"
        }
      }
    },
    "threads": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "title": {
          "nulls": 0,
          "distinct": 299
        },
        "user_id": {
          "nulls": 0,
          "distinct": 159,
          "min": 1,
          "max": 200
        },
        "creation_date": {
          "nulls": 0,
          "distinct": 238,
          "min": "2023-01-01",
          "max": "2024-12-30"
        }
      }
    },
    "replies": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "thread_id": {
          "nulls": 0,
          "distinct": 241,
          "min": 1,
          "max": 299
        },
        "user_id": {
          "nulls": 0,
          "distinct": 180,
          "min": 1,
          "max": 200
        },
        "reply_date": {
          "nulls": 0,
          "distinct": 365,
          "min": "2023-01-03",
          "max": "2024-12-30"
        }
      }
    },
    "reactions": {
      "rows": 400,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 400,
          "min": 1,
          "max": 400
        },
        "user_id": {
          "nulls": 0,
          "distinct": 170,
          "min": 1,
          "max": 200
        },
        "entity_id": {
          "nulls": 0,
          "distinct": 336,
          "min": 2,
          "max": 997
        },
        "reaction_type": {
          "nulls": 0,
          "distinct": 4,
          "min": "dislike",
          "max": "love"
        },
        "reaction_date": {
          "nulls": 0,
          "distinct": 311,
          "min": "2023-01-04",
          "max": "2024-12-31"
        }
      }
    },
    "polls": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "user_id": {
          "nulls": 0,
          "distinct": 114,
          "min": 2,
          "max": 200
        },
        "topic": {
          "nulls": 0,
          "distinct": 150
        },
        "creation_date": {
          "nulls": 0,
          "distinct": 134,
          "min": "2023-01-16",
          "max": "2024-12-28"
        }
      }
    },
    "poll_votes": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "poll_id": {
          "nulls": 0,
          "distinct": 128,
          "min": 1,
          "max": 150
        },
        "user_id": {
          "nulls": 0,
          "distinct": 156,
          "min": 2,
          "max": 200
        },
        "vote_date": {
          "nulls": 0,
          "distinct": 239,
          "min": "2023-01-03",
          "max": "2024-12-31"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/community-forum-and-discussion-platform/v1/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/csv/users.csv",
      "bytes": 6600,
      "sha256": "f8acfd1251f88e7487cfeb7f4473ba82950098d803284606a8893459b81b8a43",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/polls.csv",
      "format": "csv",
      "table": "polls",
      "key": "datasets/community-forum-and-discussion-platform/v1/csv/polls.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/csv/polls.csv",
      "bytes": 11354,
      "sha256": "23b6f83d30266369819678f131b556b7d9f17f4aa7396326fa7ddd4afa85df27",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/poll_votes.csv",
      "format": "csv",
      "table": "poll_votes",
      "key": "datasets/community-forum-and-discussion-platform/v1/csv/poll_votes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/csv/poll_votes.csv",
      "bytes": 6752,
      "sha256": "c471685620f28d8380d99162d015962bd02836a9e94e7456b28d6ceb1f392483",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/reactions.csv",
      "format": "csv",
      "table": "reactions",
      "key": "datasets/community-forum-and-discussion-platform/v1/csv/reactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/csv/reactions.csv",
      "bytes": 11671,
      "sha256": "eb7fce958d4a25f9a115e4b89d46ee8b1a1cf069e110a8140e39b6cb88f9946d",
      "rows": 400,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/threads.csv",
      "format": "csv",
      "table": "threads",
      "key": "datasets/community-forum-and-discussion-platform/v1/csv/threads.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/csv/threads.csv",
      "bytes": 22908,
      "sha256": "b2f394e1374c696c06d8a5946e6db4eabfa58f8e59b52c3d4b30e700c9787501",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/replies.csv",
      "format": "csv",
      "table": "replies",
      "key": "datasets/community-forum-and-discussion-platform/v1/csv/replies.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/csv/replies.csv",
      "bytes": 11462,
      "sha256": "d291a88371acccee0bb932320314ba685a68c40f5c4489ce6131d9661a162c0e",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "community-forum-and-discussion-platform.json",
      "format": "json",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/community-forum-and-discussion-platform.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/community-forum-and-discussion-platform.json",
      "bytes": 239245,
      "sha256": "11d74ff4563ca83b1ba31f4d7ebe7cf29e5785c6881a224e9f9fd4ace5b8c805",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/sql/postgres.sql",
      "bytes": 96869,
      "sha256": "b6efc641f9adbc67790563e5c6adfcabf726b9f4342c3e26583e1a3ad12151f7",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/sql/mysql.sql",
      "bytes": 95572,
      "sha256": "4c12832fe3f14c4e9daf51081837ddc35c30c0f197a0e12ea0f30a03f2f58e15",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/sql/mssql.sql",
      "bytes": 98841,
      "sha256": "fa3a3d6efd7f3542b2e726fe7c978b69193413f8e691307e578dfb7300f65cb3",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/sql/sqlite.sql",
      "bytes": 95357,
      "sha256": "c617c6d3e07dedf4a1fe86b4110be64bcbbcabec2c64ad6e0896b74b2a8698a7",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/prisma/seed.ts",
      "bytes": 185248,
      "sha256": "d30e1df6b34ea51ed1092e1f37589382277e23f03ad0aa3b9e6811a11e815898",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/community-forum-and-discussion-platform/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/community-forum-and-discussion-platform/v1/django/fixtures.json",
      "bytes": 311530,
      "sha256": "70a13f8d342a489ba8f29be274eaeb8c0a232ec6625489e8b8274c94cf09f5a3",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766182827,
  "updatedAt": 1788766182827
}
