ÎncepețiÎncepe gratuit

Simplificarea opțiunilor de meniu

Personalul cantinei află despre toate eforturile depuse la liceu pentru organizarea datelor legate de aspecte importante ale activității școlare. Acesta dorește acum să se alăture acestor inițiative. În special, personalul vrea să țină evidența diferitelor opțiuni de meniu disponibile pe parcursul anului școlar. Cu ajutorul echipei IT, a fost definit următorul tabel în acest scop:

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
);

Folosind cunoștințele tale despre normalizarea bazelor de date, vei propune un design mai bun pentru tabelul meal.

Acest exercițiu face parte din cursul

Crearea bazelor de date PostgreSQL

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează definiția tabelului ingredient pentru stocarea ingredientelor.
  • Transformă coloana id din tabelul meal în PRIMARY KEY și elimină coloanele ingredients și date_served, astfel încât tabelul meal să respecte 2NF.
  • Completează definiția tabelului meal_date pentru a stoca datele la care este servit un meal.
  • Completează definiția tabelului meal_ingredient astfel încât ingredientele din tabelul ingredient să poată fi referențiate din tabelul meal_ingredient.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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 ___ ___(___)
);
Editează și rulează codul