Modèle de données — Projet Batch-cooking
Documentation du schéma de données de l'application de planification de batch-cooking.
Vue d'ensemble
Le modèle s'articule autour de trois grands pôles :
- Utilisateurs & foyer —
user_profiles, house, diet, allergy, category
- Planification —
planning, planning_item
- Recettes —
recipe, ingredients, step, tech_step, tech_step_mapping, sources
Schéma entité-relation
erDiagram
USER_PROFILES }o--|| HOUSE : "vit dans"
USER_PROFILES }o--|| DIET : "suit"
HOUSE ||--o{ PLANNING : "planifie"
PLANNING ||--o{ PLANNING_ITEM : "contient"
PLANNING_ITEM }o--|| RECIPE : "utilise"
RECIPE }o--|| SOURCES : "vient de"
CATEGORY ||--o{ ALLERGY : "classe"
USER_PROFILES }o--o{ ALLERGY : "a"
RECIPE }o--o{ INGREDIENTS : "compose de"
RECIPE }o--o{ STEP : "compose de"
STEP }o--|| TECH_STEP : "utilise"
TECH_STEP ||--o{ TECH_STEP_MAPPING : "mappe"
INGREDIENTS }o--|| RECIPE : "recette alternative"
USER_PROFILES {
int id PK
string first_name
string last_name
string email
int house_id FK
int diet_id FK
}
HOUSE {
int id PK
string name
}
PLANNING {
int id PK
date start_date
date finish_date
int house_id FK
}
PLANNING_ITEM {
int id PK
int planning_id FK
string week_day
string meal
int recipe_id FK
}
DIET {
int id PK
string name
}
ALLERGY {
int id PK
int cat_id FK
}
CATEGORY {
int id PK
string name
}
INGREDIENTS {
int id PK
string name
string icon
int alternate_recipe FK
}
RECIPE {
int id PK
string name
int source_id FK
string description
string picture
}
STEP {
int id PK
string description
string picture
int order
int tech_step_id FK
}
TECH_STEP {
int id PK
}
TECH_STEP_MAPPING {
int id PK
int tech_step_id FK
string expression
int weight
}
SOURCES {
int id PK
string name
string url
}
(Rendu sur les visualiseurs markdown compatibles mermaid — GitHub, VS Code, Obsidian, etc.)
Tables
user_profiles
| Champ |
Description |
id |
Identifiant |
first_name |
Prénom |
last_name |
Nom |
email |
Email |
house_id |
FK → house |
diet_id |
FK → diet |
house
| Champ |
Description |
id |
Identifiant |
name |
Nom du foyer |
diet
| Champ |
Description |
id |
Identifiant |
name |
Nom du régime alimentaire |
allergy
| Champ |
Description |
id |
Identifiant |
cat_id |
FK → category |
Associée à user_profiles en many-to-many (table de jointure simple, sans champ additionnel).
category
| Champ |
Description |
id |
Identifiant |
name |
Nom de la catégorie |
Table d'énumération, destinée à grandir au fil du projet (portera notamment les nuances liées aux allergies).
planning
| Champ |
Description |
id |
Identifiant |
start_date |
Date de début |
finish_date |
Date de fin |
house_id |
FK → house |
planning_item
| Champ |
Description |
id |
Identifiant |
planning_id |
FK → planning |
week_day |
Jour de la semaine |
meal |
Repas concerné |
recipe_id |
FK → recipe |
recipe
| Champ |
Description |
id |
Identifiant |
name |
Nom de la recette |
source_id |
FK → sources |
description |
Description |
picture |
Image |
Associée à ingredients en many-to-many.
ingredients
| Champ |
Description |
id |
Identifiant |
name |
Nom |
icon |
Icône |
alternate_recipe |
FK → recipe (recette alternative) |
step
| Champ |
Description |
id |
Identifiant |
description |
Description de l'étape |
picture |
Image |
order |
Ordre dans la recette |
tech_step_id |
FK → tech_step |
Associée à recipe en many-to-many.
tech_step
| Champ |
Description |
id |
Identifiant |
tech_step_mapping
| Champ |
Description |
id |
Identifiant |
tech_step_id |
FK → tech_step |
expression |
Expression |
weight |
Poids |
sources
| Champ |
Description |
id |
Identifiant |
name |
Nom de la source |
url |
URL |
Relations
Many-to-one (clés étrangères)
| Table source |
Champ FK |
Table cible |
user_profiles |
house_id |
house |
user_profiles |
diet_id |
diet |
planning |
house_id |
house |
planning_item |
planning_id |
planning |
planning_item |
recipe_id |
recipe |
allergy |
cat_id |
category |
ingredients |
alternate_recipe |
recipe |
recipe |
source_id |
sources |
step |
tech_step_id |
tech_step |
tech_step_mapping |
tech_step_id |
tech_step |
Many-to-many (associations)
| Table A |
Table B |
Détail |
user_profiles |
allergy |
Table de jointure simple |
recipe |
ingredients |
Composition d'une recette |
step |
recipe |
Étapes d'une recette |
Règles de modélisation
- Toute relation qualifiée d'« association » entre deux tables est une relation many-to-many.
category est une table d'énumération, amenée à grandir au fur et à mesure du projet.