ПочатиПочніть безкоштовно

Оптимізація варіантів страв

Працівники кафетерію дізналися про чудову роботу, яку в старшій школі проводять для впорядкування даних важливих процесів. Тепер і вони хочуть долучитися. Зокрема, команда хоче відстежувати різні варіанти страв, доступні протягом навчального року. За допомогою ІТ-відділу для цього створили таку таблицю:

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

Спираючись на знання з нормалізації баз даних, запропонуйте кращу структуру таблиці meal.

Ця вправа є частиною курсу

Створення баз даних PostgreSQL

Переглянути курс

Інструкції до вправи

  • Завершіть визначення таблиці ingredient для зберігання інгредієнтів.
  • Зробіть стовпець id у таблиці meal PRIMARY KEY і вилучіть стовпці ingredients та date_served, щоб таблиця meal відповідала 2NF.
  • Завершіть визначення meal_date для зберігання дат, коли подається meal.
  • Завершіть визначення meal_ingredient, щоб інгредієнти з таблиці ingredient можна було посилати з таблиці meal_ingredient.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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 ___ ___(___)
);
Редагувати та запускати код