ComeçarComece de graça

Otimizando as opções de refeição

A equipe da cafeteria ficou sabendo do ótimo trabalho que está acontecendo no ensino médio para organizar dados de aspectos importantes das operações da escola. Esse grupo agora quer participar desses esforços. Em particular, a equipe quer acompanhar as diferentes opções de refeição disponíveis ao longo do ano letivo. Com a ajuda da equipe de TI, a seguinte tabela foi definida para esse 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 seu conhecimento de normalização de bancos de dados, você vai propor um design melhor para a tabela meal.

Este exercício faz parte do curso

Criando bancos de dados PostgreSQL

Ver curso

Instruções do exercício

  • Complete a definição da tabela ingredient para armazenar ingredientes.
  • Torne a coluna id da tabela meal uma PRIMARY KEY e remova as colunas ingredients e date_served para que a tabela meal atenda à 2NF.
  • Complete a definição de meal_date para armazenar as datas em que uma meal é servida.
  • Complete a definição de meal_ingredient para que os ingredientes na tabela ingredient possam ser referenciados a partir da tabela meal_ingredient.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código