Kom igångKom igång gratis

Effektivisera måltidsalternativen

Cafeteriapersonalen hör talas om det fina arbete som pågår på gymnasieskolan med att organisera data för viktiga delar av skolverksamheten. Nu vill även de vara med i detta arbete. Personalen vill framför allt hålla koll på de olika måltidsalternativ som finns tillgängliga under skolåret. Med hjälp av IT-personalen definieras följande tabell för detta ändamål:

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

Med hjälp av dina kunskaper om databasnormalisering ska du ta fram en bättre design för tabellen meal.

Den här övningen är en del av kursen

Skapa PostgreSQL-databaser

Visa kurs

Övningsinstruktioner

  • Slutför definitionen av tabellen ingredient för lagring av ingredienser.
  • Gör kolumnen id i tabellen meal till en PRIMARY KEY och ta bort kolumnerna ingredients och date_served så att tabellen meal uppfyller 2NF.
  • Slutför definitionen av meal_date för att lagra datum då en meal serveras.
  • Slutför definitionen av meal_ingredient så att ingredienser i tabellen ingredient kan refereras från tabellen meal_ingredient.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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 ___ ___(___)
);
Redigera och kör kod