LoslegenKostenlos loslegen

Essensoptionen schlanker gestalten

Das Cafeteria-Team hat von all der großartigen Arbeit an der Highschool gehört, mit der wichtige Daten für den Schulbetrieb organisiert werden. Dieses Team möchte sich nun anschließen. Konkret will das Team die verschiedenen Essensoptionen erfassen, die über das Schuljahr hinweg angeboten werden. Mit Unterstützung der IT wurde dafür folgende Tabelle definiert:

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

Mit deinem Wissen zur Normalisierung von Datenbanken entwickelst du ein besseres Design für die Tabelle meal.

Diese Übung ist Teil des Kurses

Erstellen von PostgreSQL-Datenbanken

Kurs anzeigen

Anleitung zur Übung

  • Vervollständige die Definition der Tabelle ingredient zur Speicherung von Zutaten.
  • Mache die Spalte id der Tabelle meal zu einem PRIMARY KEY und entferne die Spalten ingredients und date_served, sodass die Tabelle meal der 2NF entspricht.
  • Vervollständige die Definition von meal_date, um die Daten zu speichern, an denen ein meal serviert wird.
  • Vervollständige die Definition von meal_ingredient, damit auf Zutaten in der Tabelle ingredient aus der Tabelle meal_ingredient verwiesen werden kann.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 ___ ___(___)
);
Code bearbeiten und ausführen