{
  "format": "dataset-manifest/1",
  "slug": "curriculum-tree",
  "version": 1,
  "seed": "curriculum-tree:1",
  "spec": {
    "format": "dataset/1",
    "slug": "curriculum-tree",
    "name": "Curriculum Tree",
    "tagline": "A hierarchical dataset modeling educational curricula.",
    "description": "Educators design curricula that structure learning into clear pathways. This dataset models a curriculum as a hierarchical tree, where each programme contains modules, which in turn include units and lessons. Each table's rows link to their respective parent, allowing for a clear understanding of how educational content is organized. The programmes table serves as the top level, with each programme containing multiple modules. Each module can have several units, and each unit comprises various lessons. This structure helps answer questions about how learning is organized, the number of modules within a programme, and the outcomes expected from each lesson. The data is synthetic, providing a safe environment for practice and exploration without real-world implications.",
    "domain": "education",
    "shape": "hierarchical",
    "useCases": [
      "teaching",
      "sql-practice"
    ],
    "keywords": [
      "curriculum",
      "education",
      "hierarchical",
      "learning outcomes",
      "modules",
      "lessons",
      "units"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "programmes": {
        "description": "Each row represents an educational programme, linking to multiple modules. It contains general information about the programme.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the programme."
          },
          "name": {
            "kind": "fullName",
            "description": "The name of the programme."
          },
          "learning_outcomes": {
            "kind": "sentence",
            "description": "The expected learning outcomes for the programme.",
            "nullable": true
          }
        }
      },
      "modules": {
        "description": "Each row represents a module within a programme, linking back to its parent programme. Modules contain units.",
        "rows": {
          "per": "programmes",
          "via": "programme_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the module."
          },
          "programme_id": {
            "kind": "fk",
            "ref": "programmes.id",
            "description": "The ID of the parent programme."
          },
          "name": {
            "kind": "fullName",
            "description": "The name of the module."
          },
          "learning_outcomes": {
            "kind": "sentence",
            "description": "The expected learning outcomes for the module.",
            "nullable": true
          }
        }
      },
      "units": {
        "description": "Each row represents a unit within a module, linking back to its parent module. Units contain lessons.",
        "rows": {
          "per": "modules",
          "via": "module_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the unit."
          },
          "module_id": {
            "kind": "fk",
            "ref": "modules.id",
            "description": "The ID of the parent module."
          },
          "name": {
            "kind": "fullName",
            "description": "The name of the unit."
          },
          "learning_outcomes": {
            "kind": "sentence",
            "description": "The expected learning outcomes for the unit.",
            "nullable": true
          }
        }
      },
      "lessons": {
        "description": "Each row represents a lesson within a unit, linking back to its parent unit. Lessons provide specific learning content.",
        "rows": {
          "per": "units",
          "via": "unit_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the lesson."
          },
          "unit_id": {
            "kind": "fk",
            "ref": "units.id",
            "description": "The ID of the parent unit."
          },
          "name": {
            "kind": "fullName",
            "description": "The name of the lesson."
          },
          "learning_outcomes": {
            "kind": "sentence",
            "description": "The expected learning outcomes for the lesson.",
            "nullable": true
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "nullable",
      "categorical",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What is the average number of modules per programme?",
      "How many lessons are there in the most extensive unit?",
      "What are the common learning outcomes across different modules?",
      "Which programmes have the highest number of units?",
      "How do learning outcomes vary between different lessons?"
    ],
    "suggestedQueries": [
      {
        "title": "Join programmes and modules",
        "sql": "SELECT programmes.name AS programme_name, modules.name AS module_name FROM programmes JOIN modules ON programmes.id = modules.programme_id;",
        "dialect": "postgres"
      },
      {
        "title": "Count modules per programme",
        "sql": "SELECT programmes.name, COUNT(modules.id) AS module_count FROM programmes LEFT JOIN modules ON programmes.id = modules.programme_id GROUP BY programmes.name;",
        "dialect": "postgres"
      },
      {
        "title": "Find units for a specific module",
        "sql": "SELECT modules.name AS module_name, units.name AS unit_name FROM modules JOIN units ON modules.id = units.module_id WHERE modules.name = 'Specific Module';",
        "dialect": "postgres"
      },
      {
        "title": "Aggregate learning outcomes for lessons",
        "sql": "SELECT units.name AS unit_name, STRING_AGG(lessons.learning_outcomes, ', ') AS lesson_outcomes FROM units JOIN lessons ON units.id = lessons.unit_id GROUP BY units.name;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Curriculum Design",
        "body": "Educators can use this dataset to design and structure curricula by analyzing the hierarchical relationships between programmes, modules, units, and lessons. By understanding how each component contributes to the overall learning outcomes, they can create more effective educational pathways."
      },
      {
        "title": "SQL Practice",
        "body": "Developers and data analysts can practice SQL queries on this dataset to gain insights into educational structures. They can join tables, aggregate data, and explore the relationships between different curriculum components, enhancing their data manipulation skills."
      },
      {
        "title": "Learning Outcome Assessment",
        "body": "Administrators can assess the effectiveness of educational programmes by analyzing the learning outcomes at each level. This allows them to identify areas for improvement and ensure that students are achieving the intended educational goals."
      }
    ]
  },
  "counts": {
    "programmes": 100,
    "modules": 228,
    "units": 513,
    "lessons": 1146
  },
  "stats": {
    "programmes": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "name": {
          "nulls": 0,
          "distinct": 100,
          "min": "Amir Wilson",
          "max": "Zara Khan"
        },
        "learning_outcomes": {
          "nulls": 14,
          "distinct": 86
        }
      }
    },
    "modules": {
      "rows": 228,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 228,
          "min": 1,
          "max": 228
        },
        "programme_id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "name": {
          "nulls": 0,
          "distinct": 224,
          "min": "Alice Torres",
          "max": "Zoe Sousa"
        },
        "learning_outcomes": {
          "nulls": 30,
          "distinct": 197
        }
      }
    },
    "units": {
      "rows": 513,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 513,
          "min": 1,
          "max": 513
        },
        "module_id": {
          "nulls": 0,
          "distinct": 228,
          "min": 1,
          "max": 228
        },
        "name": {
          "nulls": 0,
          "distinct": 492,
          "min": "Alice Dubois",
          "max": "Zoe Tanaka"
        },
        "learning_outcomes": {
          "nulls": 50,
          "distinct": 460
        }
      }
    },
    "lessons": {
      "rows": 1146,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 1146,
          "min": 1,
          "max": 1146
        },
        "unit_id": {
          "nulls": 0,
          "distinct": 513,
          "min": 1,
          "max": 513
        },
        "name": {
          "nulls": 0,
          "distinct": 1050,
          "min": "Alice Demir",
          "max": "Zoe Wang"
        },
        "learning_outcomes": {
          "nulls": 110,
          "distinct": 1013
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/programmes.csv",
      "format": "csv",
      "table": "programmes",
      "key": "datasets/curriculum-tree/v1/csv/programmes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/csv/programmes.csv",
      "bytes": 6444,
      "sha256": "9fbcbb248ebab6fc2acef3e333f301c646f887ad568df71379362f83ae71b270",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/modules.csv",
      "format": "csv",
      "table": "modules",
      "key": "datasets/curriculum-tree/v1/csv/modules.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/csv/modules.csv",
      "bytes": 15739,
      "sha256": "81a4e663d37fe7fe1ce07f41ac2c928b6c6c13da57f71f0a59f936dd3b657026",
      "rows": 228,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/units.csv",
      "format": "csv",
      "table": "units",
      "key": "datasets/curriculum-tree/v1/csv/units.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/csv/units.csv",
      "bytes": 36334,
      "sha256": "215b682ec9ab1cacb7bff72d15052c988d965f605092a00f24912c9274e87c5e",
      "rows": 513,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/lessons.csv",
      "format": "csv",
      "table": "lessons",
      "key": "datasets/curriculum-tree/v1/csv/lessons.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/csv/lessons.csv",
      "bytes": 82801,
      "sha256": "413853ab43719270e95099dcb47e33fda28abc6d31bb26c5d745b5aa35c9a3c4",
      "rows": 1146,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "curriculum-tree.json",
      "format": "json",
      "table": null,
      "key": "datasets/curriculum-tree/v1/curriculum-tree.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/curriculum-tree.json",
      "bytes": 318152,
      "sha256": "a0fa631eee07ab5fb816d4f8b141ab56c507af81de938b4c4fab0faaf73a1fd9",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/curriculum-tree/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/sql/postgres.sql",
      "bytes": 169223,
      "sha256": "65096c9fc41e54743ac419d6c1e392c762c051f03f9d0d2f5c3555aacc951b81",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/curriculum-tree/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/sql/mysql.sql",
      "bytes": 168794,
      "sha256": "ab8fb40cc5f5b5658de3595887d79feb1682040765c04159dc9130455cdfeaed",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/curriculum-tree/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/sql/mssql.sql",
      "bytes": 172842,
      "sha256": "1a8921e3e13eceea04b1e6a9b6428e230b6fd7a17650dbef42a3fd2135e7f24c",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/curriculum-tree/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/sql/sqlite.sql",
      "bytes": 168663,
      "sha256": "5474fb5eec523e73fe8d646873995da327318944ce5b81840fc368e3ac46c45a",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/curriculum-tree/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/prisma/seed.ts",
      "bytes": 264396,
      "sha256": "0604c3937c7113ce6fc9989a6c660e1cfbf470f5c2b968751c6cd537a53f5918",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/curriculum-tree/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/curriculum-tree/v1/django/fixtures.json",
      "bytes": 397129,
      "sha256": "d1a3768a941d3f28b4e81bd87f6700e7f2e2a6bec71eea7be16f8281e33e128a",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788734421764,
  "updatedAt": 1788734421764
}
