Začněte nyníZačněte zdarma

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í

Zobrazit kurz

Pokyny k cvičení

  • Dokonči definici tabulky ingredient pro ukládání ingrediencí.
  • Nastav sloupec id v tabulce meal jako PRIMARY KEY a odstraň sloupce ingredients a date_served, aby tabulka meal splňovala 2NF.
  • Dokonči definici tabulky meal_date pro ukládání dat, kdy se dané meal podává.
  • Dokonči definici tabulky meal_ingredient tak, aby bylo možné odkazovat na ingredience z tabulky ingredient.

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 ___ ___(___)
);
Upravit a spustit kód