ComenzarEmpieza gratis

Simplificando las opciones de comida

El personal de la cafetería se ha enterado del gran trabajo que se está haciendo en el instituto para organizar datos clave de las operaciones del centro. Ahora quieren sumarse a estos esfuerzos. En particular, quieren llevar un registro de las distintas opciones de comida disponibles a lo largo del curso. Con la ayuda del equipo de TI, se ha definido la siguiente tabla con este propósito:

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

Usando tus conocimientos de normalización de bases de datos, vas a proponer un mejor diseño para la tabla meal.

Este ejercicio forma parte del curso

Creación de bases de datos en PostgreSQL

Ver curso

Instrucciones del ejercicio

  • Completa la definición de la tabla ingredient para almacenar los ingredientes.
  • Haz que la columna id de la tabla meal sea PRIMARY KEY y elimina las columnas ingredients y date_served para que la tabla meal cumpla la 2NF.
  • Completa la definición de meal_date para almacenar las fechas en las que se sirve un meal.
  • Completa la definición de meal_ingredient para que los ingredientes de la tabla ingredient puedan referenciarse desde la tabla meal_ingredient.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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 ___ ___(___)
);
Editar y ejecutar código