Laravel 5

Laravel Database conception

Avatar de MourareauMathieu
MourareauMathieu

Bonjour à tous,

J'aurai besoin de votre avis sur mon design de la base de données que je suis entrain de mettre en place sur une futur application.

L'application permet de gérer des aliments, des repas, recettes .. l'utilisateur peut ajouter un aliment qui possède des attribues calories, glucides, lipides ect

j'ai créer une table foods :

Schema::create('foods', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('product_name');
            $table->string('brands')->nullable();
            $table->string('code')->nullable();
            $table->string('image_url')->nullable();
            $table->string('image')->nullable();
            $table->integer('portion')->nullable();
            $table->string('portion_unit')->nullable();
            $table->float('energy_value')->nullable();
            $table->float('carbohydrates_value')->nullable();
            $table->float('fat_value')->nullable();
            $table->float('proteins_value')->nullable();
            $table->string('nutrition_grade')->nullable();
            $table->timestamps();
        });

j'ai créé une table user_food qui me permet de stocker les aliments favoris de la personne :

Schema::create('user_food', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('user_id')->unsigned()->nullable();
            $table->integer('food_id')->unsigned()->nullable();
            $table->timestamps();
        });

Pour les repas j'ai créé la table meals qui permet de stocker le repas et de stocker les valeurs totals nutritionnels des aliments à l'intérieur du repas;

Schema::create('meals', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->text('description')->nullable();
            $table->string('category');
            $table->integer('nb_portion')->default(1);
            $table->float('energy_value')->nullable()->default(0);
            $table->float('carbohydrates_value')->nullable()->default(0);
            $table->float('fat_value')->nullable()->default(0);
            $table->float('proteins_value')->nullable()->default(0);
            $table->timestamps();
        });

j'ai ensuite ma table pivot meal_food :

Schema::create('meal_food', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('meal_id')->unsigned()->nullable();
            $table->integer('nb_portion')->default(1);
            $table->integer('food_id')->unsigned()->nullable();
            $table->timestamps();
        });

et je dois réflechir maintenant à la table qui va permettre l'utilisateur de rajouter des aliments, repas, recettes sur une date precise c'est la que je m'interroge car on veut pouvoir stocker des aliments et aussi des repas qui sont des entites differentes plus haut. j'avais commencé avec ça met je vais être bloqué car la colonne food_id peut être null, je pourrais rajouter une colonne meal_id qui peut être aussi null ce qui me permettrait de grouper les choses.

Qu'en pensez vous ? merci d'avance

Schema::create('user_daily_food', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('user_id')->unsigned();
            $table->integer('food_id')->unsigned();
            $table->integer('nb_portion')->default(1)->nullable();
             $table->float('energy_value')->nullable()->default(0);
            $table->float('carbohydrates_value')->nullable()->default(0);
            $table->float('fat_value')->nullable()->default(0);
            $table->float('proteins_value')->nullable()->default(0);
            $table->string('type')->nullable();
            $table->date('day')->nullable();
            $table->timestamps();
        });
Posté il y a 5 mois

Vous ne pouvez pas répondre à ce sujet.