开始使用免费开始使用

精简餐食选项

学校食堂工作人员听说高中正在为学校运营中的重要事项整理数据,进展非常出色,他们也想加入这项工作。具体来说,食堂想跟踪整个学年可提供的不同餐食选项。在 IT 人员的帮助下,为此目的定义了下表:

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 表的定义,用于存储配料。
  • meal 表的 id 列设为 PRIMARY KEY,并移除 ingredientsdate_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 ___ ___(___)
);
编辑并运行代码