{
  "format": "dataset-manifest/1",
  "slug": "language-learning-sample-database",
  "version": 2,
  "seed": "flagship:language-learning-sample-database:1k",
  "engine": 2,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "engine": 2,
    "slug": "language-learning-sample-database",
    "name": "Language learning app sample database",
    "tagline": "Learners, courses, lessons, quizzes, progress, streaks of practice and subscriptions.",
    "description": "A language learning app: twelve languages, the courses and lessons taught in them, exercises and quizzes with their answers, and the learners working through them -- every lesson visit recorded with how far they got, every quiz attempt with its score. Learners sign up before they study, most never pay and a few subscribe, and progress clusters where real learners stall, early in a course.",
    "domain": "education",
    "shape": "event-log",
    "useCases": [
      "sql-practice",
      "bi-dashboards",
      "test-fixtures"
    ],
    "keywords": [
      "language learning",
      "edtech",
      "courses",
      "learner progress",
      "sample database"
    ],
    "locale": "en_US",
    "license": "CC0-1.0",
    "version": 1,
    "seed": "flagship:language-learning-sample-database",
    "tables": {
      "achievements": {
        "description": "Rows for the achievements table.",
        "rows": 40,
        "columns": {
          "achievement_id": {
            "kind": "pk"
          },
          "achievement_name": {
            "kind": "title",
            "min": 2,
            "max": 3,
            "pool": [
              "First",
              "Lesson",
              "Week",
              "Streak",
              "Perfect",
              "Score",
              "Night",
              "Owl",
              "Early",
              "Bird",
              "Polyglot",
              "Explorer",
              "Champion",
              "Hundred",
              "Words",
              "Master"
            ]
          },
          "description": {
            "kind": "sentence"
          }
        }
      },
      "audio_resources": {
        "description": "Rows for the audio_resources table.",
        "rows": 900,
        "columns": {
          "audio_id": {
            "kind": "pk"
          },
          "audio_url": {
            "kind": "internet.url"
          },
          "lesson_id": {
            "kind": "fk",
            "ref": "lessons.lesson_id",
            "skew": "long-tail"
          },
          "script": {
            "kind": "sentence",
            "min": 6,
            "max": 24
          }
        }
      },
      "courses": {
        "description": "Rows for the courses table.",
        "rows": 60,
        "columns": {
          "course_id": {
            "kind": "pk"
          },
          "course_name": {
            "kind": "title",
            "min": 2,
            "max": 4,
            "pool": [
              "Everyday",
              "Conversation",
              "Grammar",
              "Travel",
              "Business",
              "Essentials",
              "Beginner",
              "Intermediate",
              "Advanced",
              "Vocabulary",
              "Pronunciation",
              "Reading",
              "Writing",
              "Listening",
              "Culture",
              "Fast Track"
            ]
          },
          "description": {
            "kind": "sentence"
          },
          "difficulty_level": {
            "kind": "enum",
            "values": [
              "beginner",
              "elementary",
              "intermediate",
              "upper_intermediate",
              "advanced"
            ],
            "weights": [
              34,
              26,
              21,
              12,
              7
            ]
          },
          "language_id": {
            "kind": "fk",
            "ref": "languages.language_id",
            "skew": "long-tail"
          }
        }
      },
      "exercise_options": {
        "description": "Rows for the exercise_options table.",
        "rows": 14400,
        "columns": {
          "option_id": {
            "kind": "pk"
          },
          "exercise_id": {
            "kind": "fk",
            "ref": "exercises.exercise_id",
            "skew": "long-tail"
          },
          "is_correct": {
            "kind": "bool",
            "trueRate": 0.25
          },
          "option_text": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "pool": [
              "house",
              "water",
              "friend",
              "yesterday",
              "tomorrow",
              "please",
              "thank you",
              "station",
              "breakfast",
              "city",
              "beautiful",
              "quickly",
              "always",
              "never",
              "teacher",
              "ticket"
            ]
          }
        }
      },
      "exercises": {
        "description": "Rows for the exercises table.",
        "rows": 3600,
        "columns": {
          "exercise_id": {
            "kind": "pk"
          },
          "answer": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "pool": [
              "house",
              "water",
              "friend",
              "yesterday",
              "tomorrow",
              "please",
              "thank you",
              "station",
              "breakfast",
              "city",
              "beautiful",
              "quickly",
              "always",
              "never",
              "teacher",
              "ticket"
            ]
          },
          "exercise_type": {
            "kind": "enum",
            "values": [
              "multiple_choice",
              "fill_in_blank",
              "translation",
              "listening",
              "speaking",
              "matching"
            ],
            "weights": [
              30,
              20,
              18,
              14,
              8,
              10
            ]
          },
          "lesson_id": {
            "kind": "fk",
            "ref": "lessons.lesson_id",
            "skew": "long-tail"
          },
          "question": {
            "kind": "sentence",
            "min": 4,
            "max": 14
          }
        }
      },
      "forum_posts": {
        "description": "Rows for the forum_posts table.",
        "rows": 20,
        "columns": {
          "post_id": {
            "kind": "pk"
          },
          "forum_id": {
            "kind": "fk",
            "ref": "forums.forum_id",
            "skew": "long-tail"
          },
          "post_content": {
            "kind": "paragraph",
            "min": 1,
            "max": 3
          },
          "post_date": {
            "kind": "datetime",
            "after": "user_id.date_joined",
            "withinDays": 400,
            "dayProfile": "waking"
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "forums": {
        "description": "Rows for the forums table.",
        "rows": 12,
        "columns": {
          "forum_id": {
            "kind": "pk"
          },
          "forum_name": {
            "kind": "title",
            "min": 1,
            "max": 3,
            "pool": [
              "Grammar",
              "Help",
              "Study",
              "Partners",
              "Pronunciation",
              "Culture",
              "Travel",
              "Tips",
              "Exam",
              "Prep",
              "Beginners",
              "Corner",
              "Words",
              "Of",
              "The",
              "Day"
            ]
          }
        }
      },
      "friends": {
        "description": "Rows for the friends table.",
        "rows": 125,
        "columns": {
          "friend_id": {
            "kind": "pk"
          },
          "friendship_status": {
            "kind": "enum",
            "values": [
              "accepted",
              "pending",
              "blocked"
            ],
            "weights": [
              78,
              19,
              3
            ]
          },
          "user_id1": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          },
          "user_id2": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "languages": {
        "description": "Rows for the languages table.",
        "rows": 12,
        "columns": {
          "language_id": {
            "kind": "pk"
          },
          "language_name": {
            "kind": "enum",
            "unique": true,
            "values": [
              "Spanish",
              "French",
              "German",
              "Italian",
              "Portuguese",
              "Japanese",
              "Korean",
              "Mandarin Chinese",
              "Arabic",
              "Turkish",
              "Dutch",
              "Swedish"
            ]
          }
        }
      },
      "lessons": {
        "description": "Rows for the lessons table.",
        "rows": 900,
        "columns": {
          "lesson_id": {
            "kind": "pk"
          },
          "content": {
            "kind": "paragraph",
            "min": 2,
            "max": 4
          },
          "course_id": {
            "kind": "fk",
            "ref": "courses.course_id",
            "skew": "long-tail"
          },
          "lesson_name": {
            "kind": "title",
            "min": 2,
            "max": 4,
            "pool": [
              "Greetings",
              "Numbers",
              "Family",
              "Food",
              "Directions",
              "Shopping",
              "Weather",
              "Hobbies",
              "Work",
              "Past Tense",
              "Future Plans",
              "At the Doctor",
              "Hotel",
              "Restaurant",
              "Time",
              "Colors",
              "Questions",
              "Small Talk"
            ]
          },
          "video_url": {
            "kind": "internet.url"
          }
        }
      },
      "messages": {
        "description": "Rows for the messages table.",
        "rows": 30,
        "columns": {
          "message_id": {
            "kind": "pk"
          },
          "message_text": {
            "kind": "sentence"
          },
          "receiver_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          },
          "sender_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          },
          "timestamp": {
            "kind": "datetime",
            "after": "sender_id.date_joined",
            "withinDays": 400
          }
        }
      },
      "payments": {
        "description": "Rows for the payments table.",
        "rows": 20,
        "columns": {
          "payment_id": {
            "kind": "pk"
          },
          "amount": {
            "kind": "enum",
            "values": [
              "6.99",
              "12.99",
              "59.99",
              "119.99"
            ],
            "weights": [
              20,
              35,
              30,
              15
            ],
            "type": "numeric(8,2)"
          },
          "payment_date": {
            "kind": "datetime",
            "after": "user_id.date_joined",
            "withinDays": 365
          },
          "payment_method": {
            "kind": "enum",
            "values": [
              "card",
              "paypal",
              "apple_pay",
              "google_pay"
            ],
            "weights": [
              52,
              18,
              18,
              12
            ]
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "post_replies": {
        "description": "Rows for the post_replies table.",
        "rows": 40,
        "columns": {
          "reply_id": {
            "kind": "pk"
          },
          "post_id": {
            "kind": "fk",
            "ref": "forum_posts.post_id",
            "skew": "long-tail"
          },
          "reply_content": {
            "kind": "sentence",
            "min": 4,
            "max": 30
          },
          "reply_date": {
            "kind": "datetime",
            "after": "post_id.post_date",
            "withinDays": 5,
            "dayProfile": "waking"
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "pronunciation_practices": {
        "description": "Rows for the pronunciation_practices table.",
        "rows": 125,
        "columns": {
          "practice_id": {
            "kind": "pk"
          },
          "audio_id": {
            "kind": "fk",
            "ref": "audio_resources.audio_id",
            "skew": "long-tail"
          },
          "feedback": {
            "kind": "sentence"
          },
          "user_audio_url": {
            "kind": "internet.url"
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "quiz_answers": {
        "description": "Rows for the quiz_answers table.",
        "rows": 4800,
        "columns": {
          "answer_id": {
            "kind": "pk"
          },
          "answer_text": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "pool": [
              "house",
              "water",
              "friend",
              "yesterday",
              "tomorrow",
              "please",
              "thank you",
              "station",
              "breakfast",
              "city",
              "beautiful",
              "quickly",
              "always",
              "never",
              "teacher",
              "ticket"
            ]
          },
          "is_correct": {
            "kind": "bool",
            "trueRate": 0.25
          },
          "question_id": {
            "kind": "fk",
            "ref": "quiz_questions.question_id",
            "skew": "long-tail"
          }
        }
      },
      "quiz_questions": {
        "description": "Rows for the quiz_questions table.",
        "rows": 1200,
        "columns": {
          "question_id": {
            "kind": "pk"
          },
          "question_text": {
            "kind": "sentence",
            "min": 5,
            "max": 16
          },
          "quiz_id": {
            "kind": "fk",
            "ref": "quizzes.quiz_id",
            "skew": "long-tail"
          }
        }
      },
      "quizzes": {
        "description": "Rows for the quizzes table.",
        "rows": 120,
        "columns": {
          "quiz_id": {
            "kind": "pk"
          },
          "course_id": {
            "kind": "fk",
            "ref": "courses.course_id",
            "skew": "long-tail"
          },
          "quiz_name": {
            "kind": "title",
            "min": 2,
            "max": 3,
            "pool": [
              "Unit",
              "Review",
              "Checkpoint",
              "Vocabulary",
              "Grammar",
              "Listening",
              "Final",
              "Weekly",
              "Practice",
              "Challenge",
              "Mid-Course",
              "Placement"
            ]
          }
        }
      },
      "subscriptions": {
        "description": "Rows for the subscriptions table.",
        "rows": 15,
        "columns": {
          "subscription_id": {
            "kind": "pk"
          },
          "end_date": {
            "kind": "datetime",
            "after": "start_date",
            "withinDays": 400
          },
          "start_date": {
            "kind": "datetime",
            "after": "user_id.date_joined",
            "withinDays": 120
          },
          "subscription_type": {
            "kind": "enum",
            "values": [
              "monthly",
              "annual",
              "family",
              "lifetime"
            ],
            "weights": [
              48,
              38,
              10,
              4
            ]
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "user_achievements": {
        "description": "Rows for the user_achievements table.",
        "rows": 125,
        "columns": {
          "user_achievement_id": {
            "kind": "pk"
          },
          "achievement_id": {
            "kind": "fk",
            "ref": "achievements.achievement_id",
            "skew": "long-tail"
          },
          "date_achieved": {
            "kind": "datetime",
            "after": "user_id.date_joined",
            "withinDays": 365
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "user_profiles": {
        "description": "Rows for the user_profiles table.",
        "rows": 125,
        "columns": {
          "profile_id": {
            "kind": "pk"
          },
          "bio": {
            "kind": "sentence"
          },
          "date_of_birth": {
            "kind": "date",
            "from": "1960-01-01",
            "to": "2010-12-31"
          },
          "first_name": {
            "kind": "person.firstName"
          },
          "last_name": {
            "kind": "person.lastName"
          },
          "profile_picture": {
            "kind": "image.url",
            "nullable": true,
            "nullRate": 0.4
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "user_progress": {
        "description": "Rows for the user_progress table.",
        "rows": 1000,
        "columns": {
          "progress_id": {
            "kind": "pk"
          },
          "course_id": {
            "kind": "fk",
            "ref": "courses.course_id",
            "skew": "long-tail"
          },
          "last_accessed": {
            "kind": "datetime",
            "after": "user_id.date_joined",
            "withinDays": 400,
            "dayProfile": "waking"
          },
          "lesson_id": {
            "kind": "fk",
            "ref": "lessons.lesson_id",
            "skew": "long-tail"
          },
          "progress_percentage": {
            "kind": "decimal",
            "min": 0,
            "max": 100,
            "scale": 1,
            "distribution": "long-tail"
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "user_quiz_results": {
        "description": "Rows for the user_quiz_results table.",
        "rows": 150,
        "columns": {
          "result_id": {
            "kind": "pk"
          },
          "attempt_date": {
            "kind": "datetime",
            "after": "user_id.date_joined",
            "withinDays": 400,
            "dayProfile": "waking"
          },
          "quiz_id": {
            "kind": "fk",
            "ref": "quizzes.quiz_id",
            "skew": "long-tail"
          },
          "score": {
            "kind": "int",
            "min": 0,
            "max": 100,
            "distribution": "normal"
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "skew": "long-tail"
          }
        }
      },
      "users": {
        "description": "Rows for the users table.",
        "rows": 125,
        "columns": {
          "user_id": {
            "kind": "pk"
          },
          "date_joined": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2025-06-30",
            "trend": "growing"
          },
          "email": {
            "kind": "internet.email",
            "unique": true
          },
          "password_hash": {
            "kind": "pattern",
            "pattern": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
          },
          "user_type": {
            "kind": "enum",
            "values": [
              "learner",
              "tutor",
              "admin"
            ],
            "weights": [
              94,
              5,
              1
            ]
          },
          "username": {
            "kind": "internet.username",
            "unique": true
          }
        }
      },
      "vocabulary": {
        "description": "Rows for the vocabulary table.",
        "rows": 4000,
        "columns": {
          "vocabulary_id": {
            "kind": "pk"
          },
          "language_id": {
            "kind": "fk",
            "ref": "languages.language_id",
            "skew": "long-tail"
          },
          "part_of_speech": {
            "kind": "enum",
            "values": [
              "noun",
              "verb",
              "adjective",
              "adverb",
              "phrase"
            ],
            "weights": [
              46,
              22,
              18,
              8,
              6
            ]
          },
          "translation": {
            "kind": "words",
            "min": 1,
            "max": 1,
            "pool": [
              "casa",
              "agua",
              "amigo",
              "ayer",
              "mañana",
              "por favor",
              "estación",
              "desayuno",
              "ciudad",
              "hermoso",
              "rápido",
              "siempre",
              "nunca",
              "maestro",
              "billete",
              "ventana"
            ]
          },
          "word": {
            "kind": "words",
            "min": 1,
            "max": 1,
            "pool": [
              "house",
              "water",
              "friend",
              "yesterday",
              "tomorrow",
              "please",
              "station",
              "breakfast",
              "city",
              "beautiful",
              "quickly",
              "always",
              "never",
              "teacher",
              "ticket",
              "window",
              "garden",
              "morning",
              "evening",
              "market"
            ]
          }
        }
      }
    }
  },
  "counts": {
    "achievements": 40,
    "forums": 12,
    "languages": 12,
    "courses": 60,
    "lessons": 900,
    "audio_resources": 900,
    "exercises": 3600,
    "exercise_options": 14400,
    "quizzes": 120,
    "quiz_questions": 1200,
    "quiz_answers": 4800,
    "users": 125,
    "forum_posts": 20,
    "friends": 125,
    "messages": 30,
    "payments": 20,
    "post_replies": 40,
    "pronunciation_practices": 125,
    "subscriptions": 15,
    "user_achievements": 125,
    "user_profiles": 125,
    "user_progress": 1000,
    "user_quiz_results": 150,
    "vocabulary": 4000
  },
  "artifacts": [
    {
      "file": "csv/achievements.csv",
      "format": "csv",
      "table": "achievements",
      "key": "datasets/language-learning-sample-database/v2/csv/achievements.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/achievements.csv",
      "bytes": 3146,
      "sha256": "8bf41ab9e1743e03a6365d885ac631bfe54e85d4095ab70a9910c046bd5c7cdd",
      "rows": 40,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/forums.csv",
      "format": "csv",
      "table": "forums",
      "key": "datasets/language-learning-sample-database/v2/csv/forums.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/forums.csv",
      "bytes": 181,
      "sha256": "0f5c552da7679561fc6a48f8fcbaebbadfc988f67a3d555067634500f8f42527",
      "rows": 12,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/languages.csv",
      "format": "csv",
      "table": "languages",
      "key": "datasets/language-learning-sample-database/v2/csv/languages.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/languages.csv",
      "bytes": 169,
      "sha256": "899f3602cb5276744d40d88d882dab42033574d2b161fc68710a2206567a7553",
      "rows": 12,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/courses.csv",
      "format": "csv",
      "table": "courses",
      "key": "datasets/language-learning-sample-database/v2/csv/courses.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/courses.csv",
      "bytes": 6246,
      "sha256": "d33b2041b7a62bed1d6c7adc369c81f864aadbef0007b36f7080fe60f347062b",
      "rows": 60,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/lessons.csv",
      "format": "csv",
      "table": "lessons",
      "key": "datasets/language-learning-sample-database/v2/csv/lessons.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/lessons.csv",
      "bytes": 177987,
      "sha256": "0671b6e084f84efe0eba9444f64720cef5ee4ac4d1af9428d27648aa8fb70ce2",
      "rows": 900,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/audio_resources.csv",
      "format": "csv",
      "table": "audio_resources",
      "key": "datasets/language-learning-sample-database/v2/csv/audio_resources.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/audio_resources.csv",
      "bytes": 84315,
      "sha256": "31842fcdd6704529409f06bdf2bfb223c4f96840be4900c19213122c0e61f0ad",
      "rows": 900,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/exercises.csv",
      "format": "csv",
      "table": "exercises",
      "key": "datasets/language-learning-sample-database/v2/csv/exercises.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/exercises.csv",
      "bytes": 338568,
      "sha256": "257164c3b4d0d3acdec131f229e077ac6f804c0f9459ba7e3f08e4458ad34582",
      "rows": 3600,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/exercise_options.csv",
      "format": "csv",
      "table": "exercise_options",
      "key": "datasets/language-learning-sample-database/v2/csv/exercise_options.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/exercise_options.csv",
      "bytes": 457422,
      "sha256": "22eec1883170216f14e8c32004f051679627f21a04a90f758b19090da4724553",
      "rows": 14400,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/quizzes.csv",
      "format": "csv",
      "table": "quizzes",
      "key": "datasets/language-learning-sample-database/v2/csv/quizzes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/quizzes.csv",
      "bytes": 3482,
      "sha256": "040386ce6550717a0369548975cbf901816a8a829cd799eb2cc3e106c5fd740a",
      "rows": 120,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/quiz_questions.csv",
      "format": "csv",
      "table": "quiz_questions",
      "key": "datasets/language-learning-sample-database/v2/csv/quiz_questions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/quiz_questions.csv",
      "bytes": 77053,
      "sha256": "c523d2ff872976f0c41ddebded3b514c56208663905b0c90da87ccdf18d5650c",
      "rows": 1200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/quiz_answers.csv",
      "format": "csv",
      "table": "quiz_answers",
      "key": "datasets/language-learning-sample-database/v2/csv/quiz_answers.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/quiz_answers.csv",
      "bytes": 147018,
      "sha256": "11930e6f8f5b4c2193dfb3c2b8c68bde81bfb84025e7e8c88029298065c4de80",
      "rows": 4800,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/language-learning-sample-database/v2/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/users.csv",
      "bytes": 13411,
      "sha256": "cc9ade569c1c8a38fbbe6deb88a2d912f814632a52f82d4046ed1ef872a338aa",
      "rows": 125,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/forum_posts.csv",
      "format": "csv",
      "table": "forum_posts",
      "key": "datasets/language-learning-sample-database/v2/csv/forum_posts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/forum_posts.csv",
      "bytes": 3097,
      "sha256": "9402c07041500ab117f1df1f11fb3275b98edfb8415e6202cf7dc9c3cd068f7e",
      "rows": 20,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/friends.csv",
      "format": "csv",
      "table": "friends",
      "key": "datasets/language-learning-sample-database/v2/csv/friends.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/friends.csv",
      "bytes": 2366,
      "sha256": "6aeb93efd13b5f6bff1cd78c34a985de7f09c9a3ebc4fb06861fd111bea9935b",
      "rows": 125,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/messages.csv",
      "format": "csv",
      "table": "messages",
      "key": "datasets/language-learning-sample-database/v2/csv/messages.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/messages.csv",
      "bytes": 2654,
      "sha256": "50559fe98d6318e2b2dee6fa24227f39f48ab0f27386411719ef03ec42434c51",
      "rows": 30,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/payments.csv",
      "format": "csv",
      "table": "payments",
      "key": "datasets/language-learning-sample-database/v2/csv/payments.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/payments.csv",
      "bytes": 841,
      "sha256": "dfeedb3cce5cb5f5477e59901707928af07176755287d1a77b66197acfd5c278",
      "rows": 20,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/post_replies.csv",
      "format": "csv",
      "table": "post_replies",
      "key": "datasets/language-learning-sample-database/v2/csv/post_replies.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/post_replies.csv",
      "bytes": 3548,
      "sha256": "3ec075a51f4c9e276be2b61fa485bbefdb927327682829294e43acc4aec08e70",
      "rows": 40,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/pronunciation_practices.csv",
      "format": "csv",
      "table": "pronunciation_practices",
      "key": "datasets/language-learning-sample-database/v2/csv/pronunciation_practices.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/pronunciation_practices.csv",
      "bytes": 12095,
      "sha256": "f372025ab4b5d4a3a250440a535f035c26682e3ab5ae54cf5c3c269013fe703c",
      "rows": 125,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/subscriptions.csv",
      "format": "csv",
      "table": "subscriptions",
      "key": "datasets/language-learning-sample-database/v2/csv/subscriptions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/subscriptions.csv",
      "bytes": 874,
      "sha256": "14a0f06fa0cfadf94e48c256919f0983fa09d0eb79aed47ab92f34e05c44e9bc",
      "rows": 15,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_achievements.csv",
      "format": "csv",
      "table": "user_achievements",
      "key": "datasets/language-learning-sample-database/v2/csv/user_achievements.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/user_achievements.csv",
      "bytes": 3744,
      "sha256": "5fa83560f889a9a193ed8b23d13ecb781f9ff996e5e424482a1abbf62251c063",
      "rows": 125,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_profiles.csv",
      "format": "csv",
      "table": "user_profiles",
      "key": "datasets/language-learning-sample-database/v2/csv/user_profiles.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/user_profiles.csv",
      "bytes": 14847,
      "sha256": "67f26b6681ebe3a3eb5c2c8bd42b6164cda8e37cebd268a7fa15c104fed45090",
      "rows": 125,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_progress.csv",
      "format": "csv",
      "table": "user_progress",
      "key": "datasets/language-learning-sample-database/v2/csv/user_progress.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/user_progress.csv",
      "bytes": 38658,
      "sha256": "8da5180908892d29fdfa7c3f2d288c9a6c176cda8ae28e610195b1ca3968a400",
      "rows": 1000,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_quiz_results.csv",
      "format": "csv",
      "table": "user_quiz_results",
      "key": "datasets/language-learning-sample-database/v2/csv/user_quiz_results.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/user_quiz_results.csv",
      "bytes": 4994,
      "sha256": "e4aee49437be358622968a9627a34697f1b136f16c6011f6df5cb4395dca2b9e",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/vocabulary.csv",
      "format": "csv",
      "table": "vocabulary",
      "key": "datasets/language-learning-sample-database/v2/csv/vocabulary.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/csv/vocabulary.csv",
      "bytes": 115980,
      "sha256": "753b279c248f242426cd30e3ba93e9f93dc498c1f11f5302bde95560d6390916",
      "rows": 4000,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "language-learning-sample-database.json",
      "format": "json",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/language-learning-sample-database.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/language-learning-sample-database.json",
      "bytes": 4877348,
      "sha256": "ccf6a161825e4d0f6ed55d50ffa881fa606d12fd694c228fc5cfcfeaf2d05508",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/sql/postgres.sql",
      "bytes": 1938541,
      "sha256": "418b1f0ff4ecb844a049ee1d13e7e5263ac7249fbfe04d93b2230f9f835b961e",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/sql/mysql.sql",
      "bytes": 1863799,
      "sha256": "889b2ba51f1614f0cba2e2907de373faa0bcd159da8cf098a28242b703ee0a6e",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/sql/mssql.sql",
      "bytes": 1916230,
      "sha256": "c40922982ed31a8046b9f5bdfaede6b8378de6e5a677de00a318477b3a3ea22c",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/sql/sqlite.sql",
      "bytes": 1861877,
      "sha256": "370e72c223b1a36ff0f2ee814073f844b8b0a5ad5827a02caa1c924d9b1359f7",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/prisma/seed.ts",
      "bytes": 3927115,
      "sha256": "16b76f2a0aedc4885ec1a95b0304a0d39f858cc260971be9c5da1cd17754e2f8",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/language-learning-sample-database/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/django/fixtures.json",
      "bytes": 6078515,
      "sha256": "dca6e29642bc03eb9e6e2fd95abc8d88ff7de5d12a6e688e5a15ec6abce8ce0b",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "flagship": {
    "sizes": {
      "1k": {
        "rows": 31944,
        "counts": {
          "achievements": 40,
          "forums": 12,
          "languages": 12,
          "courses": 60,
          "lessons": 900,
          "audio_resources": 900,
          "exercises": 3600,
          "exercise_options": 14400,
          "quizzes": 120,
          "quiz_questions": 1200,
          "quiz_answers": 4800,
          "users": 125,
          "forum_posts": 20,
          "friends": 125,
          "messages": 30,
          "payments": 20,
          "post_replies": 40,
          "pronunciation_practices": 125,
          "subscriptions": 15,
          "user_achievements": 125,
          "user_profiles": 125,
          "user_progress": 1000,
          "user_quiz_results": 150,
          "vocabulary": 4000
        },
        "notes": [],
        "downloads": [
          {
            "format": "sql-postgres",
            "label": "PostgreSQL",
            "file": "flagship/1k/postgres.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/1k/postgres.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1k/postgres.sql.gz",
            "bytes": 339105,
            "sha256": "bf6bf25ca813340269c468346ec16ccc41b551f86288968e9a4a94f00fb8d98f",
            "raw": {
              "bytes": 1939910,
              "sha256": "94b72665dfb9b0f65523833e9c38c3842490a1b701c5652fb2d9beb8860c619d"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "sql-mysql",
            "label": "MySQL",
            "file": "flagship/1k/mysql.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/1k/mysql.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1k/mysql.sql.gz",
            "bytes": 335799,
            "sha256": "d8ac475063de28d862e71f066a1f45df9a6f66388cab0628e1995d8d96070be7",
            "raw": {
              "bytes": 1865168,
              "sha256": "bb9832c141317f2651546c24af1690da5d3604c49636bb919ae848131534e1d3"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "sql-sqlite",
            "label": "SQLite",
            "file": "flagship/1k/sqlite.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/1k/sqlite.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1k/sqlite.sql.gz",
            "bytes": 335176,
            "sha256": "845abf36a5527e5173f31b6d6532c08f618927b799b6afc7083f40d8638ced83",
            "raw": {
              "bytes": 1863246,
              "sha256": "a94b96a313f4799dc924064209690c559afb6e21dd3109ac3fe99534360a8af4"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "csv",
            "label": "CSV",
            "file": "flagship/1k/csv.zip",
            "key": "datasets/language-learning-sample-database/v2/flagship/1k/csv.zip",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1k/csv.zip",
            "bytes": 346942,
            "sha256": "41879f277f83c89a7f8ef333575504bf18ad1bbc7769f91ec9775894ea558684",
            "tables": {
              "achievements": {
                "bytes": 3146,
                "sha256": "8bf41ab9e1743e03a6365d885ac631bfe54e85d4095ab70a9910c046bd5c7cdd"
              },
              "audio_resources": {
                "bytes": 84315,
                "sha256": "31842fcdd6704529409f06bdf2bfb223c4f96840be4900c19213122c0e61f0ad"
              },
              "courses": {
                "bytes": 6246,
                "sha256": "d33b2041b7a62bed1d6c7adc369c81f864aadbef0007b36f7080fe60f347062b"
              },
              "exercise_options": {
                "bytes": 457422,
                "sha256": "22eec1883170216f14e8c32004f051679627f21a04a90f758b19090da4724553"
              },
              "exercises": {
                "bytes": 338568,
                "sha256": "257164c3b4d0d3acdec131f229e077ac6f804c0f9459ba7e3f08e4458ad34582"
              },
              "forum_posts": {
                "bytes": 3097,
                "sha256": "9402c07041500ab117f1df1f11fb3275b98edfb8415e6202cf7dc9c3cd068f7e"
              },
              "forums": {
                "bytes": 181,
                "sha256": "0f5c552da7679561fc6a48f8fcbaebbadfc988f67a3d555067634500f8f42527"
              },
              "friends": {
                "bytes": 2366,
                "sha256": "6aeb93efd13b5f6bff1cd78c34a985de7f09c9a3ebc4fb06861fd111bea9935b"
              },
              "languages": {
                "bytes": 169,
                "sha256": "899f3602cb5276744d40d88d882dab42033574d2b161fc68710a2206567a7553"
              },
              "lessons": {
                "bytes": 177987,
                "sha256": "0671b6e084f84efe0eba9444f64720cef5ee4ac4d1af9428d27648aa8fb70ce2"
              },
              "messages": {
                "bytes": 2654,
                "sha256": "50559fe98d6318e2b2dee6fa24227f39f48ab0f27386411719ef03ec42434c51"
              },
              "payments": {
                "bytes": 841,
                "sha256": "dfeedb3cce5cb5f5477e59901707928af07176755287d1a77b66197acfd5c278"
              },
              "post_replies": {
                "bytes": 3548,
                "sha256": "3ec075a51f4c9e276be2b61fa485bbefdb927327682829294e43acc4aec08e70"
              },
              "pronunciation_practices": {
                "bytes": 12095,
                "sha256": "f372025ab4b5d4a3a250440a535f035c26682e3ab5ae54cf5c3c269013fe703c"
              },
              "quiz_answers": {
                "bytes": 147018,
                "sha256": "11930e6f8f5b4c2193dfb3c2b8c68bde81bfb84025e7e8c88029298065c4de80"
              },
              "quiz_questions": {
                "bytes": 77053,
                "sha256": "c523d2ff872976f0c41ddebded3b514c56208663905b0c90da87ccdf18d5650c"
              },
              "quizzes": {
                "bytes": 3482,
                "sha256": "040386ce6550717a0369548975cbf901816a8a829cd799eb2cc3e106c5fd740a"
              },
              "subscriptions": {
                "bytes": 874,
                "sha256": "14a0f06fa0cfadf94e48c256919f0983fa09d0eb79aed47ab92f34e05c44e9bc"
              },
              "user_achievements": {
                "bytes": 3744,
                "sha256": "5fa83560f889a9a193ed8b23d13ecb781f9ff996e5e424482a1abbf62251c063"
              },
              "user_profiles": {
                "bytes": 14847,
                "sha256": "67f26b6681ebe3a3eb5c2c8bd42b6164cda8e37cebd268a7fa15c104fed45090"
              },
              "user_progress": {
                "bytes": 38658,
                "sha256": "8da5180908892d29fdfa7c3f2d288c9a6c176cda8ae28e610195b1ca3968a400"
              },
              "user_quiz_results": {
                "bytes": 4994,
                "sha256": "e4aee49437be358622968a9627a34697f1b136f16c6011f6df5cb4395dca2b9e"
              },
              "users": {
                "bytes": 13411,
                "sha256": "cc9ade569c1c8a38fbbe6deb88a2d912f814632a52f82d4046ed1ef872a338aa"
              },
              "vocabulary": {
                "bytes": 115980,
                "sha256": "753b279c248f242426cd30e3ba93e9f93dc498c1f11f5302bde95560d6390916"
              }
            },
            "contentType": "application/zip"
          }
        ],
        "checks": {
          "postgres": {
            "version": "18.3",
            "ok": true
          },
          "sqlite": {
            "version": "3.53.1",
            "ok": true
          },
          "notRun": [
            {
              "engine": "MySQL",
              "note": "Written from the same rows; not loaded here, no MySQL server runs in the build."
            }
          ]
        },
        "rules": [
          {
            "name": "Every lesson visit comes after the learner signed up",
            "violations": 0
          },
          {
            "name": "Every quiz attempt comes after the learner signed up",
            "violations": 0
          },
          {
            "name": "Progress is a percentage",
            "violations": 0
          },
          {
            "name": "A subscription ends after it starts",
            "violations": 0
          },
          {
            "name": "A reply comes after the post it answers",
            "violations": 0
          },
          {
            "name": "Each language appears once",
            "violations": 0
          }
        ],
        "dirty": {
          "report": {
            "rates": {
              "missing": 0.03,
              "typos": 0.03,
              "outliers": 0.005,
              "duplicates": 0.01
            },
            "tables": {
              "achievements": {
                "duplicates": 0,
                "columns": {
                  "achievement_name": {
                    "missing": 2,
                    "typos": 2,
                    "outliers": 0
                  }
                }
              },
              "languages": {
                "duplicates": 0,
                "columns": {
                  "language_name": {
                    "missing": 0,
                    "typos": 1,
                    "outliers": 0
                  }
                }
              },
              "courses": {
                "duplicates": 0,
                "columns": {
                  "course_name": {
                    "missing": 1,
                    "typos": 2,
                    "outliers": 0
                  },
                  "difficulty_level": {
                    "missing": 0,
                    "typos": 1,
                    "outliers": 0
                  }
                }
              },
              "lessons": {
                "duplicates": 15,
                "columns": {
                  "content": {
                    "missing": 29,
                    "typos": 21,
                    "outliers": 0
                  },
                  "lesson_name": {
                    "missing": 28,
                    "typos": 29,
                    "outliers": 0
                  },
                  "video_url": {
                    "missing": 24,
                    "typos": 25,
                    "outliers": 0
                  }
                }
              },
              "audio_resources": {
                "duplicates": 11,
                "columns": {
                  "audio_url": {
                    "missing": 24,
                    "typos": 21,
                    "outliers": 0
                  },
                  "script": {
                    "missing": 26,
                    "typos": 19,
                    "outliers": 0
                  }
                }
              },
              "exercises": {
                "duplicates": 27,
                "columns": {
                  "answer": {
                    "missing": 101,
                    "typos": 110,
                    "outliers": 0
                  },
                  "exercise_type": {
                    "missing": 96,
                    "typos": 109,
                    "outliers": 0
                  },
                  "question": {
                    "missing": 114,
                    "typos": 110,
                    "outliers": 0
                  }
                }
              },
              "exercise_options": {
                "duplicates": 140,
                "columns": {
                  "is_correct": {
                    "missing": 457,
                    "typos": 0,
                    "outliers": 0
                  },
                  "option_text": {
                    "missing": 440,
                    "typos": 482,
                    "outliers": 0
                  }
                }
              },
              "quizzes": {
                "duplicates": 2,
                "columns": {
                  "quiz_name": {
                    "missing": 4,
                    "typos": 3,
                    "outliers": 0
                  }
                }
              },
              "quiz_questions": {
                "duplicates": 11,
                "columns": {
                  "question_text": {
                    "missing": 40,
                    "typos": 34,
                    "outliers": 0
                  }
                }
              },
              "quiz_answers": {
                "duplicates": 48,
                "columns": {
                  "answer_text": {
                    "missing": 140,
                    "typos": 138,
                    "outliers": 0
                  },
                  "is_correct": {
                    "missing": 135,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "users": {
                "duplicates": 0,
                "columns": {
                  "date_joined": {
                    "missing": 4,
                    "typos": 0,
                    "outliers": 0
                  },
                  "email": {
                    "missing": 2,
                    "typos": 6,
                    "outliers": 0
                  },
                  "password_hash": {
                    "missing": 4,
                    "typos": 3,
                    "outliers": 0
                  },
                  "user_type": {
                    "missing": 3,
                    "typos": 5,
                    "outliers": 0
                  },
                  "username": {
                    "missing": 3,
                    "typos": 1,
                    "outliers": 0
                  }
                }
              },
              "forum_posts": {
                "duplicates": 1,
                "columns": {
                  "post_content": {
                    "missing": 1,
                    "typos": 0,
                    "outliers": 0
                  },
                  "post_date": {
                    "missing": 1,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "friends": {
                "duplicates": 1,
                "columns": {
                  "friendship_status": {
                    "missing": 8,
                    "typos": 4,
                    "outliers": 0
                  }
                }
              },
              "messages": {
                "duplicates": 0,
                "columns": {
                  "timestamp": {
                    "missing": 1,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "payments": {
                "duplicates": 1,
                "columns": {
                  "amount": {
                    "missing": 1,
                    "typos": 0,
                    "outliers": 1
                  },
                  "payment_date": {
                    "missing": 1,
                    "typos": 0,
                    "outliers": 0
                  },
                  "payment_method": {
                    "missing": 1,
                    "typos": 2,
                    "outliers": 0
                  }
                }
              },
              "post_replies": {
                "duplicates": 1,
                "columns": {
                  "reply_content": {
                    "missing": 3,
                    "typos": 0,
                    "outliers": 0
                  },
                  "reply_date": {
                    "missing": 1,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "pronunciation_practices": {
                "duplicates": 4,
                "columns": {
                  "feedback": {
                    "missing": 7,
                    "typos": 6,
                    "outliers": 0
                  },
                  "user_audio_url": {
                    "missing": 6,
                    "typos": 4,
                    "outliers": 0
                  }
                }
              },
              "subscriptions": {
                "duplicates": 0,
                "columns": {
                  "subscription_type": {
                    "missing": 1,
                    "typos": 1,
                    "outliers": 0
                  }
                }
              },
              "user_achievements": {
                "duplicates": 1,
                "columns": {
                  "date_achieved": {
                    "missing": 4,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "user_profiles": {
                "duplicates": 1,
                "columns": {
                  "bio": {
                    "missing": 3,
                    "typos": 2,
                    "outliers": 0
                  },
                  "date_of_birth": {
                    "missing": 5,
                    "typos": 0,
                    "outliers": 0
                  },
                  "first_name": {
                    "missing": 3,
                    "typos": 4,
                    "outliers": 0
                  },
                  "last_name": {
                    "missing": 5,
                    "typos": 3,
                    "outliers": 0
                  },
                  "profile_picture": {
                    "missing": 3,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "user_progress": {
                "duplicates": 10,
                "columns": {
                  "last_accessed": {
                    "missing": 28,
                    "typos": 0,
                    "outliers": 0
                  },
                  "progress_percentage": {
                    "missing": 27,
                    "typos": 0,
                    "outliers": 2
                  }
                }
              },
              "user_quiz_results": {
                "duplicates": 1,
                "columns": {
                  "attempt_date": {
                    "missing": 2,
                    "typos": 0,
                    "outliers": 0
                  },
                  "score": {
                    "missing": 7,
                    "typos": 0,
                    "outliers": 2
                  }
                }
              },
              "vocabulary": {
                "duplicates": 50,
                "columns": {
                  "part_of_speech": {
                    "missing": 119,
                    "typos": 137,
                    "outliers": 0
                  },
                  "translation": {
                    "missing": 135,
                    "typos": 123,
                    "outliers": 0
                  },
                  "word": {
                    "missing": 139,
                    "typos": 117,
                    "outliers": 0
                  }
                }
              }
            },
            "totals": {
              "missing": 2189,
              "typos": 1525,
              "outliers": 5,
              "duplicates": 325
            }
          },
          "downloads": [
            {
              "format": "dirty-sql-postgres",
              "label": "PostgreSQL, with faults",
              "file": "flagship/1k/dirty-postgres.sql.gz",
              "key": "datasets/language-learning-sample-database/v2/flagship/1k/dirty-postgres.sql.gz",
              "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1k/dirty-postgres.sql.gz",
              "bytes": 351137,
              "sha256": "382969a61f82181a6734840ebf6bb54334fdebd6395de39749e04cd139fd66a8",
              "raw": {
                "bytes": 1929267,
                "sha256": "5eac3fdfcfb536340b5346e1cd36e8c525cdb51c8664fd4be4325672190d998c"
              },
              "contentType": "application/gzip"
            },
            {
              "format": "dirty-csv",
              "label": "CSV, with faults",
              "file": "flagship/1k/dirty-csv.zip",
              "key": "datasets/language-learning-sample-database/v2/flagship/1k/dirty-csv.zip",
              "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1k/dirty-csv.zip",
              "bytes": 357946,
              "sha256": "6a517b57e07bbf0eb3e898aa212211c43c5920bb7c42293a68925434454d10e2",
              "tables": {
                "achievements": {
                  "bytes": 3123,
                  "sha256": "8e10eaca993c67337051688e07b03a4572a85a9b4d3f09fe177792a779a417b9"
                },
                "audio_resources": {
                  "bytes": 83277,
                  "sha256": "b3792aac7fb47ed6fbad331c3c6b02bd3027fe9f69d92bc4e2af221574ec0e73"
                },
                "courses": {
                  "bytes": 6231,
                  "sha256": "7b659b56105452b4c7d09a0d3ac8f37cab6353c0cfe67aefa090a105040aa847"
                },
                "exercise_options": {
                  "bytes": 453785,
                  "sha256": "d692d7305a1d8a225513a2aa0fb5ba5645ed9959b485c6005d7c11268d01318c"
                },
                "exercises": {
                  "bytes": 332568,
                  "sha256": "8195ef08e0da8f603f7f09285b62a269df6516b3bf796713f175629740ee5bd9"
                },
                "forum_posts": {
                  "bytes": 3077,
                  "sha256": "adda9aaa142c6445fedb1b031e5abee9a5d8ecd9c1fdf1ef9828e4aeae5db285"
                },
                "forums": {
                  "bytes": 181,
                  "sha256": "0f5c552da7679561fc6a48f8fcbaebbadfc988f67a3d555067634500f8f42527"
                },
                "friends": {
                  "bytes": 2328,
                  "sha256": "0468d4e061fc633594067919de92e5fbe175e22b3d07c7cbba8e80de673de11c"
                },
                "languages": {
                  "bytes": 169,
                  "sha256": "19bf5ae1d91553c53633d0109778c4711882f211568cc1e40eb68671a6466d71"
                },
                "lessons": {
                  "bytes": 175312,
                  "sha256": "dba079dbfb765122fa951310ca799938b9954712c5f30b04367391457921e100"
                },
                "messages": {
                  "bytes": 2635,
                  "sha256": "8bffa123228980718d52ac6f5b8b0163c50d71321354e0b9d37e8350503f0502"
                },
                "payments": {
                  "bytes": 836,
                  "sha256": "3381423f30e1996718a4fef571d6846f0d9396738d8d30344aa8f3b981364a90"
                },
                "post_replies": {
                  "bytes": 3458,
                  "sha256": "30bc5458e9fc1a3fb9750ba9ee67c9d2a28ebcecc2d4eb0fa675c2efa5a45c78"
                },
                "pronunciation_practices": {
                  "bytes": 11957,
                  "sha256": "ec2eae89d7981a3ccd0917964267c1d7ac45b739a35973093a7a4900fab06d10"
                },
                "quiz_answers": {
                  "bytes": 145700,
                  "sha256": "11e4bf882460c3bfbd71564b959a1028d04e358fc583a3d9ff29e99a6ddbab54"
                },
                "quiz_questions": {
                  "bytes": 75581,
                  "sha256": "f5adfcc9ec44ea76165dd76c9745007a4e41ad44695782f2aa3876da9f9d341d"
                },
                "quizzes": {
                  "bytes": 3466,
                  "sha256": "0c49478f6f14c0e881d05471f12e056e4f10e384e558a485a7772e1c3e5b7691"
                },
                "subscriptions": {
                  "bytes": 866,
                  "sha256": "a191dac471db27f0685a6ea508fd8a547e66d93da47d65127651d19c31e0b4cc"
                },
                "user_achievements": {
                  "bytes": 3697,
                  "sha256": "e9bf7d39822a7331b19e62c19a074652bb61cf4c411ada98a0de991920a529c6"
                },
                "user_profiles": {
                  "bytes": 14606,
                  "sha256": "6fcec6e0456163df88f89d2f20746b51df0f569d4cb47e2eeb792f3aefbf2c0d"
                },
                "user_progress": {
                  "bytes": 38427,
                  "sha256": "96f3068a33cd44ac5e076c10020489c5fa7887417d320ce055f321d90066ec7a"
                },
                "user_quiz_results": {
                  "bytes": 4978,
                  "sha256": "6a11d41dda590ff97d2eef4d4bc5f73ee6915c88350a9c7e7c9bb8555fa5b444"
                },
                "users": {
                  "bytes": 13114,
                  "sha256": "168807ea749bdabb5aceec0f0e94848060fce9c95953216512a33403dc9f7cd4"
                },
                "vocabulary": {
                  "bytes": 115385,
                  "sha256": "7be7fd3c9926cc039ef08f3020cd76c9b170e9e869e53682f719c9de53833040"
                }
              },
              "contentType": "application/zip"
            }
          ]
        }
      },
      "100k": {
        "rows": 220044,
        "counts": {
          "achievements": 40,
          "forums": 12,
          "languages": 12,
          "courses": 60,
          "lessons": 900,
          "audio_resources": 900,
          "exercises": 3600,
          "exercise_options": 14400,
          "quizzes": 120,
          "quiz_questions": 1200,
          "quiz_answers": 4800,
          "users": 12500,
          "forum_posts": 2000,
          "friends": 12500,
          "messages": 3000,
          "payments": 2000,
          "post_replies": 4000,
          "pronunciation_practices": 12500,
          "subscriptions": 1500,
          "user_achievements": 12500,
          "user_profiles": 12500,
          "user_progress": 100000,
          "user_quiz_results": 15000,
          "vocabulary": 4000
        },
        "notes": [],
        "downloads": [
          {
            "format": "sql-postgres",
            "label": "PostgreSQL",
            "file": "flagship/100k/postgres.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/100k/postgres.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/100k/postgres.sql.gz",
            "bytes": 4145927,
            "sha256": "0c8c437297024bfdeb678756e3279cad1b257aa9ad77ceb90a269c13dfc4156c",
            "raw": {
              "bytes": 15343446,
              "sha256": "51effc3deafd7adecacf47f83482b665455a1912bddfb0e558298f51e2cbe6e5"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "sql-mysql",
            "label": "MySQL",
            "file": "flagship/100k/mysql.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/100k/mysql.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/100k/mysql.sql.gz",
            "bytes": 4141616,
            "sha256": "62b5b364aa3378c5fb92bf2a74d68393ebe3805a6d9ea1bb1b7e3d91a0929c3a",
            "raw": {
              "bytes": 15268692,
              "sha256": "bbf0694971ff4febd8517d56197b648dd141b62d42622c08387eb5d721a785b3"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "sql-sqlite",
            "label": "SQLite",
            "file": "flagship/100k/sqlite.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/100k/sqlite.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/100k/sqlite.sql.gz",
            "bytes": 4141053,
            "sha256": "62efcc20a7baae84b8d9749055b0afe22c559a6bcc75d42313ca681cd4fa47bb",
            "raw": {
              "bytes": 15266770,
              "sha256": "a4afe3ee4c03c31bd75d1f61ff07671f9ed8768edd7d5251fb3bc8ebba1034d5"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "csv",
            "label": "CSV",
            "file": "flagship/100k/csv.zip",
            "key": "datasets/language-learning-sample-database/v2/flagship/100k/csv.zip",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/100k/csv.zip",
            "bytes": 4176744,
            "sha256": "307aec30aded884f81d4808d5646031cea56d5aca7d736dbdb3fdc4fe036ff13",
            "tables": {
              "achievements": {
                "bytes": 3086,
                "sha256": "64a3cb62d1f8a9b7ecfade2104fd7002893a4eb0baa0c00bfffbdeb66d0342e0"
              },
              "audio_resources": {
                "bytes": 84492,
                "sha256": "c7fdea4b7d83e32d6f8b9f19bc09ea351301c21e4c19e3342f307e50d7f1c77a"
              },
              "courses": {
                "bytes": 6344,
                "sha256": "722ff900b914bac261e0594c80f9d4cf05350f9c219ddeb5bf6aa2be43827cae"
              },
              "exercise_options": {
                "bytes": 456325,
                "sha256": "59c59b6769cd16630451b3df1ae12527d6474c8ba0fd427d49ad670593ca0250"
              },
              "exercises": {
                "bytes": 338736,
                "sha256": "7d7a55ad463628cbdc0bee6fe9a0b7c75e040e42ecea635ba094e703ed78e2e1"
              },
              "forum_posts": {
                "bytes": 332228,
                "sha256": "8bd4ca8f06c32b46abd3d6183689ed101e6abe315c93cd6dba71293c17402e7f"
              },
              "forums": {
                "bytes": 218,
                "sha256": "92ae3e03d0a2cab7747c65f7d98edd9f556c4cc1c63dc79b2ebf1cb1b96ad587"
              },
              "friends": {
                "bytes": 303522,
                "sha256": "1b7641767ad915870f62b80e3f3cd9732aa556c9767ea10f30c437d5c8ea25b9"
              },
              "languages": {
                "bytes": 169,
                "sha256": "ca3203deb09d8bdab62776ae00b06d0c12f8030be7c8ad531c26263028973992"
              },
              "lessons": {
                "bytes": 176564,
                "sha256": "55967646f82ac09167772a630487e4bc0bb6b6b236cb6faf68e50965b0848903"
              },
              "messages": {
                "bytes": 274762,
                "sha256": "133e6c9cfe3930b13695fc46904ca88f224040161c2af45c8107d856cafdbee3"
              },
              "payments": {
                "bytes": 86163,
                "sha256": "99d8bc8d336a8eeef8149a9ac714cd09c331f31a49cf4f6eb904a5fbb404fa0a"
              },
              "post_replies": {
                "bytes": 363816,
                "sha256": "50449915b49f6717f77a41c4055a41a9ffaa0ad85dcf479b9f9752fdcaa8b34a"
              },
              "pronunciation_practices": {
                "bytes": 1245696,
                "sha256": "3296bb1f073e6eb8b8691103763cec896c14123ede595eca3167960cf09943d9"
              },
              "quiz_answers": {
                "bytes": 146997,
                "sha256": "3668314082b33864a9d8e5cb02e13c794c0b3dda5a34ea1a525b28cc80253117"
              },
              "quiz_questions": {
                "bytes": 77574,
                "sha256": "c8200d9c680a058942fdeaa60addfce83ac0a26e12347b05e299f0474e1bf1ed"
              },
              "quizzes": {
                "bytes": 3452,
                "sha256": "4645866b2e09e1a1f5ffad22c66c1655ea09741482af38a4494dd363eec92cc6"
              },
              "subscriptions": {
                "bytes": 86392,
                "sha256": "8c094bf72995a110371c139b3256cbcb0465c1a864f588eeb58261092dc98c27"
              },
              "user_achievements": {
                "bytes": 416852,
                "sha256": "54e5009d756216f6e698cc1f4c702aeab73025f78f508030429c50f2022f2b5c"
              },
              "user_profiles": {
                "bytes": 1505622,
                "sha256": "c2731ff9dda94a77d958d865a1424f34842ce0967b030fbdba145d470b5c885b"
              },
              "user_progress": {
                "bytes": 4246836,
                "sha256": "5f1c1ce56c95399a05e04541aaffef9e9c8b4d17dc41c1f2c9c390caa1057826"
              },
              "user_quiz_results": {
                "bytes": 551744,
                "sha256": "02b13bd67ddc4899a6f8c9f612cc5b5ece79d1c9f61d815a1610079ff36f26ee"
              },
              "users": {
                "bytes": 1365484,
                "sha256": "fef919420e8b68544cfcdb1449a35e45ea380e6440269d8abdbf8f3fa960e145"
              },
              "vocabulary": {
                "bytes": 116055,
                "sha256": "b69a7df31ea61ce8a4c6ed91ce7867fc57fb4ffa1014a55639a6a39438fc596c"
              }
            },
            "contentType": "application/zip"
          }
        ],
        "checks": {
          "postgres": {
            "version": "18.3",
            "ok": true
          },
          "sqlite": {
            "version": "3.53.1",
            "ok": true
          },
          "notRun": [
            {
              "engine": "MySQL",
              "note": "Written from the same rows; not loaded here, no MySQL server runs in the build."
            }
          ]
        },
        "rules": [
          {
            "name": "Every lesson visit comes after the learner signed up",
            "violations": 0
          },
          {
            "name": "Every quiz attempt comes after the learner signed up",
            "violations": 0
          },
          {
            "name": "Progress is a percentage",
            "violations": 0
          },
          {
            "name": "A subscription ends after it starts",
            "violations": 0
          },
          {
            "name": "A reply comes after the post it answers",
            "violations": 0
          },
          {
            "name": "Each language appears once",
            "violations": 0
          }
        ],
        "dirty": {
          "report": {
            "rates": {
              "missing": 0.03,
              "typos": 0.03,
              "outliers": 0.005,
              "duplicates": 0.01
            },
            "tables": {
              "achievements": {
                "duplicates": 0,
                "columns": {
                  "achievement_name": {
                    "missing": 3,
                    "typos": 1,
                    "outliers": 0
                  },
                  "description": {
                    "missing": 2,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "courses": {
                "duplicates": 0,
                "columns": {
                  "course_name": {
                    "missing": 1,
                    "typos": 3,
                    "outliers": 0
                  },
                  "description": {
                    "missing": 3,
                    "typos": 4,
                    "outliers": 0
                  },
                  "difficulty_level": {
                    "missing": 2,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "lessons": {
                "duplicates": 10,
                "columns": {
                  "content": {
                    "missing": 26,
                    "typos": 30,
                    "outliers": 0
                  },
                  "lesson_name": {
                    "missing": 32,
                    "typos": 34,
                    "outliers": 0
                  },
                  "video_url": {
                    "missing": 25,
                    "typos": 31,
                    "outliers": 0
                  }
                }
              },
              "audio_resources": {
                "duplicates": 10,
                "columns": {
                  "audio_url": {
                    "missing": 32,
                    "typos": 23,
                    "outliers": 0
                  },
                  "script": {
                    "missing": 19,
                    "typos": 24,
                    "outliers": 0
                  }
                }
              },
              "exercises": {
                "duplicates": 35,
                "columns": {
                  "answer": {
                    "missing": 103,
                    "typos": 102,
                    "outliers": 0
                  },
                  "exercise_type": {
                    "missing": 98,
                    "typos": 96,
                    "outliers": 0
                  },
                  "question": {
                    "missing": 99,
                    "typos": 113,
                    "outliers": 0
                  }
                }
              },
              "exercise_options": {
                "duplicates": 154,
                "columns": {
                  "is_correct": {
                    "missing": 417,
                    "typos": 0,
                    "outliers": 0
                  },
                  "option_text": {
                    "missing": 444,
                    "typos": 407,
                    "outliers": 0
                  }
                }
              },
              "quizzes": {
                "duplicates": 0,
                "columns": {
                  "quiz_name": {
                    "missing": 2,
                    "typos": 1,
                    "outliers": 0
                  }
                }
              },
              "quiz_questions": {
                "duplicates": 9,
                "columns": {
                  "question_text": {
                    "missing": 28,
                    "typos": 24,
                    "outliers": 0
                  }
                }
              },
              "quiz_answers": {
                "duplicates": 51,
                "columns": {
                  "answer_text": {
                    "missing": 150,
                    "typos": 143,
                    "outliers": 0
                  },
                  "is_correct": {
                    "missing": 138,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "users": {
                "duplicates": 135,
                "columns": {
                  "date_joined": {
                    "missing": 375,
                    "typos": 0,
                    "outliers": 0
                  },
                  "email": {
                    "missing": 374,
                    "typos": 377,
                    "outliers": 0
                  },
                  "password_hash": {
                    "missing": 366,
                    "typos": 408,
                    "outliers": 0
                  },
                  "user_type": {
                    "missing": 344,
                    "typos": 368,
                    "outliers": 0
                  },
                  "username": {
                    "missing": 389,
                    "typos": 372,
                    "outliers": 0
                  }
                }
              },
              "forum_posts": {
                "duplicates": 19,
                "columns": {
                  "post_content": {
                    "missing": 55,
                    "typos": 53,
                    "outliers": 0
                  },
                  "post_date": {
                    "missing": 60,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "friends": {
                "duplicates": 130,
                "columns": {
                  "friendship_status": {
                    "missing": 379,
                    "typos": 399,
                    "outliers": 0
                  }
                }
              },
              "messages": {
                "duplicates": 29,
                "columns": {
                  "message_text": {
                    "missing": 94,
                    "typos": 97,
                    "outliers": 0
                  },
                  "timestamp": {
                    "missing": 92,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "payments": {
                "duplicates": 19,
                "columns": {
                  "amount": {
                    "missing": 59,
                    "typos": 0,
                    "outliers": 12
                  },
                  "payment_date": {
                    "missing": 40,
                    "typos": 0,
                    "outliers": 0
                  },
                  "payment_method": {
                    "missing": 47,
                    "typos": 49,
                    "outliers": 0
                  }
                }
              },
              "post_replies": {
                "duplicates": 33,
                "columns": {
                  "reply_content": {
                    "missing": 129,
                    "typos": 118,
                    "outliers": 0
                  },
                  "reply_date": {
                    "missing": 142,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "pronunciation_practices": {
                "duplicates": 121,
                "columns": {
                  "feedback": {
                    "missing": 356,
                    "typos": 366,
                    "outliers": 0
                  },
                  "user_audio_url": {
                    "missing": 402,
                    "typos": 358,
                    "outliers": 0
                  }
                }
              },
              "subscriptions": {
                "duplicates": 17,
                "columns": {
                  "end_date": {
                    "missing": 42,
                    "typos": 0,
                    "outliers": 0
                  },
                  "start_date": {
                    "missing": 48,
                    "typos": 0,
                    "outliers": 0
                  },
                  "subscription_type": {
                    "missing": 45,
                    "typos": 44,
                    "outliers": 0
                  }
                }
              },
              "user_achievements": {
                "duplicates": 129,
                "columns": {
                  "date_achieved": {
                    "missing": 368,
                    "typos": 0,
                    "outliers": 0
                  }
                }
              },
              "user_profiles": {
                "duplicates": 115,
                "columns": {
                  "bio": {
                    "missing": 395,
                    "typos": 396,
                    "outliers": 0
                  },
                  "date_of_birth": {
                    "missing": 389,
                    "typos": 0,
                    "outliers": 0
                  },
                  "first_name": {
                    "missing": 382,
                    "typos": 364,
                    "outliers": 0
                  },
                  "last_name": {
                    "missing": 376,
                    "typos": 397,
                    "outliers": 0
                  },
                  "profile_picture": {
                    "missing": 202,
                    "typos": 223,
                    "outliers": 0
                  }
                }
              },
              "user_progress": {
                "duplicates": 973,
                "columns": {
                  "last_accessed": {
                    "missing": 3033,
                    "typos": 0,
                    "outliers": 0
                  },
                  "progress_percentage": {
                    "missing": 2975,
                    "typos": 0,
                    "outliers": 453
                  }
                }
              },
              "user_quiz_results": {
                "duplicates": 131,
                "columns": {
                  "attempt_date": {
                    "missing": 456,
                    "typos": 0,
                    "outliers": 0
                  },
                  "score": {
                    "missing": 468,
                    "typos": 0,
                    "outliers": 52
                  }
                }
              },
              "vocabulary": {
                "duplicates": 41,
                "columns": {
                  "part_of_speech": {
                    "missing": 116,
                    "typos": 122,
                    "outliers": 0
                  },
                  "translation": {
                    "missing": 119,
                    "typos": 131,
                    "outliers": 0
                  },
                  "word": {
                    "missing": 125,
                    "typos": 119,
                    "outliers": 0
                  }
                }
              }
            },
            "totals": {
              "missing": 14866,
              "typos": 5797,
              "outliers": 517,
              "duplicates": 2161
            }
          },
          "downloads": [
            {
              "format": "dirty-sql-postgres",
              "label": "PostgreSQL, with faults",
              "file": "flagship/100k/dirty-postgres.sql.gz",
              "key": "datasets/language-learning-sample-database/v2/flagship/100k/dirty-postgres.sql.gz",
              "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/100k/dirty-postgres.sql.gz",
              "bytes": 4177846,
              "sha256": "efc352682bd889b6a01e7d783c3af280b5c4352e6eb7b1eff4440a77e2b68a4a",
              "raw": {
                "bytes": 15279563,
                "sha256": "7a05b89191f04d11bbdd6c030b574dad291d851e60bcf6271339ecad268dfedc"
              },
              "contentType": "application/gzip"
            },
            {
              "format": "dirty-csv",
              "label": "CSV, with faults",
              "file": "flagship/100k/dirty-csv.zip",
              "key": "datasets/language-learning-sample-database/v2/flagship/100k/dirty-csv.zip",
              "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/100k/dirty-csv.zip",
              "bytes": 4195600,
              "sha256": "b709250a397bdd8b73dd024a467f7572233aec892b6c8c8354c8caadb260a5e0",
              "tables": {
                "achievements": {
                  "bytes": 2939,
                  "sha256": "a73bb0551e2ac6671861ef888aab36555dde486012bc1ce99597fb23e6b5b085"
                },
                "audio_resources": {
                  "bytes": 83537,
                  "sha256": "c09f053954efb0ffdd815e4deb60b46d8df40982ea242782ce38510e418168ea"
                },
                "courses": {
                  "bytes": 6127,
                  "sha256": "a6822be6775a69c7aff49aa778cff179f25fc0ed296554b240240fbb9796be99"
                },
                "exercise_options": {
                  "bytes": 453112,
                  "sha256": "be74bc49adc731e8e73d0d8790fa570a357b4b710b31b3e429c255b7a0b11e35"
                },
                "exercises": {
                  "bytes": 333874,
                  "sha256": "5417db74dd7a6815c25363aab0877182cacf2068f233a2fb720411f659d3fdfd"
                },
                "forum_posts": {
                  "bytes": 327007,
                  "sha256": "c80773cb7ad28b727c0e7a1f5bae064ac8cb568a27c4e825dcef775571c76776"
                },
                "forums": {
                  "bytes": 218,
                  "sha256": "92ae3e03d0a2cab7747c65f7d98edd9f556c4cc1c63dc79b2ebf1cb1b96ad587"
                },
                "friends": {
                  "bytes": 304387,
                  "sha256": "e7f3e6d050710db2323b0dd2f097c66130d36be6e7eeeadd1f06bc42ba77d939"
                },
                "languages": {
                  "bytes": 169,
                  "sha256": "ca3203deb09d8bdab62776ae00b06d0c12f8030be7c8ad531c26263028973992"
                },
                "lessons": {
                  "bytes": 173565,
                  "sha256": "833f2f51ac7444042902ee49c69b194cf94f76e70bbb9da1dba6d9191130b5c3"
                },
                "messages": {
                  "bytes": 270450,
                  "sha256": "81a4dddea719d7d1419f7b29d4f4cae0a04b9c3a119e3a655cb70feb94ba8e4f"
                },
                "payments": {
                  "bytes": 85724,
                  "sha256": "048f893b5c13d6da9d0e466aaed22b8d66ac8a36e8c8b48a9f678d09a37c6493"
                },
                "post_replies": {
                  "bytes": 357149,
                  "sha256": "3bf1b124c7902d99e65f3d6ce833cbc9f28c082c42786572b43ada3db64156b7"
                },
                "pronunciation_practices": {
                  "bytes": 1227288,
                  "sha256": "005ac6dddc57cca4b1673b3a0bfd9cbb3ee3f15cb942487c44b32ecc53e41a8e"
                },
                "quiz_answers": {
                  "bytes": 145963,
                  "sha256": "e0c6b8550f65ef51e328a43530d7affe9f884014f6219f9b1181caa7e40574d1"
                },
                "quiz_questions": {
                  "bytes": 76631,
                  "sha256": "3cca86bec2512495ea2adce1432ca523e37a6b6009b12669c101461e7f60adee"
                },
                "quizzes": {
                  "bytes": 3411,
                  "sha256": "223fad37229700b72bfaf6b9213c7c45945d3e162c8ce9e8b57017af0e213884"
                },
                "subscriptions": {
                  "bytes": 85468,
                  "sha256": "a56f59efd203732fe4679db3a4a53a5214614e2f31cdb0723d97cab68c570655"
                },
                "user_achievements": {
                  "bytes": 414250,
                  "sha256": "815c3691e1ff6f6888db7829085ef897abae3646f74aed57bd1bd6217f5e432c"
                },
                "user_profiles": {
                  "bytes": 1481510,
                  "sha256": "d06e7d90e47f9baf4ce1a9df5ab258757ca63a83b26046233ed4ed6de9983760"
                },
                "user_progress": {
                  "bytes": 4220439,
                  "sha256": "2c90281b8f4d7d5cdb186d17e41db063a917162a3a2be2e63deaf6d8fa158c07"
                },
                "user_quiz_results": {
                  "bytes": 546968,
                  "sha256": "53d96f4c62c7133bc8eab8ba8f6a0eaf502ca8bbec315bcab0d04e97dfbce6de"
                },
                "users": {
                  "bytes": 1345227,
                  "sha256": "02a30dd7dd8ee5680f263b168871721ebeecc262687d2eac357d56e46595e8ac"
                },
                "vocabulary": {
                  "bytes": 115530,
                  "sha256": "1a33ec42558be399061154e27ab1456020ceb518b94a0e92c942af010b900e8a"
                }
              },
              "contentType": "application/zip"
            }
          ]
        }
      },
      "1m": {
        "rows": 1930044,
        "counts": {
          "achievements": 40,
          "forums": 12,
          "languages": 12,
          "courses": 60,
          "lessons": 900,
          "audio_resources": 900,
          "exercises": 3600,
          "exercise_options": 14400,
          "quizzes": 120,
          "quiz_questions": 1200,
          "quiz_answers": 4800,
          "users": 125000,
          "forum_posts": 20000,
          "friends": 125000,
          "messages": 30000,
          "payments": 20000,
          "post_replies": 40000,
          "pronunciation_practices": 125000,
          "subscriptions": 15000,
          "user_achievements": 125000,
          "user_profiles": 125000,
          "user_progress": 1000000,
          "user_quiz_results": 150000,
          "vocabulary": 4000
        },
        "notes": [],
        "downloads": [
          {
            "format": "sql-postgres",
            "label": "PostgreSQL",
            "file": "flagship/1m/postgres.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/1m/postgres.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1m/postgres.sql.gz",
            "bytes": 39877631,
            "sha256": "f0219e691b756d20c1701680a44998f41995f34d4d31d08b4bc21d4d7a3f2048",
            "raw": {
              "bytes": 140996513,
              "sha256": "9ad69e73f9768c042f49c86bc0cb4f53c3604db4a286040f044729bff39a18ef"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "sql-mysql",
            "label": "MySQL",
            "file": "flagship/1m/mysql.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/1m/mysql.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1m/mysql.sql.gz",
            "bytes": 39873016,
            "sha256": "0ab9fc1d44d73cbac764e4478ae7e984d45274ffdd53d4b96edaa4e7d9a3cd04",
            "raw": {
              "bytes": 140921762,
              "sha256": "6078f6fc900dbe89018708cc5ef93b9257390b0221e69d722efac246f7a420a5"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "sql-sqlite",
            "label": "SQLite",
            "file": "flagship/1m/sqlite.sql.gz",
            "key": "datasets/language-learning-sample-database/v2/flagship/1m/sqlite.sql.gz",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1m/sqlite.sql.gz",
            "bytes": 39872502,
            "sha256": "c2cef7d331761b6ed5e20279290c19a13b6e22cb22e475290aa401f1cd1223a9",
            "raw": {
              "bytes": 140919840,
              "sha256": "32f2f55c1883b7b83516f664fb067e5d619ef2205257c2585f793a319ea46fd8"
            },
            "contentType": "application/gzip"
          },
          {
            "format": "csv",
            "label": "CSV",
            "file": "flagship/1m/csv.zip",
            "key": "datasets/language-learning-sample-database/v2/flagship/1m/csv.zip",
            "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/language-learning-sample-database/v2/flagship/1m/csv.zip",
            "bytes": 40441089,
            "sha256": "3fcf4515e56eeff2bfc97151fb42d9c03e453b9a9b1b4240395d8ab74b93fa23",
            "tables": {
              "achievements": {
                "bytes": 3042,
                "sha256": "549b93667d9aa4c32ae5c8e89e490386cf79f0941ca0d96825042091e74f76df"
              },
              "audio_resources": {
                "bytes": 84765,
                "sha256": "861a5ef0ab02033fe25143d7011a70a488a58aef9f6a3243f9c58f012e61e395"
              },
              "courses": {
                "bytes": 6204,
                "sha256": "ff1ceb0c68f6c8b899f7b47f0935cf800391c688f3a1978b7c0fb71a5f51f120"
              },
              "exercise_options": {
                "bytes": 456554,
                "sha256": "38e6ab8baf3a6355f33fb164ee0b291bc75724d5fae3a86c89cefe2648c2d668"
              },
              "exercises": {
                "bytes": 339568,
                "sha256": "3f19053b96b7dd9a1e46cecfd5a7cad3d16ef5ce42268b085b9e5afb205133d9"
              },
              "forum_posts": {
                "bytes": 3348896,
                "sha256": "e55d1ea928053ea9244204af71fdb67b7e6761ca459fd46f24ed48a0ba4d5f11"
              },
              "forums": {
                "bytes": 239,
                "sha256": "850e57d325ec2a918dc92b6c04866fcb2bc5664701b405a35fd53b94b6b8f09a"
              },
              "friends": {
                "bytes": 3411168,
                "sha256": "7e0dbd349f56cf8e3e3478910991ae681161071657898f27aaf08456ca499b01"
              },
              "languages": {
                "bytes": 169,
                "sha256": "585d666ced64c8e31721b1d891fb984a13a9239f53615c45928e9d96351a4b3b"
              },
              "lessons": {
                "bytes": 176759,
                "sha256": "14b007ff32b521238fdb8f28dc6e3a4dbfc40ecb0dfe989cc98c6918bdec3a4d"
              },
              "messages": {
                "bytes": 2836006,
                "sha256": "22f1d2b0d0a5e72139aa322fc22665dc9cbee8c5c85233ac327ec4ee11ec8ba7"
              },
              "payments": {
                "bytes": 901984,
                "sha256": "6f5cf5f836be66875d64bd221e82ad9dc7294977a797d5e57f7998279bb239a1"
              },
              "post_replies": {
                "bytes": 3753789,
                "sha256": "0b41c0fbf9b6a4320718bb68191a555176aa28cd39128203dad2f7db0db3c472"
              },
              "pronunciation_practices": {
                "bytes": 12716838,
                "sha256": "4e0bdcd5059aa2a648ad1cd310bfcb3b3316aa847c05d187836a628311c64f28"
              },
              "quiz_answers": {
                "bytes": 146748,
                "sha256": "b6ede7bd715ddf740bee7295f4ca315f7e9f571044e0113dcfd2969001acdfc0"
              },
              "quiz_questions": {
                "bytes": 76786,
                "sha256": "ecb07d9323db5c5aacc778a295b56c25bf8476b52f48fef3726a177db87990f8"
              },
              "quizzes": {
                "bytes": 3397,
                "sha256": "e6160e8ae4e41525ec5864dba2d2628e722b249d5490f8650aaa25e64184d851"
              },
              "subscriptions": {
                "bytes": 892639,
                "sha256": "64d0a8125584f8b484fb66b1279800729c26cc51a1990c2696d570f991a7e860"
              },
              "user_achievements": {
                "bytes": 4416823,
                "sha256": "57722a4c7dd6f72a3adbaf3724cb253662da733abca2df5cb162ff8144b30ea8"
              },
              "user_profiles": {
                "bytes": 15312966,
                "sha256": "b2e9822fd09f45ae5fead9d5bf26717eec3e008f5ab8a58412de436ad79c0b4a"
              },
              "user_progress": {
                "bytes": 44451802,
                "sha256": "4cd0f4d3643907ce9e18e4c3295023dc7b93653ab84bf0544d65d55c86f79201"
              },
              "user_quiz_results": {
                "bytes": 5816048,
                "sha256": "f33fca2eafb3edfcc6d8e3dc0450ab75eb23f7468e43fa1e338bca007d52c8fc"
              },
              "users": {
                "bytes": 13778735,
                "sha256": "5320d7c2d70910ba9f6a1899bf492f01fa28e5ba4df932ecc58d0730420c75c3"
              },
              "vocabulary": {
                "bytes": 116169,
                "sha256": "8c1911f933bf4442b65f793e0b2849806f24a5a722f0f3abf8779cf326a199bf"
              }
            },
            "contentType": "application/zip"
          }
        ],
        "checks": {
          "postgres": {
            "version": "18.3",
            "ok": true
          },
          "sqlite": {
            "version": "3.53.1",
            "ok": true
          },
          "notRun": [
            {
              "engine": "MySQL",
              "note": "Written from the same rows; not loaded here, no MySQL server runs in the build."
            }
          ]
        },
        "rules": [
          {
            "name": "Every lesson visit comes after the learner signed up",
            "violations": 0
          },
          {
            "name": "Every quiz attempt comes after the learner signed up",
            "violations": 0
          },
          {
            "name": "Progress is a percentage",
            "violations": 0
          },
          {
            "name": "A subscription ends after it starts",
            "violations": 0
          },
          {
            "name": "A reply comes after the post it answers",
            "violations": 0
          },
          {
            "name": "Each language appears once",
            "violations": 0
          }
        ]
      }
    },
    "rules": [
      {
        "name": "Every lesson visit comes after the learner signed up",
        "sql": "SELECT count(*) AS violations FROM user_progress up JOIN users u ON u.user_id = up.user_id WHERE up.last_accessed < u.date_joined"
      },
      {
        "name": "Every quiz attempt comes after the learner signed up",
        "sql": "SELECT count(*) AS violations FROM user_quiz_results r JOIN users u ON u.user_id = r.user_id WHERE r.attempt_date < u.date_joined"
      },
      {
        "name": "Progress is a percentage",
        "sql": "SELECT count(*) AS violations FROM user_progress WHERE progress_percentage < 0 OR progress_percentage > 100"
      },
      {
        "name": "A subscription ends after it starts",
        "sql": "SELECT count(*) AS violations FROM subscriptions WHERE end_date < start_date"
      },
      {
        "name": "A reply comes after the post it answers",
        "sql": "SELECT count(*) AS violations FROM post_replies r JOIN forum_posts p ON p.post_id = r.post_id WHERE r.reply_date < p.post_date"
      },
      {
        "name": "Each language appears once",
        "sql": "SELECT count(*) - count(DISTINCT language_name) AS violations FROM languages"
      }
    ]
  },
  "publishedAt": 1791242568297,
  "updatedAt": 1791301483751
}
