{
  "format": "dataset-manifest/1",
  "slug": "linguistic-progress-tracker",
  "version": 1,
  "seed": "linguistic-progress-tracker:1",
  "spec": {
    "format": "dataset/1",
    "slug": "linguistic-progress-tracker",
    "name": "Linguistic Progress Tracker",
    "tagline": "User activities tracking language acquisition through modules, lessons, exercises, and quizzes.",
    "description": "Learners navigate through a dynamic platform dedicated to language acquisition, immersing themselves in diverse modules designed to enhance their skills in vocabulary, grammar, pronunciation, and comprehension. As participants progress, their interactions are meticulously recorded, allowing educators to analyze user activities such as lessons completed, exercises attempted, and quiz performance metrics. This tracking enables the identification of trends, such as common challenges faced by users when dealing with intricate grammatical structures, while simultaneously recognizing those who swiftly master foundational vocabulary. \n\nThe dataset comprises several interconnected tables: users, modules, lessons, exercises, quizzes, and user_activity. Each user row represents an individual learner, while modules serve as the broad categories of language topics being studied. Lessons break down the modules into manageable segments for learning, with exercises providing practice opportunities related to each lesson. Quizzes serve as assessment tools to evaluate knowledge, with user_activity capturing the detailed log of each user's engagement with these elements. Relationships between the tables allow for queries that can trace a user's journey from lesson completion to performance on quizzes, revealing insights about their learning patterns. \n\nThis data is particularly useful for addressing various educational questions, such as identifying which modules have the highest dropout rates, analyzing the effectiveness of different exercises, and understanding user engagement over time. Practitioners can leverage this information to develop targeted interventions, refine lesson content, and enhance user retention strategies. It's important to note that the data is synthetic, providing a safe environment for developers to practice data analysis without the constraints of privacy concerns.",
    "domain": "education",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "language learning",
      "education",
      "user engagement",
      "performance metrics",
      "interactive modules"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "This table stores user information, including their unique identifiers, names, and registration details. Each user can have multiple activities associated with their learning journey.",
        "rows": 250,
        "columns": {
          "user_id": {
            "kind": "pk",
            "description": "Unique identifier for each user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "Full name of the user."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "User's email address."
          },
          "registration_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date when the user registered."
          }
        }
      },
      "modules": {
        "description": "The modules table details different language learning modules available to users, including their focus areas and difficulty levels. Each module can have multiple lessons associated with it.",
        "rows": 60,
        "columns": {
          "module_id": {
            "kind": "pk",
            "description": "Unique identifier for each module."
          },
          "module_name": {
            "kind": "words",
            "min": 3,
            "max": 50,
            "description": "Name of the language learning module."
          },
          "difficulty_level": {
            "kind": "enum",
            "values": [
              "beginner",
              "intermediate",
              "advanced"
            ],
            "description": "Difficulty level of the module."
          }
        }
      },
      "lessons": {
        "description": "This table links specific lessons to their corresponding modules, specifying lesson details and completion status for users. Each lesson pertains to one module.",
        "rows": 300,
        "columns": {
          "lesson_id": {
            "kind": "pk",
            "description": "Unique identifier for each lesson."
          },
          "module_id": {
            "kind": "fk",
            "ref": "modules.module_id",
            "description": "Identifier for the module this lesson belongs to."
          },
          "lesson_title": {
            "kind": "words",
            "min": 5,
            "max": 100,
            "description": "Title of the lesson."
          },
          "completed": {
            "kind": "bool",
            "trueRate": 0.7,
            "description": "Indicates whether the lesson has been completed by the user."
          }
        }
      },
      "exercises": {
        "description": "This table contains exercises associated with specific lessons, tracking user attempts and performance metrics. Each exercise belongs to a lesson.",
        "rows": 500,
        "columns": {
          "exercise_id": {
            "kind": "pk",
            "description": "Unique identifier for each exercise."
          },
          "lesson_id": {
            "kind": "fk",
            "ref": "lessons.lesson_id",
            "description": "Identifier for the lesson this exercise belongs to."
          },
          "attempts": {
            "kind": "int",
            "min": 0,
            "max": 20,
            "description": "Number of attempts made by users on this exercise."
          },
          "success_rate": {
            "kind": "decimal",
            "min": 0,
            "max": 1,
            "scale": 2,
            "description": "Percentage of successful attempts on this exercise."
          }
        }
      },
      "quizzes": {
        "description": "This table captures data regarding quizzes taken by users, including scores and completion status. Each quiz is linked to a module.",
        "rows": 200,
        "columns": {
          "quiz_id": {
            "kind": "pk",
            "description": "Unique identifier for each quiz."
          },
          "module_id": {
            "kind": "fk",
            "ref": "modules.module_id",
            "description": "Identifier for the module this quiz is associated with."
          },
          "score": {
            "kind": "decimal",
            "min": 0,
            "max": 100,
            "scale": 2,
            "description": "Score achieved by the user on the quiz."
          },
          "completed": {
            "kind": "bool",
            "trueRate": 0.8,
            "description": "Indicates whether the quiz was completed."
          },
          "quiz_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date and time when the quiz was taken."
          }
        }
      },
      "user_activity": {
        "description": "This table records user activity logs, tracking engagement with various modules, lessons, exercises, and quizzes. It links users to their interactions within the system.",
        "rows": 600,
        "columns": {
          "activity_id": {
            "kind": "pk",
            "description": "Unique identifier for each user activity."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "description": "Identifier for the user performing the activity."
          },
          "lesson_id": {
            "kind": "fk",
            "ref": "lessons.lesson_id",
            "nullable": true,
            "description": "Identifier for the lesson associated with this activity."
          },
          "quiz_id": {
            "kind": "fk",
            "ref": "quizzes.quiz_id",
            "nullable": true,
            "description": "Identifier for the quiz associated with this activity."
          },
          "timestamp": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "dayProfile": "waking",
            "description": "Date and time of the user activity."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable",
      "self-referencing"
    ],
    "analysisQuestions": [
      "Which modules show the highest completion rates among users?",
      "What percentage of users drop out after their first session?",
      "Are there specific lessons that users struggle with more than others?",
      "How do quiz scores correlate with lesson completions?",
      "What times of day do users engage with the platform the most?"
    ],
    "suggestedQueries": [
      {
        "title": "List all users and their completed lessons",
        "sql": "SELECT u.user_id, u.full_name, COUNT(l.lesson_id) AS completed_lessons FROM users u LEFT JOIN lessons l ON l.completed = TRUE GROUP BY u.user_id;"
      },
      {
        "title": "Average quiz score by module",
        "sql": "SELECT m.module_name, AVG(q.score) AS average_score FROM quizzes q JOIN modules m ON q.module_id = m.module_id GROUP BY m.module_name;"
      },
      {
        "title": "User engagement over time",
        "sql": "SELECT DATE(ua.timestamp) AS activity_date, COUNT(DISTINCT ua.user_id) AS active_users FROM user_activity ua GROUP BY activity_date ORDER BY activity_date;"
      },
      {
        "title": "Success rate of exercises per lesson",
        "sql": "SELECT l.lesson_title, AVG(e.success_rate) AS avg_success_rate FROM exercises e JOIN lessons l ON e.lesson_id = l.lesson_id GROUP BY l.lesson_title;"
      },
      {
        "title": "Users dropping out after first session",
        "sql": "SELECT COUNT(DISTINCT ua.user_id) AS dropouts FROM user_activity ua WHERE ua.timestamp = (SELECT MIN(timestamp) FROM user_activity WHERE user_id = ua.user_id) AND ua.user_id NOT IN (SELECT DISTINCT user_id FROM user_activity WHERE timestamp > ua.timestamp);"
      }
    ],
    "usageScenarios": [
      {
        "title": "Language Educators",
        "body": "Language educators can utilize the Linguistic Progress Tracker dataset to analyze student performance metrics across various modules. By identifying which lessons are frequently completed and which exercises present challenges, educators can tailor their teaching strategies and provide targeted support to improve learner outcomes."
      },
      {
        "title": "Data Analysts",
        "body": "Data analysts interested in education analytics can leverage this dataset to uncover trends in user engagement and retention. By examining the frequency of quizzes taken and scores achieved, they can provide insights into the effectiveness of the language learning modules and suggest improvements based on user behavior."
      },
      {
        "title": "Educational Software Developers",
        "body": "Developers creating educational software can use this dataset for testing and ORM seeding. By simulating user interactions with lessons, quizzes, and exercises, they can ensure their applications handle various scenarios and maintain data integrity, ultimately enhancing the user experience."
      },
      {
        "title": "Researchers in Language Acquisition",
        "body": "Researchers studying language acquisition can analyze the dataset to explore correlations between lesson completions, exercise performance, and quiz scores. This information could contribute to understanding the learning process and help identify factors that influence language mastery among users."
      }
    ]
  },
  "counts": {
    "modules": 60,
    "lessons": 300,
    "exercises": 500,
    "quizzes": 200,
    "users": 250,
    "user_activity": 600
  },
  "stats": {
    "users": {
      "rows": 250,
      "columns": {
        "user_id": {
          "nulls": 0,
          "distinct": 250,
          "min": 1,
          "max": 250
        },
        "full_name": {
          "nulls": 0,
          "distinct": 245,
          "min": "Alice Jensen",
          "max": "Zoe Wright"
        },
        "email": {
          "nulls": 0,
          "distinct": 249
        },
        "registration_date": {
          "nulls": 0,
          "distinct": 227,
          "min": "2020-01-11",
          "max": "2023-12-23"
        }
      }
    },
    "modules": {
      "rows": 60,
      "columns": {
        "module_id": {
          "nulls": 0,
          "distinct": 60,
          "min": 1,
          "max": 60
        },
        "module_name": {
          "nulls": 0,
          "distinct": 60
        },
        "difficulty_level": {
          "nulls": 0,
          "distinct": 3,
          "min": "advanced",
          "max": "intermediate"
        }
      }
    },
    "lessons": {
      "rows": 300,
      "columns": {
        "lesson_id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "module_id": {
          "nulls": 0,
          "distinct": 60,
          "min": 1,
          "max": 60
        },
        "lesson_title": {
          "nulls": 0,
          "distinct": 300
        },
        "completed": {
          "nulls": 0,
          "distinct": 2,
          "min": "false",
          "max": "true"
        }
      }
    },
    "exercises": {
      "rows": 500,
      "columns": {
        "exercise_id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "lesson_id": {
          "nulls": 0,
          "distinct": 255,
          "min": 1,
          "max": 299
        },
        "attempts": {
          "nulls": 0,
          "distinct": 21,
          "min": 0,
          "max": 20
        },
        "success_rate": {
          "nulls": 0,
          "distinct": 100,
          "min": 0,
          "max": 1
        }
      }
    },
    "quizzes": {
      "rows": 200,
      "columns": {
        "quiz_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "module_id": {
          "nulls": 0,
          "distinct": 57,
          "min": 1,
          "max": 60
        },
        "score": {
          "nulls": 0,
          "distinct": 197,
          "min": 0.39,
          "max": 99.97
        },
        "completed": {
          "nulls": 0,
          "distinct": 2,
          "min": "false",
          "max": "true"
        },
        "quiz_date": {
          "nulls": 0,
          "distinct": 200,
          "min": "2020-01-08 07:21:23",
          "max": "2023-12-29 08:59:23"
        }
      }
    },
    "user_activity": {
      "rows": 600,
      "columns": {
        "activity_id": {
          "nulls": 0,
          "distinct": 600,
          "min": 1,
          "max": 600
        },
        "user_id": {
          "nulls": 0,
          "distinct": 226,
          "min": 1,
          "max": 250
        },
        "lesson_id": {
          "nulls": 46,
          "distinct": 248,
          "min": 1,
          "max": 300
        },
        "quiz_id": {
          "nulls": 72,
          "distinct": 184,
          "min": 1,
          "max": 200
        },
        "timestamp": {
          "nulls": 0,
          "distinct": 600,
          "min": "2020-01-03 05:15:15",
          "max": "2023-12-28 17:29:37"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/modules.csv",
      "format": "csv",
      "table": "modules",
      "key": "datasets/linguistic-progress-tracker/v1/csv/modules.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/csv/modules.csv",
      "bytes": 12717,
      "sha256": "ecc4caa4918d3883bcc9444c1a7bd1c9e74b359e6d61b3913da1e2a6af087084",
      "rows": 60,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/lessons.csv",
      "format": "csv",
      "table": "lessons",
      "key": "datasets/linguistic-progress-tracker/v1/csv/lessons.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/csv/lessons.csv",
      "bytes": 108816,
      "sha256": "204bccc95febadd3af3cef4299333e6e35de30c4a89beed91e8e86bf1cb4a9b1",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/exercises.csv",
      "format": "csv",
      "table": "exercises",
      "key": "datasets/linguistic-progress-tracker/v1/csv/exercises.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/csv/exercises.csv",
      "bytes": 7999,
      "sha256": "db65daef6fcaf8a1c8fdf095cb928a2ae3ce32a1485a9a3cae2597bc8b46291a",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/quizzes.csv",
      "format": "csv",
      "table": "quizzes",
      "key": "datasets/linguistic-progress-tracker/v1/csv/quizzes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/csv/quizzes.csv",
      "bytes": 7716,
      "sha256": "abfc19005b689a83b75e67815adc16a59943e1a22c28353fa1dbd801c8d5cba6",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/linguistic-progress-tracker/v1/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/csv/users.csv",
      "bytes": 13071,
      "sha256": "ba529e9efc5c30d896f602b57aacf36cfa4b2b37093026e36010c3d75b1fc69c",
      "rows": 250,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_activity.csv",
      "format": "csv",
      "table": "user_activity",
      "key": "datasets/linguistic-progress-tracker/v1/csv/user_activity.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/csv/user_activity.csv",
      "bytes": 21057,
      "sha256": "e1b0f5915885d07d75e1a8c1ef416b98d84b32b493ccb0afa9fce19c5c7b6a1c",
      "rows": 600,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "linguistic-progress-tracker.json",
      "format": "json",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/linguistic-progress-tracker.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/linguistic-progress-tracker.json",
      "bytes": 365724,
      "sha256": "9e4231fe8ea8542c9e2c8e0330f852a4689f07232f109381be59b0add9bf270d",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/sql/postgres.sql",
      "bytes": 197507,
      "sha256": "38d6ecb1d95bd64fad221db4afb85fc0aa7dc33f915d7b21c57bd838765e507b",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/sql/mysql.sql",
      "bytes": 195141,
      "sha256": "88150d451906034c0d602512701214a2ea1e8fcef431f1b4f692169ac2497c53",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/sql/mssql.sql",
      "bytes": 197470,
      "sha256": "98cdf7fa50f6722e0df200106459c3637c33ca972f6f68cc5a21b035add30923",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/sql/sqlite.sql",
      "bytes": 194875,
      "sha256": "4b03efcf9c5b61492f5f75d43fe7cb77fba8e10b21275fcf8fcd6c329f8cc8b6",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/prisma/seed.ts",
      "bytes": 317666,
      "sha256": "0b143a5e981cf590c15ca5a96164a23fb12017aa0a88bcdae21d4e965763a683",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/linguistic-progress-tracker/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/linguistic-progress-tracker/v1/django/fixtures.json",
      "bytes": 430335,
      "sha256": "685c83eba8fd6a361d9026743af5c756edbf7be1b271aa23d4ddb094aadd6f7e",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766535356,
  "updatedAt": 1788766535356
}
