Ottimizzare le opzioni del menù
Il personale della mensa è a conoscenza dell'ottimo lavoro che si sta facendo al liceo per organizzare i dati relativi ad aspetti importanti delle operazioni scolastiche. Anche loro vogliono contribuire a questi sforzi. In particolare, desiderano tenere traccia delle diverse opzioni di pasto disponibili durante l'anno scolastico. Con l'aiuto del reparto IT, è stata definita la seguente tabella a questo scopo:
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
);
Usando le tue conoscenze sulla normalizzazione dei database, fornirai un progetto migliore per la tabella meal.
Questo esercizio fa parte del corso
Creare database PostgreSQL
Istruzioni dell'esercizio
- Completa la definizione della tabella
ingredientper archiviare gli ingredienti. - Rendi la colonna
iddella tabellamealunaPRIMARY KEYe rimuovi le colonneingredientsedate_servedin modo che la tabellamealsoddisfi la 2NF. - Completa la definizione di
meal_dateper memorizzare le date in cui viene servito unmeal. - Completa la definizione di
meal_ingredientin modo che gli ingredienti nella tabellaingredientpossano essere referenziati dalla tabellameal_ingredient.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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 ___ ___(___)
);