Zefektivnění možností jídel
Personál školní jídelny se doslechl o skvělé práci, která na střední škole probíhá při organizaci dat pro klíčové oblasti chodu školy. Tato skupina se chce do podobných snah zapojit. Konkrétně chce zaměstnanci sledovat různé možnosti jídel dostupných během školního roku. S pomocí IT oddělení byla za tímto účelem navržena následující tabulka:
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
);
Využij své znalosti normalizace databází a navrhni lepší strukturu tabulky meal.
Toto cvičení je součástí kurzu
Tvorba PostgreSQL databází
Pokyny k cvičení
- Dokonči definici tabulky
ingredientpro ukládání ingrediencí. - Nastav sloupec
idv tabulcemealjakoPRIMARY KEYa odstraň sloupceingredientsadate_served, aby tabulkamealsplňovala 2NF. - Dokonči definici tabulky
meal_datepro ukládání dat, kdy se danémealpodává. - Dokonči definici tabulky
meal_ingredienttak, aby bylo možné odkazovat na ingredience z tabulkyingredient.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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 ___ ___(___)
);