CommencezCommencez gratuitement

Rationaliser les options de repas

Le personnel de la cafétéria a entendu parler de tout l'excellent travail réalisé à l'école secondaire pour organiser les données liées aux aspects importants des opérations scolaires. Ce groupe souhaite maintenant se joindre à ces efforts. En particulier, l'équipe veut faire le suivi des différentes options de repas offertes tout au long de l'année scolaire. Avec l'aide de l'équipe TI, la table suivante a été définie à cette fin :

CREATE TABLE meal (
    id INTEGER,
    name VARCHAR(50) NOT NULL
    ingredients VARCHAR(150), -- comma seperated list
    avg_student_rating NUMERIC,
    date_served DATE,
    total_calories SMALLINT NOT NULL
);

En vous appuyant sur vos connaissances de la normalisation des bases de données, vous proposerez une meilleure conception pour la table meal.

Cette activité fait partie du cours

Créer des bases de données PostgreSQL

Voir le cours

Instructions de l’exercice

  • Complétez la définition de la table ingredient pour l'enregistrement des ingrédients.
  • Faites de la colonne id de la table meal une PRIMARY KEY et retirez les colonnes ingredients et date_served afin que la table meal respecte la 2NF.
  • Complétez la définition de meal_date pour enregistrer les dates auxquelles un meal est servi.
  • Complétez la définition de meal_ingredient afin que les ingrédients de la table ingredient puissent être référencés à partir de la table meal_ingredient.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

CREATE TABLE ingredient (
  -- Add PRIMARY KEY for table
  ___ ___ ___ ___,
  name VARCHAR(50) NOT NULL
);

CREATE TABLE meal (
    -- Make id a PRIMARY KEY
	id ___ ___ ___,
    name VARCHAR(50) NOT NULL,

	-- Remove the 2 columns (below) that do not satisfy 2NF
  	ingredients VARCHAR(150), -- comma separated list
    avg_student_rating NUMERIC,
    date_served DATE,
    total_calories SMALLINT NOT NULL
);

CREATE TABLE meal_date (
    -- Define a column referencing the meal table
  	meal_id INTEGER ___ ___(___),
    date_served DATE NOT NULL
);

CREATE TABLE meal_ingredient (
  	meal_id INTEGER REFERENCES meal(id),
  
    -- Define a column referencing the ingredient table
    ingredient_id INTEGER ___ ___(___)
);
Modifier et exécuter le code