{
  "format": "dataset-manifest/1",
  "slug": "culinary-creations",
  "version": 1,
  "seed": "culinary-creations:1",
  "spec": {
    "format": "dataset/1",
    "slug": "culinary-creations",
    "name": "Culinary Creations",
    "tagline": "Recipes, ingredients, preparation methods, and tags from diverse culinary creations in restaurants.",
    "description": "Culinary Creations is a synthetic dataset designed for restaurants and food enthusiasts, focusing on the art of recipe creation. The dataset captures a variety of recipes along with their ingredients, preparation methods, and descriptive tags. It provides valuable insights into popular culinary trends, allowing users to discover how certain ingredients cluster in trending recipes while highlighting rare ingredients that may be featured in gourmet options. This dataset is particularly useful for developers and data analysts looking to practice SQL queries, seed ORM systems, or analyze culinary trends. It features six interrelated tables, each representing a unique aspect of culinary creativity, making it an excellent resource for learning and exploration in the culinary domain.",
    "domain": "restaurants",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "recipes",
      "ingredients",
      "preparation",
      "tags",
      "culinary",
      "food",
      "restaurant",
      "data"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "recipes": {
        "description": "This table contains unique recipes with their names and descriptions. Each recipe can be linked to multiple ingredients and tags.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each recipe."
          },
          "name": {
            "kind": "words",
            "max": 10,
            "description": "The name of the recipe."
          },
          "description": {
            "kind": "paragraph",
            "max": 250,
            "description": "A brief description of the recipe.",
            "nullable": true
          }
        }
      },
      "ingredients": {
        "description": "This table lists the ingredients available for use in recipes. Each ingredient has a name and a category.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each ingredient."
          },
          "name": {
            "kind": "words",
            "max": 5,
            "description": "The name of the ingredient."
          },
          "category": {
            "kind": "enum",
            "values": [
              "spice",
              "vegetable",
              "fruit",
              "protein",
              "grain"
            ],
            "description": "Category of the ingredient.",
            "nullable": true
          }
        }
      },
      "recipe_ingredients": {
        "description": "This table links recipes to their ingredients, specifying the quantity required for each ingredient in a recipe.",
        "rows": {
          "per": "recipes",
          "via": "recipe_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each recipe-ingredient pairing."
          },
          "recipe_id": {
            "kind": "fk",
            "ref": "recipes.id",
            "description": "Reference to the recipe."
          },
          "ingredient_id": {
            "kind": "fk",
            "ref": "ingredients.id",
            "description": "Reference to the ingredient."
          },
          "quantity": {
            "kind": "decimal",
            "min": 0.1,
            "max": 100,
            "scale": 2,
            "description": "Amount of the ingredient required.",
            "nullable": true
          }
        }
      },
      "preparation_methods": {
        "description": "This table outlines the methods used for preparing each recipe, linking recipes to their preparation steps.",
        "rows": {
          "per": "recipes",
          "via": "recipe_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each preparation method."
          },
          "recipe_id": {
            "kind": "fk",
            "ref": "recipes.id",
            "description": "Reference to the recipe."
          },
          "method": {
            "kind": "words",
            "max": 10,
            "description": "The method of preparation.",
            "nullable": true
          }
        }
      },
      "tags": {
        "description": "This table lists tags that describe various attributes of recipes, such as dietary restrictions or cuisine types.",
        "rows": 30,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each tag."
          },
          "name": {
            "kind": "words",
            "max": 5,
            "description": "The tag name.",
            "nullable": true
          }
        }
      },
      "recipe_tags": {
        "description": "This table connects recipes to tags, allowing for multiple tags to be assigned to each recipe.",
        "rows": {
          "per": "recipes",
          "via": "recipe_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each recipe-tag pairing."
          },
          "recipe_id": {
            "kind": "fk",
            "ref": "recipes.id",
            "description": "Reference to the recipe."
          },
          "tag_id": {
            "kind": "fk",
            "ref": "tags.id",
            "description": "Reference to the tag."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "high-cardinality",
      "nullable"
    ],
    "analysisQuestions": [
      "What are the most common ingredients used in popular recipes?",
      "How do preparation methods vary across different types of cuisine?",
      "Which tags are most frequently associated with gourmet recipes?"
    ],
    "suggestedQueries": [
      {
        "title": "Join recipes with ingredients",
        "sql": "SELECT r.name, i.name FROM recipes r JOIN recipe_ingredients ri ON r.id = ri.recipe_id JOIN ingredients i ON ri.ingredient_id = i.id;",
        "dialect": "postgres"
      },
      {
        "title": "Count ingredients per recipe",
        "sql": "SELECT r.name, COUNT(ri.ingredient_id) as ingredient_count FROM recipes r JOIN recipe_ingredients ri ON r.id = ri.recipe_id GROUP BY r.name;",
        "dialect": "postgres"
      },
      {
        "title": "Find recipes with specific tags",
        "sql": "SELECT r.name FROM recipes r JOIN recipe_tags rt ON r.id = rt.recipe_id JOIN tags t ON rt.tag_id = t.id WHERE t.name = 'vegan';",
        "dialect": "postgres"
      },
      {
        "title": "Aggregate preparation methods by recipe",
        "sql": "SELECT r.name, ARRAY_AGG(pm.method) as methods FROM recipes r JOIN preparation_methods pm ON r.id = pm.recipe_id GROUP BY r.name;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Recipe Development",
        "body": "Chefs and culinary teams can leverage this dataset to explore new recipe combinations and ingredient pairings, allowing them to innovate and create unique dishes that cater to their restaurant's clientele."
      },
      {
        "title": "Dietary Analysis",
        "body": "Nutritionists can utilize the dataset to analyze the nutritional value of recipes based on their ingredients and preparation methods, helping clients make informed dietary choices."
      },
      {
        "title": "Menu Optimization",
        "body": "Restaurant managers can access this dataset to identify trending recipes and ingredients, enabling them to optimize their menus and attract more customers with popular dishes."
      }
    ]
  },
  "counts": {
    "ingredients": 50,
    "recipes": 100,
    "preparation_methods": 145,
    "recipe_ingredients": 223,
    "tags": 30,
    "recipe_tags": 150
  },
  "stats": {
    "recipes": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "name": {
          "nulls": 0,
          "distinct": 100
        },
        "description": {
          "nulls": 14,
          "distinct": 86
        }
      }
    },
    "ingredients": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "name": {
          "nulls": 0,
          "distinct": 50
        },
        "category": {
          "nulls": 5,
          "distinct": 5,
          "min": "fruit",
          "max": "vegetable"
        }
      }
    },
    "recipe_ingredients": {
      "rows": 223,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 223,
          "min": 1,
          "max": 223
        },
        "recipe_id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "ingredient_id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "quantity": {
          "nulls": 23,
          "distinct": 199,
          "min": 0.35,
          "max": 99.21
        }
      }
    },
    "preparation_methods": {
      "rows": 145,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 145,
          "min": 1,
          "max": 145
        },
        "recipe_id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "method": {
          "nulls": 21,
          "distinct": 124
        }
      }
    },
    "tags": {
      "rows": 30,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 30,
          "min": 1,
          "max": 30
        },
        "name": {
          "nulls": 1,
          "distinct": 29
        }
      }
    },
    "recipe_tags": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "recipe_id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "tag_id": {
          "nulls": 0,
          "distinct": 30,
          "min": 1,
          "max": 30
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/ingredients.csv",
      "format": "csv",
      "table": "ingredients",
      "key": "datasets/culinary-creations/v1/csv/ingredients.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/csv/ingredients.csv",
      "bytes": 1773,
      "sha256": "95ce814421ece0d1cf9b0f4c8719b5782a63003fe22171dbde7a949dac4699d5",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/recipes.csv",
      "format": "csv",
      "table": "recipes",
      "key": "datasets/culinary-creations/v1/csv/recipes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/csv/recipes.csv",
      "bytes": 18924,
      "sha256": "af022d8de7c16824099274a22a8739ccf95c1340ec2b0e9b05dba1c17bf11425",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/preparation_methods.csv",
      "format": "csv",
      "table": "preparation_methods",
      "key": "datasets/culinary-creations/v1/csv/preparation_methods.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/csv/preparation_methods.csv",
      "bytes": 6188,
      "sha256": "8eb85e3dc6b86715dbf6f80d2d3c7d23fc37629f8e7cdd23a2021d64b4d849dd",
      "rows": 145,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/recipe_ingredients.csv",
      "format": "csv",
      "table": "recipe_ingredients",
      "key": "datasets/culinary-creations/v1/csv/recipe_ingredients.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/csv/recipe_ingredients.csv",
      "bytes": 3518,
      "sha256": "900a178676e7d18cf4bea308a86e3beaeda217a109123932903efdc26959739d",
      "rows": 223,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/tags.csv",
      "format": "csv",
      "table": "tags",
      "key": "datasets/culinary-creations/v1/csv/tags.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/csv/tags.csv",
      "bytes": 754,
      "sha256": "f5beb1afbaf1f6d969451e9e41e4d927a702bc257dfa1f50af6f66a3a33b64de",
      "rows": 30,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/recipe_tags.csv",
      "format": "csv",
      "table": "recipe_tags",
      "key": "datasets/culinary-creations/v1/csv/recipe_tags.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/csv/recipe_tags.csv",
      "bytes": 1510,
      "sha256": "76869c3ac1ddb641ccb2070e0e2861db11a7ff14ce884d313dedde71b0668f40",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "culinary-creations.json",
      "format": "json",
      "table": null,
      "key": "datasets/culinary-creations/v1/culinary-creations.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/culinary-creations.json",
      "bytes": 81272,
      "sha256": "e72b78ba7b6a01be44ab67b4b46d1986c7ad278f9ade8c3a9a5041e17248f324",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/culinary-creations/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/sql/postgres.sql",
      "bytes": 42341,
      "sha256": "ea43ec3c73705bc1490b25c38d0eb532832d94c5b8d743252df811fcf40b9e86",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/culinary-creations/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/sql/mysql.sql",
      "bytes": 41638,
      "sha256": "b82fd2aa166d81f16646f8e832d67f3c6a79d0cd9917a0c4469a82de5815f49f",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/culinary-creations/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/sql/mssql.sql",
      "bytes": 42496,
      "sha256": "ed1cf10700333caff539bf1ddc29a4902491b0e141237f152b4058e7fb15f780",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/culinary-creations/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/sql/sqlite.sql",
      "bytes": 41359,
      "sha256": "c7b78e480a9e40430b2fba90cc2eee13b7485da287d0231c86f03ef77f5b32ae",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/culinary-creations/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/prisma/seed.ts",
      "bytes": 67173,
      "sha256": "769140c1112e3427271db6093278d86c721bb9fefce1513c1e31425a8516cd0a",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/culinary-creations/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/culinary-creations/v1/django/fixtures.json",
      "bytes": 113283,
      "sha256": "31991b819962ec4ec3724f8fc47c8919f64521e7128ae6c8c7d1988dd03c362f",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766867702,
  "updatedAt": 1788766867702
}
