Zacznij terazZacznij za darmo

Upraszczanie opcji posiłków

Pracownicy stołówki słyszą o świetnych postępach w porządkowaniu danych w szkole średniej. Chcą dołączyć do tych działań – w szczególności zależy im na śledzeniu różnych opcji posiłków dostępnych w ciągu roku szkolnego. Przy wsparciu działu IT zdefiniowano w tym celu następującą tabelę:

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

Wykorzystując wiedzę o normalizacji baz danych, zaprojektujesz lepszą strukturę tabeli meal.

To ćwiczenie jest częścią kursu

Tworzenie baz danych w PostgreSQL

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij definicję tabeli ingredient służącej do przechowywania składników.
  • Nadaj kolumnie id tabeli meal atrybut PRIMARY KEY i usuń kolumny ingredients oraz date_served, tak aby tabela meal spełniała wymogi 2NF.
  • Uzupełnij definicję tabeli meal_date, która będzie przechowywać daty serwowania poszczególnych posiłków (meal).
  • Uzupełnij definicję tabeli meal_ingredient tak, aby składniki z tabeli ingredient mogły być do niej odwoływane.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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 ___ ___(___)
);
Edytuj i uruchom kod